J2EE系列之MyBatis学习笔记(十三)-- SSM框架搭建

来源:互联网 发布:中建交通怎么样知乎 编辑:程序博客网 时间:2024/06/07 07:12

这一讲讲述MyBatis与Spring、SpringMVC整合,这三者整合在一起是目前比较常用的一种软件开发框架SSM框架。

1.新建DynamicWebProject:SSMTest


2.把相应的jar包复制到WebContent/WEB-INF/lib文件夹中。需要的jar包如图:


3.src目录下新建log4j的配置文件:log4j.properties

log4j.rootLogger=info,appender1,appender2log4j.appender.appender1=org.apache.log4j.ConsoleAppender log4j.appender.appender2=org.apache.log4j.FileAppender log4j.appender.appender2.File=C:/logFile.txt log4j.appender.appender1.layout=org.apache.log4j.TTCCLayoutlog4j.appender.appender2.layout=org.apache.log4j.TTCCLayout  

4.与S2SH类似,SSM中实现的Spring来管理SpringMVC和MyBatis。首先配置web.xml文件:

<?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_2_5.xsd" id="WebApp_ID" version="2.5">  <display-name>SSMTest</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><!-- 编码过滤器 --><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><!-- Spring监听器 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- 添加对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>

web.xml文件中对Spring进行配置(引用了配置文件applicationContext.xml)、配置编码过滤器(这个是SpringMVC的时候讲过,解决前台到后台传值的乱码问题)、配置SpringMVC(引入配置文件spring-mvc.xml,配置拦截所有的.do请求)。

5.src目录下添加Spring配置文件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/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd          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/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsd          http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">            <!-- 自动扫描 --><context:component-scan base-package="com.test.dao" /><context:component-scan base-package="com.test.service" /><!-- 配置数据源 --><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/db_mybatis"/><property name="username" value="root"/><property name="password" value="123456"/></bean><!-- 配置mybatis的sqlSessionFactory --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource" /><!-- 自动扫描mappers.xml文件 --><property name="mapperLocations" value="classpath:com/test/mappers/*.xml"></property><!-- mybatis配置文件 --><property name="configLocation" value="classpath:mybatis-config.xml"></property></bean><!-- DAO接口所在包名,Spring会自动查找其下的类 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.test.dao" /><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property></bean><!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource" /></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>        <!-- 配置事务切面 -->      <aop:config>          <aop:pointcut id="serviceOperation"              expression="execution(* com.test.service.*.*(..))" />          <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceOperation" />      </aop:config>  </beans>
这个与S2SH中Spring的配置类似:首先配置扫描com.test.dao、com.test.service,把这两个包下的接口都加载成bean。

接下来对mybatis管理:配置数据源,配置sqlSession工厂(这里自动加载成bean,在学习mybatis的时候我们都是手动写的),引入mybatis配置文件mybatis-config.xml;

最后配置事务管理。

6.src目录下引入springmvc配置文件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/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd          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/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsd          http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">    <!-- 使用注解的包,包括子集 --><context:component-scan base-package="com.test.controller" /><!-- 视图解析器 --><bean id="viewResolver"class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/" /><property name="suffix" value=".jsp"></property></bean></beans>  

这里主要是配置了控制层,以及视图解析器。


7.src目录下新建mybatis配置文件mybatis-config.xml:

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><!-- 别名 --><typeAliases><package name="com.test.entity"/></typeAliases></configuration>


完成上述配置后就完成了SSM框架的搭建。下面进行测试:

8.src目录下建立各个包:com.test.entity(实体层),com.test.dao(数据库操作层),com.test.mappers(数据库操作实现层),com.test.controller(控制层),com.test.service(事务层),com.test.service.impl(事务实现层)。


9.实现一个登录功能:新建用户类User:

package com.test.entity;public class User {private int id;private String userName;private String password;public int getId() {return id;}public void setId(int 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;}}

数据库中新建t_user:


10.新建User类的数据库操作接口:

package com.test.dao;import com.test.entity.User;public interface UserDao {public User login(User user);}

11.新建User类的数据库操作接口实现:

<?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.test.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 t_user where userName=#{userName} and password=#{password}</select></mapper> 

所谓的login方法就是根据用户输入的用户名和密码查询数据库中用户信息。


12.新建User类的事务:

package com.test.service;import com.test.entity.User;public interface UserService {public User login(User user);}

13.新建User类的事务实现方法:

package com.test.service.impl;import javax.annotation.Resource;import org.springframework.stereotype.Service;import com.test.dao.UserDao;import com.test.entity.User;import com.test.service.UserService;@Service("userService")public class UserServiceImpl implements UserService{@Resourceprivate UserDao userDao;@Overridepublic User login(User user) {// TODO Auto-generated method stubreturn userDao.login(user);}}

这里使用注解的方式,自动给userDao对象注入值。注解@Service("userService"),Spring会自动加载这个bean;


14.新建User类的控制:

package com.test.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.test.entity.User;import com.test.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", resultUser);return "redirect:/success.jsp";}}}

Spring会自动对userService对象注入值。

15.以上完成了登录操作的后台处理。新建index.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><form action="${pageContext.request.contextPath }/user/login.do" method="post">userName:<input type="text" name="userName" value="${user.userName }"/><br/>password:<input type="password" name="password" value="${user.password }"><br/><input type="submit" value="login"/><font color="red">${errorMsg }</font></form></body></html>

这里输入用户名和密码,点击登录的时候发出/user/login.do请求。

16.UserController层处理这个请求,登录成功后重定向到success.jsp页面。登录失败的话,跳转到index.jsp页面。


运行程序:


输入正确的用户名和密码,点击login:



如果输入的用户名和密码不正确:




总结:这一篇博客讲述了SSM框架的搭建,添加过程包括:

1.添加jar包;2.web.xml文件配置Spring和SpringMVC;3.添加Spring、SpringMVC、MyBatis的配置文件。

阅读全文
0 0
原创粉丝点击