springMVC 3.0.5 + Mybatis3.0.4教程

1.需要jar包

spring的jar包

org.springframework.aop-3.0.5.RELEASE.jar
org.springframework.asm-3.0.5.RELEASE.jar
org.springframework.beans-3.0.5.RELEASE.jar
org.springframework.context-3.0.5.RELEASE.jar
org.springframework.core-3.0.5.RELEASE.jar
org.springframework.expression-3.0.5.RELEASE.jar
org.springframework.jdbc-3.0.5.RELEASE.jar
org.springframework.orm-3.0.5.RELEASE.jar
org.springframework.test-3.0.5.RELEASE.jar
org.springframework.transaction-3.0.5.RELEASE.jar
org.springframework.web-3.0.5.RELEASE.jar
org.springframework.web.servlet-3.0.5.RELEASE.jar

mybatis与Spring的整合所需的包:

mybatis-3.0.4.jar
mybatis-spring-1.0.1.jar

JDBC驱动包:

mysql.jar

公共jar包:

aopalliance-1.0.jar
commons-dbcp-1.2.1.jar
commons-logging-1.1.jar
log4j-1.2.14.jar
slf4j-api-1.5.8.jar
slf4j-log4j12-1.5.8.jar
commons-pool.jar
cglib-2.2.jar
commons-collections-3.2.jar
jackson-all-1.6.3.jar
asm-3.1.jar

junit测试包:

junit-4.8.2.jar

jstl页面显示包:

jstl.jar

2.创建名称为SpringMybatis的web项目,项目结构如下:

sql语句如下:

一.mysq中文乱码解决
	1)查看默认的编码格式:show variables like "%char%";
	2)如果不是你想要的编码,可以改配置文件,或用mysql命令来实现
二.在创建数据库和表的时候,都制定好编码。
	1)create database ceshi character set 'utf8';
	2)drop table if exists tb_user;
	  create table tb_user(
    		id int primary key auto_increment comment '主键',
    		username varchar(40) not null unique comment '用户名',
    		password varchar(40) not null comment '密码',
    		email varchar(40) comment '邮件',
    		age int  comment '年龄',
    		sex char(2) not null comment '性别'
	  )engine=InnoDB default charset=utf8;

3.新建如上图所示的包和文件,在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:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:task="http://www.springframework.org/schema/task"
	xsi:schemaLocation="
		http://www.springframework.org/schema/beans
		http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
		http://www.springframework.org/schema/tx
		http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
		http://www.springframework.org/schema/aop
		http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
		http://www.springframework.org/schema/context
		http://www.springframework.org/schema/context/spring-context-3.0.xsd
		http://www.springframework.org/schema/mvc 
		http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
		http://www.springframework.org/schema/task 
		http://www.springframework.org/schema/task/spring-task-3.0.xsd">

	<!-- 引入jdbc配置文件 -->
	<context:property-placeholder location="classpath:/config/env/jdbc.properties" />
	
	<!-- 启用自动扫描 -->
	<context:component-scan base-package="com.sk"/>
	
	<!-- 读取jdbc.properties文件,配置数据源 -->
	<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="${user}" />
		<property name="password" value="${password}" />
		<!-- 数据库连接池配置 -->
		<property name="initialSize" value="60" /><!-- 初始化连接数量 -->
		<property name="maxActive" value="100" /><!-- 最大连接数量 -->
		<property name="maxIdle" value="50" /><!-- 最大空闲连接数量 -->
		<property name="minIdle" value="10" /><!-- 最小空闲连接数量 -->
	</bean>
	<!-- mybatis文件配置,扫描所有mapper文件 -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="configLocation" value="classpath:/config/mybatis/mybatis.xml" />
		<property name="mapperLocations">
			<list>
				<value>classpath:/config/mapper/*Mapper.xml</value>
			</list>
		</property>
	</bean>
	<!-- spring与mybatis整合配置,扫描所有dao -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.sk.mapper" />
		<property name="sqlSessionFactory" ref="sqlSessionFactory" />
	</bean>

	<!-- 对数据源进行事务管理  -->
	<bean name="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" /> 
	</bean>
</beans>

4.配置config->mybatis->mybatis.xml,内容如下:

<?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>
  
	<settings>
		<setting name="cacheEnabled" value="true"/>
		<setting name="lazyLoadingEnabled" value="true"/>  
		<setting name="multipleResultSetsEnabled" value="true"/>  
		<setting name="useColumnLabel" value="true"/>  
		<setting name="useGeneratedKeys" value="true"/>  
		<setting name="defaultExecutorType" value="SIMPLE"/>  
		<setting name="defaultStatementTimeout" value="25000"/>  
	</settings>
	<typeAliases>
		<typeAlias alias="String" type="java.lang.String" />
		<typeAlias alias="Long" type="java.lang.Long" />
		<typeAlias alias="Integer" type="java.lang.Integer" />
		<typeAlias alias="Map" type="java.util.Map" />
		<typeAlias alias="List" type="java.util.List" />
	</typeAliases>
	
</configuration>

5.在com.sk.models包下新建TUserBasic类,内容如下:

package com.sk.models;

public class TUserBasic {
    private Integer id;

    private String userName;

    private String password;

    private String email;

    private Integer age;

    private String sex;

    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;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
}

6.配置config->mapper->TUserBasicMapper.xml,内容如下:

<?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.sk.mapper.TUserBasicMapper" >
  <resultMap id="BaseResultMap" type="com.sk.models.TUserBasic" >
    <id column="id" property="id" jdbcType="INTEGER" />
    <result column="userName" property="userName" jdbcType="VARCHAR" />
    <result column="password" property="password" jdbcType="VARCHAR" />
    <result column="email" property="email" jdbcType="VARCHAR" />
    <result column="age" property="age" jdbcType="INTEGER" />
    <result column="sex" property="sex" jdbcType="CHAR" />
  </resultMap>
  <sql id="Base_Column_List" >
    id, userName, password, email, age, sex
  </sql>
  
  <select id="selectUserBasic" resultMap="BaseResultMap" parameterType="com.sk.models.TUserBasic" >
    select 
    <include refid="Base_Column_List" />
    from tb_user
    where userName = #{userName,jdbcType=VARCHAR} and password = #{password,jdbcType=VARCHAR}
  </select>
</mapper>

7.在com.sk.mapper包下面新建TUserBasicMapper类,内容如下:

package com.sk.mapper;

import com.sk.models.TUserBasic;
public interface TUserBasicMapper {
	TUserBasic selectUserBasic(TUserBasic record);
}

7.在com.sk.service.user包下新建UserBasicService类,内容如下:

package com.sk.service.user;

import com.sk.models.TUserBasic;

public interface UserBasicService {
	/**
	 * 登录
	 * @param tUserBasic
	 * @return
	 */
	TUserBasic login(TUserBasic tUserBasic);
}

8.在com.sk.service.user.impl包下新建UserBasicServiceImpl类,内容如下:

package com.sk.service.user.impl;

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

import com.sk.mapper.TUserBasicMapper;
import com.sk.models.TUserBasic;
import com.sk.service.user.UserBasicService;
@Service
public class UserBasicServiceImpl implements UserBasicService {
	@Autowired
	private TUserBasicMapper userBasicMapper;

	public TUserBasic login(TUserBasic userBasic) {
		return userBasicMapper.selectUserBasic(userBasic);
	}
}

9.在com.sk.test包下新建UserTest类进行测试,内容如下:

package com.sk.test;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.sk.mapper.TUserBasicMapper;
import com.sk.models.TUserBasic;


@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:config/spring/applicationContext.xml"})
public class UserTest extends AbstractJUnit4SpringContextTests {

	@Autowired
    private TUserBasicMapper tUserBasicMapper;
    @Test
    public void testGetAllAccount() {
    	TUserBasic user = new TUserBasic();
    	user.setUserName("sk");
    	user.setPassword("123456");
        System.out.println(tUserBasicMapper.selectUserBasic(user).getAge());
    }
}

右键run as->JUnit Test,控制台显示:22

10新建com.sk.cache包,并在此包下面新建UserCache类,可以初始化数据库中的数据,如下:

package com.sk.cache;

import javax.annotation.PostConstruct;

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

import com.sk.mapper.TUserBasicMapper;

@Component
public class UserCache {
	@Autowired
	private TUserBasicMapper userBasicMapper;
	@PostConstruct
	private void init() {
		System.out.println("test");
	}
}

11.新建com.sk.interceptor包,并在此包下面新建AclInterceptorAdapter,自定义拦截器,如下:

package com.sk.interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

public class AclInterceptorAdapter extends HandlerInterceptorAdapter {
	/**
	 * 在@Controller方法前进行拦截
	 */
//	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) 
//			throws Exception {
//		return true;
//	}
	/**
	 * 在Controller方法后进行拦截
	 */
//	public void afterCompletion(HttpServletRequest request,HttpServletResponse response, Object handler, Exception ex)
//		throws Exception {
//	}
}

12.在com.sk.web.user包下面建LoginAction类,内容如下:

package com.sk.web.user;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import com.sk.models.TUserBasic;
import com.sk.service.user.UserBasicService;

@Controller
@RequestMapping("/")
public class LoginAction {
	@Autowired
	private UserBasicService userBasicService;
	
	/**
	 * 登录
	 * @author
	 * @return
	 */
	
	@RequestMapping(value="login", method=RequestMethod.POST)
	public ModelAndView loginPage(HttpServletRequest request, HttpServletResponse response){
		String userName = request.getParameter("userName");
		String password = request.getParameter("password");
		TUserBasic tUserBasic = new TUserBasic();
		tUserBasic.setUserName(userName);
		tUserBasic.setPassword(password);
		TUserBasic user = userBasicService.login(tUserBasic);
		if(user != null)
		{
			ModelAndView mav = new ModelAndView("main");
			mav.addObject("user", user);
			return mav;
		}
		ModelAndView mav = new ModelAndView("fail");
		return mav;
	}
}

13.在这个包下面新建jdbc.properties文件,内容如下:

#mysql
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/ceshi
user=root
password=root
#oracle
#driver=oracle.jdbc.OracleDriver
#url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
#user=ahebpp
#password=ahebpp

14.在config.spring包下面新建springMVC-servlet.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:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:task="http://www.springframework.org/schema/task"
	xsi:schemaLocation="
		http://www.springframework.org/schema/beans 
		http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
		http://www.springframework.org/schema/aop 
		http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
		http://www.springframework.org/schema/context
		http://www.springframework.org/schema/context/spring-context-3.0.xsd
		http://www.springframework.org/schema/mvc 
		http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
		http://www.springframework.org/schema/task 
		http://www.springframework.org/schema/task/spring-task-3.0.xsd">
		
	<!-- 启用自动扫描 -->
	<context:component-scan base-package="com.sk"/>
	
	<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> 
		<property name="interceptors"> 
			<list> 
				<bean class="com.sk.interceptor.AclInterceptorAdapter" />
			</list> 
		</property> 
	</bean>
	
 	<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
		<property name="messageConverters">
			<list> 
				<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
			</list>
         </property>
	</bean>
	
	<!--视图定义 -->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
		<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
		<property name="prefix" value="/WEB-INF/jsp/" />
		<property name="suffix" value=".jsp" />
    </bean>
</beans>

15.在WEB-INF下面新建jsp文件夹,分别建fail.jsp和main.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>错误页面</title>
	
  </head>
  
  <body>
  	帐号与密码不匹配!
  </body>
</html>

mian.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>成功页面</title>
	
  </head>
  
  <body>
  	<form>
  		名称:${ user.userName}<br/>
  		用户名:${user.password}<br/>
  	</form>
  </body>
</html>

16.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>登录</title>
	
  </head>
  
  <body>
  	<form action="login.do" method="post">
  		<table border="1">
  			<tr>
  				<td>用户名:</td>
  				<td><input type="text" value="" name="userName"></td>
  			</tr>
  			<tr>
  				<td>密  码:</td>
  				<td><input type="text" value="" name="password"></td>
  			</tr>
  			<tr>
  				<td colspan="2" align="center">
  					<input type="submit" value="登录">
  				</td>
  			</tr>
  		</table>
  	</form>
  </body>
</html>

17,最后别忘了web.xml中的内容,如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
	<!-- 日志记录 -->
	<context-param>
		<!-- 日志配置文件路径 -->
		<param-name>log4jConfigLocation</param-name>
		<param-value>classpath:config/log4j.properties</param-value>
	</context-param>
	<context-param>
		<!-- 日志页面的刷新间隔 -->
		<param-name>log4jRefreshInterval</param-name>
		<param-value>6000</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
	</listener>
	<!-- spring的监听以及配置文件加载信息 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<!-- 上面配置的spring配置文件的路径,区分大小写 -->
		<param-value>
  			classpath:/config/spring/applicationContext.xml
  		</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<!-- Character Encoding filter -->
	<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>

	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<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:/config/spring/springMVC-servlet.xml</param-value>
		</init-param>
	</servlet>

	<servlet-mapping>
		<servlet-name>springMVC</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>

	<servlet-mapping>
		<servlet-name>springMVC</servlet-name>
		<url-pattern>*.html</url-pattern>
	</servlet-mapping>
</web-app>

18.部署到tomcat中,启动无错误后,在浏览器中输入:http://localhost:8080/spring/,写好登录名和登录密码,点击登录,如下图:

表示成功了,有什么不懂的,可以提出来我们一起讨论。

 

爱生活,爱分享,爱康宝!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值