您的位置:首页 > 编程语言 > Java开发

spring、springmvc、mybatis整合配置(注解)

2017-10-20 16:01 579 查看
最近整合ssm框架费了不少功夫,所以,把详细配置过程列出来,不足的地方望大侠们指正!

项目目录:



1.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_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>ssm</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- 配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mybatis.xml</param-value>
</context-param>
<!-- 配置spring监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!-- 配置分发请求的前端控制器 -->
<servlet>
<servlet-name>dispatcher</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>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

<!-- 配置编码过滤器 -->
<filter>
<filter-name>encode</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>True</param-value>
</init-param>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encode</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>


2.springmvc.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: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-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> 
<!-- 配置控制层扫描包路径 -->
<context:component-scan base-package="com.cn.su.controller"></context:component-scan>

<!-- 配置视图层跳转 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/" />
<property name="suffix" value=".jsp" />
</bean>

<!-- 静态资源配置 -->
<mvc:annotation-driven /><!-- 启动注解,配置静态资源必须 -->
<mvc:resources location="/" mapping="/*.html" />
<mvc:resources location="/css/" mapping="/css/*" />
<mvc:resources location="/js/" mapping="/js/*" />
<mvc:resources location="/images/" mapping="/images/*" />
</beans>


3.spring-mybatis.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
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/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd ">

<!-- 自动扫描包 -->
<context:component-scan base-package="com.cn.su"></context:component-scan>

<!-- 引入配置文件 -->
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:jdbc.properties" />
</bean>

<!-- dataSource数据源配置 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
<!-- 初始化连接大小 -->
<property name="initialSize" value="${initialSize}"></property>
<!-- 连接池最大数量 -->
<property name="maxActive" value="${maxActive}"></property>
<!-- 连接池最大空闲 -->
<property name="maxIdle" value="${maxIdle}"></property>
<!-- 连接池最小空闲 -->
<property name="minIdle" value="${minIdle}"></property>
<!-- 获取连接最大等待时间 -->
<property name="maxWait" value="${maxWait}"></property>
</bean>

<!-- sessionFactory工厂配置 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- mybatis和spring完美配置,不需要配置mapper映射文件 -->
<property name="mapperLocations" value="classpath*:com/cn/su/mapper/*.xml"></property>
</bean>

<!-- dao层配置 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- spring会自动查找该包下的类 -->
<property name="basePackage" value="com.cn.su.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>
<!-- 传播行为 -->
<!-- REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务;
SUPPORTS:支持当前事务,如果当前没有事务,就以非事务的方式执行
-->
<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="insert*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
<tx:method name="select*" propagation="SUPPORTS" read-only="true"/>
<tx:method name="query*" propagation="SUPPORTS" read-only="true"/>
</tx:attributes>
</tx:advice>

<!-- 配置aop切面 -->
<aop:config>
<aop:advisor advice-ref="txAdvice" pointcut="execution(* com.cn.su.service.impl.*.*(..))"/>
</aop:config>
</beans>


4.测试:

<1>login.jsp(登录页面)

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录</title>
</head>
<body>
<h2>Login</h2>
<form action="user/checkLogin" method="post">
username:<input type="text" name="username" value="" placeholder="please enter your username!"/><br>
password:<input type="password" name="password" value="" placeholder="please enter your password!" /><br>
<input type="submit" value="登录" />
</form>

<div>
<span style="color:red">${errorMessage}</span>
</div>
</body>
</html>

<2>UserController控制层(userController注入的是IUserService接口,这里不能是实体类UserServiceImpl哦,

这是spring的代理模式决定的,具体看,http://blog.csdn.net/jyp360/article/details/70215002):

package com.cn.su.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.cn.su.entity.User;
import com.cn.su.service.IUserService;

@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private IUserService iUserService;
@RequestMapping("/checkLogin")
public String login(User user,Model model){
System.out.println("username:"+user.getUsername()+",password:"+user.getPassword());
boolean flag = iUserService.selectSingleUser(user.getUsername(), user.getPassword());
if(flag){
return "success";
}else{
model.addAttribute("errorMessage", "用户名或者密码不正确");
return "login";
}
}
}


<3>IUserService

package com.cn.su.service;

public interface IUserService {
public boolean selectSingleUser(String username,String password);
}


<4>UserServiceImpl

package com.cn.su.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.cn.su.dao.IUserDao;
import com.cn.su.service.IUserService;
@Service
public class UserServiceImpl implements IUserService{
@Autowired
private IUserDao iUserDao;

@Override
public boolean selectSingleUser(String username,String password) {
return iUserDao.selectSingleUser(username,password) == 1 ? true : false;
}

}

<5>IUserDao

package com.cn.su.dao;

import org.apache.ibatis.annotations.Param;

public interface IUserDao {
public int selectSingleUser(@Param("username") String username,@Param("password") String password);
}


<6>UserMapper.xml(值得注意的是,这里的namespace="com.cn.su.dao.IUserDao"注意哦,是以dao接口文件

包取值的,如果不这样写,会报错,详情见:http://blog.csdn.net/u010504064/article/details/47337307)

<?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.cn.su.dao.IUserDao">
<select id="selectSingleUser" resultType="int" parameterType="com.cn.su.entity.User">
select EXISTS(select * from tb_user where username = #{username} and password = #{password});
</select>
</mapper>


最后跳转成功后页面:success.jsp配置在WEB-INF/pages/succes.jsp,路径不要写错了。整合jar包我分享下,

这里有些jar包不需要用到,用到的都在里面。附加上链接地址:
http://download.csdn.net/download/qq_25313187/10032339
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐