SSM(SpringMVC Spring Mybatis)三大框架从零开始搭建实例

来源:互联网 发布:流程图绘制软件 编辑:程序博客网 时间:2024/05/19 20:37
SSM(SpringMVC Spring Mybatis)三大框架从零开始搭建实例
1、新建一个web工程,带有web.xml文件

2、第二步,将ssm框架搭建所需要的jar包复制到lib目录下,全部选中,Add-to-Path,加入到工程下


3、配置web.xml文件:
<?xml version="1.0" encoding="UTF-8"?><web-appxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance   http://www.springmodules.org/schema/cache/springmodules-cache.xsd   http://www.springmodules.org/schema/cache/springmodules-encache.xsd"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"id="WebApp_ID" version="3.0"><display-name>qzone</display-name><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><!-- spring配置文件 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param><!-- spring监听器 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- 编码过滤器 --><filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><async-supported>true</async-supported><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- 添加springmvc的支持 --><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:spring-mvc.xml</param-value></init-param><load-on-startup>1</load-on-startup><async-supported>true</async-supported></servlet><servlet-mapping><servlet-name>springMVC</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping></web-app>

4、在src下新建applicationContext.xml配置文件:
<?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:p="http://www.springframework.org/schema/p"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsdhttp://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd"><!-- 指定要扫描的包com.etc下的所有 --><context:component-scan base-package="com.etc"></context:component-scan><!-- 配置数据源 --><bean id="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver"></property><property name="url" value="jdbc:mysql://localhost:3306/test"></property><property name="username" value="root"></property><property name="password" value="root"></property></bean><!-- 配置service的事务切面 --><aop:config><aop:pointcut id="serviceOperation" expression="execution(* com.etc.service.*.*(..))" /><aop:advisor advice-ref="txAdvice" pointcut-ref="serviceOperation" /></aop:config><!-- 配置mybatis的SessionFactory --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"></property><!-- 自动扫描Mapper.xml文件 --><property name="mapperLocations" value="classpath:com/etc/mappers/*.xml"></property><!-- mybaits配置文件 --><property name="configLocation" value="classpath:mybatis-config.xml"></property></bean><!-- spring将mybatis下的sqlSessionFactory注入到daoceng --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.etc.dao"></property><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property></bean><!-- 事务管理 --><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"></property></bean><!-- 配置事务通知属性 --><tx:advice id="txAdvice" transaction-manager="transactionManager"><!-- 定义事务传播属性 --><tx:attributes><tx:method name="insert*" propagation="REQUIRED" /><tx:method name="update*" propagation="REQUIRED" /><tx:method name="edit*" propagation="REQUIRED" /><tx:method name="save*" propagation="REQUIRED" /><tx:method name="add*" propagation="REQUIRED" /><tx:method name="new*" propagation="REQUIRED" /><tx:method name="set*" propagation="REQUIRED" /><tx:method name="remove*" propagation="REQUIRED" /><tx:method name="delete*" propagation="REQUIRED" /><tx:method name="change*" propagation="REQUIRED" /><tx:method name="get*" propagation="REQUIRED" read-only="true" /><tx:method name="find*" propagation="REQUIRED" read-only="true" /><tx:method name="load*" propagation="REQUIRED" read-only="true" /><tx:method name="*" propagation="REQUIRED" read-only="true" /></tx:attributes></tx:advice></beans>

5、在src下新建log4j.properties文件:
log4j.rootLogger=info,appender1,appender2log4j.appender.appender1=org.apache.log4j.ConsoleAppenderlog4j.appender.appender2=org.apache.log4j.FileAppenderlog4j.appender.appender2.File=D:/logFile.txtlog4j.appender.appender1.layout=org.apache.log4j.TTCCLayoutlog4j.appender.appender2.layout=org.apache.log4j.TTCCLayout

6、在src下新建mybatis-config.xml配置文件:使得我们可以在UserMapper.xml中直接使用User,而不用写全名
com.etc.entity.User,使得代码更为简便。
<?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><!-- 批量定义别名,使得com.etc.entity包下的所有bean都使用别名(别名就是类名,首字母大写或小写都可以) --><typeAliases><package name="com.etc.entity"/></typeAliases></configuration>
如果想要指定别名的名称,如下配置:
<?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><!-- com.etc.entity包下的所有bean都使用别名 --><typeAliases><package name="com.etc.entity.User" alias="user"/></typeAliases></configuration>
7、在src下新建spring-mvc.xml配置文件:
<?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:p="http://www.springframework.org/schema/p"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsdhttp://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd"><!-- 指定注解要扫描的包 --><context:component-scan base-package="com.etc.controller"></context:component-scan><!-- 视图解析器,自动加上前缀和后缀 --><bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/"></property><property name="suffix" value=".jsp"></property></bean></beans>

8、在src下新建com.etc.entity包,在包下新建User.java类:
package com.etc.entity;/** * Descript:用户实体类 * @author zoey * @date 2017年8月14日 */public class User {private Integer id;private String username;private String password;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}

9、在src下新建com.etc.dao包,在包下新建UserDao接口:
package com.etc.dao;import com.etc.entity.User;public interface UserDao {public User login(User user);}

10、在src下新建com.etc.mappers包,在包下新建UserMapper.xml文件:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.etc.dao.UserDao"><resultMap type="User" id="UserResult"><result property="id" column="id"/><result property="username" column="username"/><result property="password" column="password"/></resultMap><select id="login" parameterType="User" resultMap="UserResult">select * from user where username=#{username} and password=#{password}</select></mapper>

11、在src下新建com.etc.service包,在包下新建UserService.java类:
package com.etc.service;import javax.annotation.Resource;import org.springframework.stereotype.Service;import com.etc.dao.UserDao;import com.etc.entity.User;import com.etc.service.UserService;@Servicepublic class UserService{@Resourceprivate UserDao userDao;public User login(User user) {return userDao.login(user);}}

11、在src下新建com.etc.controller包,在包下新建UserController.java类:
package com.etc.controller;import javax.annotation.Resource;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import com.etc.entity.User;import com.etc.service.UserService;@Controller@RequestMapping("/user")public class UserController {@Resourceprivate UserService userService;@RequestMapping("/login")public String login(User user,HttpServletRequest request){User resultUser = userService.login(user);if(resultUser == null){request.setAttribute("user", user);request.setAttribute("errorMsg","用户名或密码错误");return "index";}else{HttpSession session = request.getSession();session.setAttribute("currentUser",user);return "redirect:/success.jsp";}}}

12、编写index.jsp页面如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>My JSP 'index.jsp' starting page</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">-->  </head>    <body>  <form action="${pageContext.request.contextPath }/user/login.do">  username:<input type="text" name="username" value="${user.username }"/>  password:<input type="password" name="password" value="${user.password }"/>  <input type="submit" value="login"/><font  color="red">${errorMsg }</font>  </form>  </body></html>

13、编写success.jsp页面如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>My JSP 'index.jsp' starting page</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">-->  </head>    <body>   欢迎${currentUser.username }  </body></html>

14、运行项目如下:http://localhost:8080/qzone/index.jsp



至此:ssm框架搭建全部完成,简单实例也已经成功实现。
补充:
数据库信息如下:


项目总体框架图如下:


ps:这个登录实例实现的方法不唯一,可以使用其他方式完成。