如何正确搭建一个简单的SSMspring框架的理解

一个Java小菜鸟的成长日记
最简单的SSM框架搭建过程--SSM简单整合
SSM(Spring、Spring
MVC和Mybatis)是什么我想也不用在赘述。
许多童鞋现在开始学习这个流行的框架来进行Java开发,想要寻找一个最简单的SSM框架搭建方法,这里我不说什么废话,直接上手开始搭建,代码部分都做了详细的注释,可以快速上手!
创建Java Web项目
这里博主用到的开发工具是IntelliJ IDEA,项目创建可能和eclipse和myeclipse有所不同,按照自己的需要来创建就好,用什么IDE就按照什么步骤来创建。
以下是完整目录结构,不论什么IDE都可以是这种结构,具体内容看图:
因为我们不采用maven的方式配置jar包,所以需要我们手动导入jar文件。这一步就不再多说,以下会和源代码一同给出。
这里我们分别将Spring 和 Mybatis的配置文件放在两个文件夹中,Spring的有applicationContext.xml和applicationContext-mvc.xml,Mybatis的有mybatis-config.xml。
Mybatis配置文件
Mybatis的配置文件就是mybatis-config.xml,主要是配置typeAlias,将实体类匹配成XXXMapper.xml中可以直接使用的类型,相当于一个别名,在XXXMapper.xml中就无需再写完整的实体类全路径,直接用alias的值来代替。
&?xml version="1.0" encoding="UTF-8"?&
&!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD SQL Map Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd"&
&configuration&
&typeAliases&
&!--之后用于测试--&
&typeAlias type="com.javafeng.entity.User" alias="User" /&
&/typeAliases&
&/configuration&
其中的XXXMapper.xml当然就是Mybatis动态实现所需要的Mapper文件,Dao接口就可以不用再编写实现类。这里的Mapper和Dao中的接口是对应的,再接下来的测试中我们会给出具体的配置。
Spring配置文件
applicationContext.xml
在这个配置文件中,我们主要配置数据源,Spring的事务管理和Dao接口的扫描,以及对Mybatis的一些列相关配置文件的扫描。
&?xml version="1.0" encoding="UTF-8"?&
&beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"&
&!--数据源-链接数据库的基本信息,这里直接写,不放到*.properties资源文件中--&
&bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource"&
&property name="driverClassName" value="com.mysql.jdbc.Driver" /&
&property name="url" value="jdbc:mysql://localhost:3306/javafeng" /&
&property name="username" value="root" /&
&property name="password" value="root" /&
&!-- 配置数据源,加载配置,也就是dataSource --&
&bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"&
&property name="dataSource" ref="dataSource"&&/property&
&!--mybatis的配置文件--&
&property name="configLocation" value="classpath:mybatis/mybatis-config.xml" /&
&!--扫描 XXXmapper.xml映射文件,配置扫描的路径--&
&property name="mapperLocations" value="classpath:com/javafeng/mapping/*.xml"&&/property&
&!-- DAO接口所在包名,Spring会自动查找之中的类 --&
&bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"&
&property name="basePackage" value="com.javafeng.dao" /&
&property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"&&/property&
&!--事务管理--&
&bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"&
&!--注入dataSource--&
&property name="dataSource" ref="dataSource" /&
&!--开启事务注解扫描--&
&tx:annotation-driven transaction-manager="transactionManager"&&/tx:annotation-driven&
applicationContext-mvc.xml
这个配置文件中我们主要启用Sping注解驱动,进行静态资源的配置,注解扫描配置和视图解析器配置.
&?xml version="1.0" encoding="UTF-8"?&
&beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"&
&!-- 告知Spring,我们启用注解驱动 --&
&mvc:annotation-driven/&
&!-- org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler,
它会像一个检查员,对进入DispatcherServlet的URL进行筛查,如果发现是静态资源的请求,
就将该请求转由Web应用服务器默认的Servlet处理,如果不是静态资源的请求,才由DispatcherServlet继续处理。 --&
&mvc:default-servlet-handler/&
&!-- 指定要扫描的包的位置 --&
&context:component-scan base-package="com.javafeng" /&
&!-- 对静态资源文件的访问,因为Spring MVC会拦截所有请求,导致jsp页面中对js和CSS的引用也被拦截,配置后可以把对资源的请求交给项目的
默认拦截器而不是Spring MVC--&
&mvc:resources mapping="/static/**" location="/WEB-INF/static/" /&
&!-- 配置Spring MVC的视图解析器 --&
&bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"&
&!-- 有时我们需要访问JSP页面,可理解为在控制器controller的返回值加前缀和后缀,变成一个可用的URL地址 --&
&property name="prefix" value="/WEB-INF/jsp/"/&
&property name="suffix" value=".jsp"/&
我们在web.xml中加载Spring配置,并且将所有的请求都过滤给Spring MVC来处理,同时设置编码过滤器解决编码问题(最后一项可以不配置)。
其中Spring MVC的请求过滤就是一个简单的Servlet配置。
&?xml version="1.0" encoding="UTF-8"?&
&web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1"&
&!-- 加载Spring容器配置 --&
&listener&
&listener-class&org.springframework.web.context.ContextLoaderListener&/listener-class&
&/listener&
&!-- Spring容器加载所有的配置文件的路径 --&
&context-param&
&param-name&contextConfigLocation&/param-name&
&param-value&classpath*:spring/applicationContext.xml&/param-value&
&/context-param&
&!-- 配置SpringMVC核心控制器,将所有的请求(除了刚刚Spring MVC中的静态资源请求)都交给Spring MVC --&
&servlet-name&springMvc&/servlet-name&
&servlet-class&org.springframework.web.servlet.DispatcherServlet&/servlet-class&
&init-param&
&param-name&contextConfigLocation&/param-name&
&param-value&classpath*:spring/applicationContext-mvc.xml&/param-value&
&/init-param&
&!--用来标记是否在项目启动时就加在此Servlet,0或正数表示容器在应用启动时就加载这个Servlet,
当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载.正数值越小启动优先值越高
&load-on-startup&1&/load-on-startup&
&/servlet&
&!--为DispatcherServlet建立映射--&
&servlet-mapping&
&servlet-name&springMvc&/servlet-name&
&!-- 拦截所有请求,千万注意是(/)而不是(/*) --&
&url-pattern&/&/url-pattern&
&/servlet-mapping&
&!-- 设置编码过滤器 --&
&filter-name&encodingFilter&/filter-name&
&filter-class&org.springframework.web.filter.CharacterEncodingFilter&/filter-class&
&init-param&
&param-name&encoding&/param-name&
&param-value&UTF-8&/param-value&
&/init-param&
&init-param&
&param-name&forceEncoding&/param-name&
&param-value&true&/param-value&
&/init-param&
&filter-mapping&
&filter-name&encodingFilter&/filter-name&
&url-pattern&/*&/url-pattern&
&/filter-mapping&
&/web-app&
到这里我们的框架基本上就成形了,接下来可以进行简单的测试。
接下来就是应用实例,我会在文章结尾给出源码下载地址。
我们在数据库新建如下表(我的数据库名为javafeng,用的MySql):
CREATE TABLE `user` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(255) DEFAULT NULL,
`Age` int(11) DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
这里我们用逆向工程来生成实体类,Dao接口和对应的Mapper文件,具体方法参考:
(版权归原作者所有),逆向工程的工具同代码一并奉上。我在里面分别添加了可以查询表内全部数据的代码。
实体类User.java
package com.javafeng.
public class User {
public Integer getId() {
public void setId(Integer id) {
public String getName() {
public void setName(String name) {
this.name = name == null ? null : name.trim();
public Integer getAge() {
public void setAge(Integer age) {
this.age =
Mapper文件UserMapper.xml(自动生成,篇幅长也不可怕,前提是你已经基本掌握):
&?xml version="1.0" encoding="UTF-8" ?&
&!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" &
&!--namespace就是与此文件对应的Dao接口的全路径--&
&mapper namespace="com.javafeng.dao.IUserDao" &
&!--如下type的User就是mybatis-config.xml中配置的user--&
&resultMap id="BaseResultMap" type="User" &
&id column="ID" property="id" jdbcType="INTEGER" /&
&result column="Name" property="name" jdbcType="VARCHAR" /&
&result column="Age" property="age" jdbcType="INTEGER" /&
&/resultMap&
&!--自己配置的查询表所有数据的sql--&
&select id="selectAllUser" resultType="User"&
select * FROM USER;
&sql id="Base_Column_List" &
ID, Name, Age
&select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" &
&include refid="Base_Column_List" /&
where ID = #{id,jdbcType=INTEGER}
&delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" &
delete from user
where ID = #{id,jdbcType=INTEGER}
&insert id="insert" parameterType="User" &
insert into user (ID, Name, Age
values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER}
&insert id="insertSelective" parameterType="User" &
insert into user
&trim prefix="(" suffix=")" suffixOverrides="," &
&if test="id != null" &
&if test="name != null" &
&if test="age != null" &
&trim prefix="values (" suffix=")" suffixOverrides="," &
&if test="id != null" &
#{id,jdbcType=INTEGER},
&if test="name != null" &
#{name,jdbcType=VARCHAR},
&if test="age != null" &
#{age,jdbcType=INTEGER},
&update id="updateByPrimaryKeySelective" parameterType="User" &
update user
&if test="name != null" &
Name = #{name,jdbcType=VARCHAR},
&if test="age != null" &
Age = #{age,jdbcType=INTEGER},
where ID = #{id,jdbcType=INTEGER}
&update id="updateByPrimaryKey" parameterType="User" &
update user
set Name = #{name,jdbcType=VARCHAR},
Age = #{age,jdbcType=INTEGER}
where ID = #{id,jdbcType=INTEGER}
&/mapper&Dao层接口IUserDao.java,生成时为UserMapper.java,我这里进行了重命名,注意一定要记得同时修改Mapper文件中的namespace:
package com.javafeng.
import com.javafeng.entity.U
import org.springframework.stereotype.R
import java.util.L
@Repository("userDao")
public interface IUserDao {
int deleteByPrimaryKey(Integer id);
int insert(User record);
int insertSelective(User record);
User selectByPrimaryKey(Integer id);
int updateByPrimaryKeySelective(User record);
int updateByPrimaryKey(User record);
//自己添加的,已匹配Mapper中的Sql
List&User& selectAllUser();
接下来是Service层接口UserService.java:
package com.javafeng.
import com.javafeng.entity.U
import java.util.L
public interface UserSercice {
public List&User& getUser();
Service接口实现类UserServiceImpl.java:
package com.javafeng.service.
import com.javafeng.dao.IUserD
import com.javafeng.entity.U
import com.javafeng.service.UserS
import org.springframework.stereotype.S
import javax.annotation.R
import java.util.L
@Service("userService")
public class UserServiceImpl implements UserSercice{
@Resource(name = "userDao")
private IUserDao userD
public List&User& getUser() {
return userDao.selectAllUser();
控制器UserController.java
package com.javafeng.
import com.javafeng.entity.U
import com.javafeng.service.UserS
import org.springframework.stereotype.C
import org.springframework.web.bind.annotation.RequestM
import org.springframework.web.servlet.ModelAndV
import javax.annotation.R
import java.util.L
@Controller
@RequestMapping(value = "/user")
public class UserController {
@Resource(name = "userService")
UserSercice userS
@RequestMapping(value = "/list")
public ModelAndView list()
ModelAndView mv=new ModelAndView();
List&User&
userList=userService.getUser();
mv.addObject("userList",userList);
mv.setViewName("/show");
我们要做的就是把这个表的数据显示在一个Jsp页面上,所以在WEB-INF/jsp下新建一个show.jsp来显示数据
&%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %&
Created by IntelliJ IDEA.
User: 13926
Time: 23:07
To change this template use File | Settings | File Templates.
&%@ page contentType="text/charset=UTF-8" language="java" %&
&title&Title&/title&
&table border="1"&
&td&序号&/td&
&td&姓名&/td&
&td&年龄&/td&
&c:choose&
&c:when test="${not empty userList}"&
&c:forEach items="${userList}" var="user" varStatus="vs"&
&td&${user.id}&/td&
&td&${user.name}&/td&
&td&${user.age}&/td&
&/c:forEach&
&c:otherwise&
&td colspan="2"&无数据!&/td&
&/c:otherwise&
&/c:choose&
我们在index.html中做如下更改来使项目启动时自动访问user/list路径(其实就是懒得每次都输这个地址,因为测试时大多数时候都不是一次就成)
&%@ page contentType="text/charset=UTF-8" language="java" %&
&title&$Title$&/title&
&jsp:forward page="/user/list"/&
项目部署不用多讲,直接发布到Tomcat服务器即可,因为已经才index.html做了修改,所以已不需要在地址栏输可恶的user/list路径了,直接
这样我们就能把User表的数据显示在show.jsp了。
到这里我们的SSM框架搭建算是圆满完成,要是你还在报错中,恭喜,你可以接着继续调试了!
无论是注解的扫描还是配置文件的扫描,路径千万要写对,路径千万要写对,路径千万要写对
再写Mapper和Dao接口时,一定要对应上,否则
Invalid bound statement (not found)3.
Mapper在自动生成后,一定要按照自己项目的内容进行修改,比如namespace要和Dao接口对应,以及其中parameterType,resultType所对应的类型时你mybatis-config.xml中配置为alias值等等等等,总之千万要注意!
文件下载地址
SSM项目搭建过程
SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
SSM框架——Spring+SpringMVC+Mybatis的搭建教程
ssm框架搭建详细步骤
使用Spring、SpringMvc、MyBatis搭建SSM框架
SSM基础框架搭建(SpringMVC+Spring+Mybatis)
SSM框架整合
使用SSM框架搭建Web服务器实现登录功能(Spring+SpringMVC+Mybatis)
如何自己成功搭建一个SSM框架的WEB项目
java web,从零开始,一步一步配置ssm(Spring+SpringMVC+MyBatis)框架
没有更多推荐了,纯干货!一步步告诉你SSM三大框架如何整合【spring、SpringMVC和Mybatis】
使用SSM(spring、SpringMVC和Mybatis)已经有一段时间了,项目在技术上已经没有什么难点了,这次,先说说三大框架整合过程。下面就让我们开始吧!
1、基本概念
1.1、Spring
Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
1.2、SpringMVC
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
1.3、MyBatis
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。MyBatis是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成中的记录。
2、开发环境搭建
3、Maven Web项目创建
4、SSM整合
下面主要介绍三大框架的整合,至于环境的搭建以及项目的创建,参看上面的博文。这次整合我分了2个配置文件,分别是spring-mybatis.xml,包含spring和mybatis的配置文件,还有个是spring-m的配置文件,此外有2个资源文件:jdbc.propertis和log4j.properties。完整目录结构如下:
使用框架都是较新的版本:
Spring 4.0.2 RELEASE
Spring MVC 4.0.2 RELEASE
MyBatis 3.2.6
4.1、Maven引入需要的JAR包
为了方便后面说的时候不需要引入JAR包,我这里直接给出所有需要的JAR包,这都是基本的JAR包,每个包的是干什么的都有注释,就不再多说了。
4.2、Spring与MyBatis的整合
所有需要的JAR包都引入以后,首先进行Spring与MyBatis的整合,然后再进行JUnit测试,先看一个项目结构图:
4.2.1、建立JDBC属性文件
jdbc.properties(文件编码修改为utf-8)
4.2.2、建立spring-mybatis.xml配置文件
这个文件就是用来完成spring和mybatis的整合的。这里面也没多少行配置,主要的就是自动扫描,自动注入,配置数据库。注释也很详细,大家看看就明白了。
spring-mybatis.xml
4.2.3、Log4j的配置
为了方便调试,一般都会使用日志来输出信息,Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。
Log4j的配置很简单,而且也是通用的,下面给出一个基本的配置
下面给出配置文件目录:
log4j.properties
4.2.4、JUnit测试
经过以上步骤(到4.2.2,log4j不配也没影响),我们已经完成了Spring和mybatis的整合,这样我们就可以编写一段测试代码来试试是否成功了。
4.2.4.1、创建测试用表
既然我们需要测试,那么我们就需要建立在数据库中建立一个测试表,这个表建的很简单,SQL语句为:
4.2.4.2、利用MyBatis Generator自动创建代码
这个可根据表自动创建实体类、MyBatis映射文件以及DAO接口,当然,我习惯将生成的接口名改为IUserDao,而不是直接用它生成的UserMapper。如果不想麻烦就可以不改。完成后将文件复制到工程中。如图:
4.2.4.3、建立Service接口和实现类
目录结构:
下面给出具体的内容:
IUserService.jave
UserServiceImpl.java
4.2.4.4、建立测试类
测试类在src/test/java中建立,下面测试类中注释掉的部分是不使用Spring时,一般情况下的一种测试方法;如果使用了Spring那么就可以使用注解的方式来引入配置文件和类,然后再将service接口对象注入,就可以进行测试了。
如果测试成功,表示Spring和Mybatis已经整合成功了。输出信息使用的是Log4j打印到控制台。
测试结果:
至此,完成Spring和mybatis这两大框架的整合,下面在继续进行SpringMVC的整合。
4.3、整合SpringMVC
上面已经完成了2大框架的整合,SpringMVC的配置文件单独放,然后在web.xml中配置整合。
4.3.1、配置spring-mvc.xml
配置里面的注释也很详细,在此就不说了,主要是自动扫描控制器,视图模式,注解的启动这三个。
4.3.2、配置web.xml文件
这里面对spring-mybatis.xml的引入以及配置的spring-mvc的Servlet就是为了完成SSM整合,之前2框架整合不需要在此处进行任何配置。配置一样有详细注释,不多解释了。
4.3.3、测试
至此已经完成了SSM三大框架的整合了,接下来测试一下,如果成功了,那么恭喜你,如果失败了,继续调试吧,作为程序员就是不停的与BUG做斗争!
4.3.3.1、新建jsp页面
showUser.jsp 此页面仅输出一下用户名,完成一个完整的简单流程。
4.3.3.2、建立UserController类
UserController.java 控制器
4.3.3.3、部署项目
输入地址:localhost:8080/项目名称/user/showUser?id=1
至此,SSM三大框架的整合就完成了,在此基础上可再添加其他功能。又快到毕业设计的时候了,有的学弟说想用ssm做毕业设计,在网上找到资料看不懂,基础差。我就帮他写了一个demo,顺便也整理一下。
SSM框架,顾名思义,就是Spring+SpringMVC+mybatis。
通过Spring来将各层进行整合,
通过spring来管理持久层(mybatis),
通过spring来管理handler。
总之,spring是将各层进行整合。
源码下载:
废话不说了,来搭建吧。
共十个步骤,有点啰嗦,但是我觉得挺仔细的。不足之处,请指正。
第一步,建立一个动态的web项目。
第二步,建立各个包,并导入各种jar包,我是从网上下载的。如下图:
第三步,建立model类吧。我这边建立一个很简单的类,先不进行配置,配置有点头晕。
建立user类,自建get和set方法,并构造方法:
1 package com.
3 public class User {
private int
第四步,容我先配置一下mybatis的xml文件。
建一个userMapper.xml和UserMapper.java接口文件。
先做一个select * from d_
因为数据库是这个样子滴,如下图:
配置代码如下:
1 package com.
3 import java.util.L
5 import com.model.U
7 public interface UserMapper {
List&User& findAllUser();
xml文件如下:
&?xml version="1.0" encoding="UTF-8"?&
&!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"&
&mapper namespace="com.mapper.UserMapper"&
&!-- 解决表名与字段不匹配 --&
&resultMap type="User" id="userResultMap"&
&id property="id" column="user_id"/&
&result property="username" column="user_name"/&
&result property="age" column="user_age"/&
&/resultMap&
&select id="findAllUser" resultMap="userResultMap" resultType="User"&
select * from d_user
mybatis,算是完成一半了,后面的会继续,不会停的。
需要考虑到service了。这就有了第五步了。
第五步,配置service。
首先,要看到我们之前建的两个包,一个是com.service和com.service.impl。
在com.service中,要建立一个UserService类。代码如下:
package com.
import java.util.L
import com.model.U
public interface UserService {
List&User& findAllUser();
另一个,需要用到这个接口,implements它吧。
UserServiceImpl.java代码如下:
package com.service.
import java.util.L
import javax.annotation.R
import org.springframework.stereotype.S
import org.springframework.transaction.annotation.T
import com.mapper.UserM
import com.model.U
import com.service.UserS
@Transactional
public class UserServiceImpl implements UserService{
public UserMapper userM
public List&User& findAllUser() {
// TODO Auto-generated method stub
List&User& findAllUser = userMapper.findAllUser();
return findAllU
@后面的注解一定要加的,不然,会出错的。第六步:开始写controller吧controller,从单词上就能看到,控制。写一个UserController类吧。
1 package com.
3 import java.util.L
5 import javax.servlet.http.HttpServletR
7 import org.springframework.beans.factory.annotation.A
8 import org.springframework.stereotype.C
9 import org.springframework.web.bind.annotation.RequestM
11 import com.model.U
12 import com.service.UserS
14 @Controller
15 @RequestMapping("/user")
16 public class UserController {
@Autowired
private UserService userS
@RequestMapping("/findAllUser")
public String findAllUser(HttpServletRequest request){
List&User& listUser =
userService.findAllUser();
request.setAttribute("listUser", listUser);
return "/allUser";
去看他们之间的类,去了解他们之间的关系。我觉得了解很重要。
第七步,开始配置xml文件吧,把文件放在config中。
mybatis-config.xml,配置如下:
&?xml version="1.0" encoding="UTF-8"?&
&!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd"&
&configuration&
&typeAliases&
&typeAlias alias="User" type="com.model.User"/&
&/typeAliases&
&mapper resource="com/mapper/userMapper.xml" /&
&/mappers&
&/configuration&
其实,这些代码是在配置mybatis的时候提前敲好的,
&mapper resource="com/mapper/userMapper.xml" /&这行代码是在写完userMapper.xml去写上的。然后就是去写spring配置了:spring-common.xml和spring-mvc.xml依次如下。其实代码都是我百度的,然后自己修改一下,谢谢分享。
1 &?xml version="1.0" encoding="UTF-8"?&
2 &beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"&
&!-- 1. 数据源 : DriverManagerDataSource --&
&bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource"&
&property name="driverClassName" value="com.mysql.jdbc.Driver" /&
&property name="url" value="jdbc:mysql://localhost:3306/mybatis" /&
&property name="username" value="root" /&
&property name="password" value="root" /&
2. mybatis的SqlSession的工厂: SqlSessionFactoryBean dataSource:引用数据源
MyBatis定义数据源,同意加载配置
&bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"&
&property name="dataSource" ref="dataSource"&&/property&
&property name="configLocation" value="classpath:config/mybatis-config.xml" /&
3. mybatis自动扫描加载Sql映射文件/接口 : MapperScannerConfigurer sqlSessionFactory
basePackage:指定sql映射文件/接口所在的包(自动扫描)
&bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"&
&property name="basePackage" value="com.mapper"&&/property&
&property name="sqlSessionFactory" ref="sqlSessionFactory"&&/property&
4. 事务管理 : DataSourceTransactionManager dataSource:引用上面定义的数据源
&bean id="txManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"&
&property name="dataSource" ref="dataSource"&&/property&
&!-- 5. 使用声明式事务
transaction-manager:引用上面定义的事务管理器
&tx:annotation-driven transaction-manager="txManager" /&
55 &/beans&
1 &?xml version="1.0" encoding="UTF-8"?&
2 &beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"&
&!-- 注解扫描包 --&
&context:component-scan base-package="com" /&
&!-- 开启注解 --&
&mvc:annotation-driven /&
配置静态资源,直接映射到对应的文件夹,不被DispatcherServlet处理,3.04新增功能,需要重新设置spring-mvc-3.0.xsd
&mvc:resources mapping="/img/**" location="/img/" /&
&mvc:resources mapping="/js/**" location="/js/" /&
&mvc:resources mapping="/css/**" location="/css/" /&
&mvc:resources mapping="/html/**" location="/html/" /&
&!-- 定义跳转的文件的前后缀 ,视图模式配置--&
&bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver"&
&!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 --&
&property name="prefix" value="/WEB-INF/jsp/" /&
&property name="suffix" value=".jsp" /&
35 &/beans&
第八步,就是web.xml文件了。网上一大堆,随便下,我也是从网上拷贝的。然后,在么有错误的情况下,随着性子改。
1 &?xml version="1.0" encoding="UTF-8"?&
2 &web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"&
&!-- 加载Spring容器配置 --&
&listener&
&listener-class&org.springframework.web.context.ContextLoaderListener&/listener-class&
&/listener&
&!-- 设置Spring容器加载所有的配置文件的路径 --&
&context-param&
&param-name&contextConfigLocation&/param-name&
&param-value&classpath*:config/spring-*.xml&/param-value&
&/context-param&
&!-- 配置SpringMVC核心控制器 --&
&servlet-name&springMVC&/servlet-name&
&servlet-class&org.springframework.web.servlet.DispatcherServlet&/servlet-class&
&init-param&
&param-name&contextConfigLocation&/param-name&
&param-value&classpath*:config/spring-mvc.xml&/param-value&
&/init-param&
&!-- 启动加载一次 --&
&load-on-startup&1&/load-on-startup&
&/servlet&
&!--为DispatcherServlet建立映射 --&
&servlet-mapping&
&servlet-name&springMVC&/servlet-name&
&!-- 此处可以可以配置成*.do --&
&url-pattern&/&/url-pattern&
&/servlet-mapping&
&!-- 防止Spring内存溢出监听器 --&
&listener&
&listener-class&org.springframework.web.util.IntrospectorCleanupListener&/listener-class&
&/listener&
&!-- 解决工程编码过滤器 --&
&filter-name&encodingFilter&/filter-name&
&filter-class&org.springframework.web.filter.CharacterEncodingFilter&/filter-class&
&init-param&
&param-name&encoding&/param-name&
&param-value&UTF-8&/param-value&
&/init-param&
&init-param&
&param-name&forceEncoding&/param-name&
&param-value&true&/param-value&
&/init-param&
&filter-mapping&
&filter-name&encodingFilter&/filter-name&
&url-pattern&/*&/url-pattern&
&/filter-mapping&
&welcome-file-list&
&welcome-file&index.jsp&/welcome-file&
&/welcome-file-list&
65 &/web-app&
第九步,写一个jsp文件吧,因为才controller中,return的是allUser。就写一个allUser文件吧。
1 &%@ page language="java" import="java.util.*" pageEncoding="utf-8"%&
3 String path = request.getContextPath();
4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
6 &%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%&
7 &!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&
&base href="&%=basePath%&"&
&title&ssm&/title&
&meta http-equiv="pragma" content="no-cache"&
&meta http-equiv="cache-control" content="no-cache"&
&meta http-equiv="expires" content="0"&
&meta http-equiv="keywords" content="keyword1,keyword2,keyword3"&
&meta http-equiv="description" content="This is my page"&
&link rel="stylesheet" type="text/css" href="styles.css"&
&table border="1"&
&th&姓名&/th&
&th&年龄&/th&
&c:if test="${!empty listUser }"&
&c:forEach items="${listUser}" var="list"&
&td&${list.username }&/td&
&td&${list.age }&/td&
&/c:forEach&
44 &/html&
第十步,执行吧,开启tomcat服务器,输入:
http://localhost:8080/SSM/user/findAllUser
得到的如下图:
把数据库的数据都显示出来了。
阅读(...) 评论()}

我要回帖

更多关于 前端框架如何搭建 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信