SSM整合参考模板

全部下载pom.xml文件、web.xml配置文件、Spring配置文件、SpringMVC配置文件、Mybatis配置文件


 

一、引入SpringMVC


 

  • pom.xml引入SpringMVC的Jar包
 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 3     <modelVersion>4.0.0</modelVersion>
 4     <groupId>com.java.ssm</groupId>
 5     <artifactId>SpringmvcSpringMybatis</artifactId>
 6     <packaging>war</packaging>
 7     <version>0.0.1-SNAPSHOT</version>
 8     <name>SpringmvcSpringMybatis Maven Webapp</name>
 9     <url>http://maven.apache.org</url>
10 
11     <properties>
12         <SpringVersion>4.0.0.RELEASE</SpringVersion>
13     </properties>
14 
15     <dependencies>
16         <dependency>
17             <groupId>org.springframework</groupId>
18             <artifactId>spring-webmvc</artifactId>
19             <version>${SpringVersion}</version>
20         </dependency>
21     </dependencies>
22 
23     <build>
24         <plugins>
25             <plugin>
26                 <artifactId>maven-compiler-plugin</artifactId>
27                 <configuration>
28                     <source>1.8</source>
29                     <target>1.8</target>
30                 </configuration>
31             </plugin>
32         </plugins>
33     </build>
34 </project>
pom.xml引入SpringMVC

 

  • 配置web.xml引入servlet{DispatcherServlet}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>SpringmvcSpringMybatis</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>
DispatcherServlet的引入,使得SpringMvc得以启动

 

  • 配置SpringMVC配置文件{springmvc.xml}(名字根据web.xml中[<param-value>classpath:springmvc.xml</param-value>]这项配置而来,放在classpath下)
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
 4     xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
 5     xmlns:mvc="http://www.springframework.org/schema/mvc"
 6     xsi:schemaLocation="http://www.springframework.org/schema/beans 
 7         http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
 8         http://www.springframework.org/schema/aop 
 9         http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
10         http://www.springframework.org/schema/context 
11         http://www.springframework.org/schema/context/spring-context-4.3.xsd
12         http://www.springframework.org/schema/mvc 
13         http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
14         http://www.springframework.org/schema/tx 
15         http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
16 
17     <!-- 扫描com.zhangpn.ssm.controller包下所有的@Controller注解 -->
18     <context:component-scan base-package="com.zhangpn.ssm.controller" use-default-filters="false">
19         <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
20     </context:component-scan>
21 
22     <!-- 开启MVC注解功能 -->
23     <mvc:annotation-driven />
24     <mvc:default-servlet-handler />
25 
26     <!-- InternalResourceViewResolver视图解析器 -->
27     <bean
28         class="org.springframework.web.servlet.view.InternalResourceViewResolver">
29         <property name="prefix" value="/WEB-INF/pages/"></property>
30         <property name="suffix" value=".jsp"></property>
31     </bean>
32 </beans>
SpringMVC的配置

 

其中,context:component-scan这项简单解释:配置的意思是,扫描com.zhangpn.ssm.controller该包下所有的@Controller注解,其他的业务层,dao层注解并不会扫描,因此我们还需要创建一个包名为:com.zhangpn.ssm.controller。

  • 测试检验SpringMVC的配置是否已经成功

在包com.zhangpn.ssm.controller下创建UserControllerTest类的测试:

 1 package com.zhangpn.ssm.controller;
 2 
 3 import java.util.Map;
 4 
 5 import org.springframework.stereotype.Controller;
 6 import org.springframework.web.bind.annotation.RequestMapping;
 7 
 8 @Controller
 9 public class UserControllerTest {
10     private static final String SUCCESS = "success";
11     
12     @RequestMapping("/login")
13     public String Login(String username ,String password,Map<String,Object> map){
14         
15         //验证用户账号信息,成功了跳转success.jsp界面(简单的测试一下)
16         System.out.println("Username:"+username+"  Password:"+password);
17         map.put("username", username);
18         map.put("password", password);
19         return SUCCESS;
20     }
21 }
简单测试

 

与此同时创建一个响应跳转页面:src/main/webapp/WEB-INF/pages/success.jsp

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 3 <html>
 4 <head>
 5 <title>登陆成功了</title>
 6 </head>
 7 <body>
 8     <h1>祝你成功的登陆了<br/></h1>
 9     username:${username}<br/>
10     password:${password}<br/>
11 </body>
12 </html>
success.jsp

 

六月 24, 2018 8:42:08 上午 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["http-apr-8080"]
六月 24, 2018 8:42:08 上午 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["ajp-apr-8009"]
六月 24, 2018 8:42:08 上午 org.apache.catalina.startup.Catalina start
信息: Server startup in 6608 ms
 

启动成功:http://localhost:8080/SpringmvcSpringMybatis/index.jsp

六月 24, 2018 8:42:08 上午 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["http-apr-8080"]
六月 24, 2018 8:42:08 上午 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["ajp-apr-8009"]
六月 24, 2018 8:42:08 上午 org.apache.catalina.startup.Catalina start
信息: Server startup in 6608 ms
Username:zhangpn  Password:123456

 

至此,SpringMVC的搭建已经完成了!


二、整合Spring与Mybatis


 

  • 引入Mybatis与Spring整合的相关Jar包
 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 3     <modelVersion>4.0.0</modelVersion>
 4     <groupId>com.java.ssm</groupId>
 5     <artifactId>SpringmvcSpringMybatis</artifactId>
 6     <packaging>war</packaging>
 7     <version>0.0.1-SNAPSHOT</version>
 8     <name>SpringmvcSpringMybatis</name>
 9     <url>http://maven.apache.org</url>
10 
11     <properties>
12         <SpringVersion>4.0.0.RELEASE</SpringVersion>
13         <MybatisVersion>3.4.1</MybatisVersion>
14     </properties>
15 
16     <dependencies>
17         <dependency>
18             <groupId>org.springframework</groupId>
19             <artifactId>spring-webmvc</artifactId>
20             <version>${SpringVersion}</version>
21         </dependency>
22         <dependency>
23             <groupId>org.springframework</groupId>
24             <artifactId>spring-tx</artifactId>
25             <version>${SpringVersion}</version>
26         </dependency>
27         <dependency>
28             <groupId>org.springframework</groupId>
29             <artifactId>spring-jdbc</artifactId>
30             <version>${SpringVersion}</version>
31         </dependency>
32         <dependency>
33             <groupId>javax.servlet</groupId>
34             <artifactId>jstl</artifactId>
35             <version>1.2</version>
36         </dependency>
37         <dependency>
38             <groupId>com.mchange</groupId>
39             <artifactId>c3p0</artifactId>
40             <version>0.9.5.2</version>
41         </dependency>
42         <dependency>
43             <groupId>mysql</groupId>
44             <artifactId>mysql-connector-java</artifactId>
45             <version>8.0.11</version>
46         </dependency>
47         <dependency>
48             <groupId>org.mybatis</groupId>
49             <artifactId>mybatis</artifactId>
50             <version>${MybatisVersion}</version>
51         </dependency>
52         <dependency>
53             <groupId>org.mybatis</groupId>
54             <artifactId>mybatis-spring</artifactId>
55             <version>1.3.0</version>
56         </dependency>
57         <dependency>
58             <groupId>cglib</groupId>
59             <artifactId>cglib</artifactId>
60             <version>3.2.2</version>
61         </dependency>
62     </dependencies>
63 
64     <build>
65         <plugins>
66             <plugin>
67                 <artifactId>maven-compiler-plugin</artifactId>
68                 <configuration>
69                     <source>1.8</source>
70                     <target>1.8</target>
71                 </configuration>
72             </plugin>
73         </plugins>
74     </build>
75 </project>
pom.xml文件

 

引入包时,特别是要注意包与包之间的兼容性,如果是由于这个问题产生的错误会浪费你很多的不必要去浪费的时间。

  • 在web.xml中配置Spring加载时启动的监听器{ContextLoaderListener}
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3     xmlns="http://java.sun.com/xml/ns/javaee"
 4     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
 5     version="3.0">
 6     <display-name>SpringmvcSpringMybatis</display-name>
 7     <welcome-file-list>
 8         <welcome-file>index.jsp</welcome-file>
 9     </welcome-file-list>
10     <context-param>
11         <param-name>contextConfigLocation</param-name>
12         <param-value>classpath:spring.xml</param-value>
13     </context-param>
14     <listener>
15         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
16     </listener>
17     <servlet>
18         <servlet-name>springmvc</servlet-name>
19         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
20         <init-param>
21             <param-name>contextConfigLocation</param-name>
22             <param-value>classpath:springmvc.xml</param-value>
23         </init-param>
24         <load-on-startup>1</load-on-startup>
25     </servlet>
26     <servlet-mapping>
27         <servlet-name>springmvc</servlet-name>
28         <url-pattern>/</url-pattern>
29     </servlet-mapping>
30 </web-app>
ContextLoaderListener加载启动

 

此时,Spring将会与Web一同启动,根据配置文件,创建Spring的配置文件[<param-value>classpath:spring.xml</param-value>],在classpath下创建spring.xml文件。(文件的名称和位置一定与配置文件一致)

  • 配置Spring文件
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
 4     xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
 5     xmlns:mvc="http://www.springframework.org/schema/mvc"
 6     xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
 7     xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
 8         http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
 9         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
10         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
11         http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
12         http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
13 
14     <!-- 开启注解扫描,因为SpringMVC的配置文件已经扫描了@Controller注解,因此Spring只需要扫描除了@Controller注解之外的其他注解 -->
15     <context:component-scan base-package="com.zhangpn.ssm.*">
16         <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
17     </context:component-scan>
18 
19     <!-- dataSource配置,使用C3P0数据源 -->
20     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
21         <property name="driverClass" value="com.mysql.cj.jdbc.Driver"></property>
22         <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/vip?serverTimezone=GMT"></property>
23         <property name="user" value="root"></property>
24         <property name="password" value="zhangpn"></property>
25     </bean>
26 
27     <!-- 配置sqlSessionFactoryBean -->
28     <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
29         <property name="dataSource" ref="dataSource"></property>
30         <property name="configLocation" value="classpath:mybatis.xml"></property>
31         <property name="mapperLocations" value="classpath:mapper/*.xml"></property>
32     </bean>
33 
34     <!-- 配置事务管理 -->
35     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
36         <property name="dataSource" ref="dataSource"></property>
37     </bean>
38 
39     <!-- 开启注解方式事务 -->
40     <tx:annotation-driven transaction-manager="transactionManager" />
41 
42     <!-- 扫描Dao接口包 -->
43     <mybatis-spring:scan base-package="com.zhangpn.ssm.dao" />
44 
45 </beans>
Spring配置文件全部内容

 

分步分析:

1     <context:component-scan base-package="com.zhangpn.ssm.*">
2         <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
3     </context:component-scan>
第一步:扫描@Controller注解

 

1     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
2         <property name="driverClass" value="com.mysql.cj.jdbc.Driver"></property>
3         <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/vip?serverTimezone=GMT"></property>
4         <property name="user" value="root"></property>
5         <property name="password" value="zhangpn"></property>
6     </bean>
第二步:配置dataSource数据源

 

1     <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
2         <property name="dataSource" ref="dataSource"></property>
3         <property name="configLocation" value="classpath:mybatis.xml"></property>
4         <property name="mapperLocations" value="classpath:mapper/*.xml"></property>
5     </bean>
第三步:配置Session工厂

 

1     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
2         <property name="dataSource" ref="dataSource"></property>
3     </bean>
4 
5     <tx:annotation-driven transaction-manager="transactionManager" />
第四步:配置事务管理并且以注解的方式管理事务
1 <mybatis-spring:scan base-package="com.zhangpn.ssm.dao" />
最后一步:扫描Dao接口包与mybatis的mapping文件绑定

 

在第三步时,在classpath下创建mybatis.xml配置文件里面暂时先不用配置,数据源和session工厂以及其他的配置都交给了Spring管理了;

1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
3 <configuration>
4 
5 </configuration>
mybatis.xml的配置,暂时先空着,日后根据项目需求增加相关配置

 

除此之外,还需要创建mapper文件夹专门存放mapper映射文件。


 三、创建相关包package,并且写一个简单的测试


 

在src/main/java下创建如下包目录:

com.zhangpn.ssm.controller
com.zhangpn.ssm.dao
com.zhangpn.ssm.entity
com.zhangpn.ssm.service
com.zhangpn.ssm.serviceImpl
com.zhangpn.ssm.utils

在src/main/resources下目录如下:

mapper(文件夹)
       UserDaoMapper.xml
mybatis.xml
spring.xml
springmvc.xml

 

/SpringmvcSpringMybatis/src/main/java/com/zhangpn/ssm/controller/UserControllerTest.java

 1 package com.zhangpn.ssm.controller;
 2 
 3 import java.util.Map;
 4 
 5 import org.springframework.beans.factory.annotation.Autowired;
 6 import org.springframework.stereotype.Controller;
 7 import org.springframework.web.bind.annotation.RequestMapping;
 8 
 9 import com.zhangpn.ssm.service.UserService;
10 
11 @Controller
12 public class UserControllerTest {
13     private static final String SUCCESS = "success";
14     private static final String FAILURE = "failure";
15     
16     @Autowired
17     private UserService userService;
18     
19     @RequestMapping("/login")
20     public String Login(String username ,String password,Map<String,Object> map){
21         System.out.println("---------------进入控制器,准备校验----------------");
22         //校验是否与数据库相匹配
23         boolean flag = userService.CheckUserLogin(username, password);
24         
25         if(!flag){
26             return FAILURE;
27         }
28         
29         //验证用户账号信息,成功了跳转success.jsp界面(简单的测试一下)
30         map.put("username", username);
31         map.put("password", password);
32         System.out.println("Username:"+username+"  Password:"+password);
33         
34         return SUCCESS;
35     }
36 }
UserControllerTest

 

/SpringmvcSpringMybatis/src/main/java/com/zhangpn/ssm/dao/UserDao.java

1 package com.zhangpn.ssm.dao;
2 
3 import com.zhangpn.ssm.entity.User;
4 
5 public interface UserDao {
6     public User getUserByName(String username);
7 }
UserDao

 

/SpringmvcSpringMybatis/src/main/java/com/zhangpn/ssm/entity/User.java

 1 package com.zhangpn.ssm.entity;
 2 
 3 public class User {
 4     private int id;
 5     private String username;
 6     private String password;
 7 
 8     public int getId() {
 9         return id;
10     }
11 
12     public void setId(int id) {
13         this.id = id;
14     }
15 
16     public String getUsername() {
17         return username;
18     }
19 
20     public void setUsername(String username) {
21         this.username = username;
22     }
23 
24     public String getPassword() {
25         return password;
26     }
27 
28     public void setPassword(String password) {
29         this.password = password;
30     }
31 
32     @Override
33     public String toString() {
34         return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
35     }
36 }
User

 

/SpringmvcSpringMybatis/src/main/java/com/zhangpn/ssm/service/UserService.java

1 package com.zhangpn.ssm.service;
2 
3 public interface UserService {
4     public boolean CheckUserLogin(String username ,String password);
5 }
UserService

 

/SpringmvcSpringMybatis/src/main/java/com/zhangpn/ssm/serviceImpl/UserServiceImpl.java

 1 package com.zhangpn.ssm.serviceImpl;
 2 
 3 import org.springframework.beans.factory.annotation.Autowired;
 4 import org.springframework.stereotype.Service;
 5 
 6 import com.zhangpn.ssm.dao.UserDao;
 7 import com.zhangpn.ssm.entity.User;
 8 import com.zhangpn.ssm.service.UserService;
 9 
10 @Service
11 public class UserServiceImpl implements UserService {
12     
13     @Autowired
14     private UserDao userDao;
15 
16     @Override
17     public boolean CheckUserLogin(String username, String password) {
18         System.out.println("---------------进入业务层,准备校验----------------");
19         User user = userDao.getUserByName(username);
20         if(user==null){
21             return false;
22         }else{
23             if(!user.getPassword().equals(password)){
24                 return false;
25             }
26         }
27         return true;
28     }
29 
30 }
UserServiceImpl

 

数据库设计一个简单地用户表:

id int 32
username varchar 32
password varchar 16

 

 

 

 id为主键:测试数据

id   username  password

1    zhangpn    123456
2    baicy          888888


 四、开始测试


 

jsp页面:

 1 <html>
 2 <body>
 3     <h2>submit</h2>
 4     <form action="login">
 5         <h3>Username:</h3><input type="text" name="username">
 6         <h3>Password:</h3><input type="password" name="password">
 7         <input type="submit" name="submit">
 8     </form>
 9 </body>
10 </html>
index.jsp

 

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 3 <html>
 4 <head>
 5 <title>登陆成功了</title>
 6 </head>
 7 <body>
 8     <h1>祝你成功的登陆了<br/></h1>
 9     username:${username}<br/>
10     password:${password}<br/>
11 </body>
12 </html>
success.jsp
 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 3 <html>
 4 <head>
 5 <title>登陆失败了</title>
 6 </head>
 7 <body>
 8     <h1>祝你失败的登陆了<br/></h1>
 9 </body>
10 </html>
failure.jsp

 

进入首页

输入正确的信息

跳转成功

输入错误的信息

跳转成功

 

posted @ 2018-06-24 07:40  呦,可以呦  阅读(684)  评论(0)    收藏  举报