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>
- 配置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>
- 配置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>
其中,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>
六月 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>
引入包时,特别是要注意包与包之间的兼容性,如果是由于这个问题产生的错误会浪费你很多的不必要去浪费的时间。
- 在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>
此时,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>
分步分析:
1 <context:component-scan base-package="com.zhangpn.ssm.*"> 2 <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> 3 </context:component-scan>
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>
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>
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" />
在第三步时,在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>
除此之外,还需要创建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 }
/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 }
/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 }
/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 }
/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 }
数据库设计一个简单地用户表:
| 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>
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>
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>
进入首页
输入正确的信息
跳转成功
输入错误的信息
跳转成功

浙公网安备 33010602011771号