1...
package com.qi.action;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.qi.biz.IUserServ;
import com.qi.entity.UserBean;
import com.qi.unit.ServFactory;
public class UserAction extends ActionSupport implements ModelDriven<UserBean> {
private static final long serialVersionUID = 7189455075553985014L;
private UserBean user= new UserBean();
private IUserServ userv=ServFactory.getUserServ();
public String tologin()throws Exception{
return LOGIN;
}
public String login()throws Exception{
boolean bb=userv.login(user);
if(bb){
return SUCCESS;
}else{
return INPUT;
}
}
public UserBean getModel() {
return user;
}
}
2.建立 com.qi.biz 包含两个代码
1接口
package com.qi.biz;
import com.qi.entity.UserBean;
public interface IUserServ {
boolean login(UserBean user)throws Exception;
}
2.实现
package com.qi.biz;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.qi.dao.UserBeanMapper;
import com.qi.entity.UserBean;
import com.qi.unit.MyBatisSessionFactory;
public class UserServiceImpl implements IUserServ {
@Override
public boolean login(UserBean user) throws Exception {
UserBeanMapper userMapper = MyBatisSessionFactory
.getMapper(UserBeanMapper.class);
Map<String, Object> params = new HashMap<String, Object>();
params.put("username", user.getUsername());
params.put("password", user.getPassword());
List<UserBean> ulist = userMapper.selectByMap(params);
if (ulist != null && ulist.size() > 0) {
return true;
}
return false;
}
}
3.映射文件
package com.qi.dao;
import java.util.List;
import java.util.Map;
import com.qi.entity.UserBean;
public interface UserBeanMapper {
int deleteByPrimaryKey(Long id);
int insertSelective(UserBean record);
UserBean selectByPrimaryKey(Long id);
int updateByPrimaryKeySelective(UserBean record);
List< UserBean> selectByMap(Map<String, Object> param);
}
4.实体类
package com.qi.entity;
public class UserBean {
private Long id;
private String username;
private String password;
public Long getId() {
return id;
}
public void setId(Long 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;
}
}
5.过滤器
package com.qi.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import com.qi.unit.MyBatisSessionFactory;
public class OpenMySessionInViewFilter implements Filter {
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
try {
arg2.doFilter(arg0, arg1);
MyBatisSessionFactory.commitTransaction();
} catch (Exception e) {
MyBatisSessionFactory.rollbackTransaction();
throw new ServletException();
}finally{
MyBatisSessionFactory.closeSession();
}
}
@Override
public void init(FilterConfig arg0) throws ServletException {
}
}
6.工具类
package com.qi.unit;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MyBatisSessionFactory {
private MyBatisSessionFactory(){};
private static SqlSessionFactory factory;
private static final ThreadLocal<SqlSession> threadLocal=new ThreadLocal<>();
static{
try {
Reader r=Resources.getResourceAsReader("mybatis-config.xml");
factory =new SqlSessionFactoryBuilder().build(r);
} catch (Exception e) {
e.printStackTrace();
}
}
public static SqlSessionFactory getFactory(){
return factory;
}
public static SqlSession getSession(){
SqlSession ss=threadLocal.get();
if(ss==null){
ss=factory!=null?factory.openSession():null;
threadLocal.set(ss);
}
return ss;
}
public static void commitTransaction(){
SqlSession session=getSession();
if(session!=null)
session.commit();
}
public static void rollbackTransaction(){
SqlSession session=getSession();
if(session!=null)
session.rollback();
}
public static void closeSession(){
SqlSession ss=threadLocal.get();
threadLocal.set(null);
if(ss!=null)
ss.close();
}
public static<T>T getMapper(Class<T>clz){
SqlSession ss=getSession();
if(ss!=null)
return ss.getMapper(clz);
return null;
}
}
package com.qi.unit;
import com.qi.biz.IUserServ;
import com.qi.biz.UserServiceImpl;
public class ServFactory {
public static IUserServ getUserServ(){
return new UserServiceImpl();
}
}
7.mapper.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.qi.dao.UserBeanMapper">
<resultMap id="BaseResultMap" type="com.qi.entity.UserBean">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="username" jdbcType="VARCHAR" property="username" />
<result column="password" jdbcType="VARCHAR" property="password" />
</resultMap>
<sql id="Base_Column_List">
id, username, password
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from t_users
where id = #{id,jdbcType=BIGINT}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
delete from t_users
where id = #{id,jdbcType=BIGINT}
</delete>
<insert id="insertSelective" parameterType="com.qi.entity.UserBean">
insert into t_users
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="username != null">
username,
</if>
<if test="password != null">
password,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=BIGINT},
</if>
<if test="username != null">
#{username,jdbcType=VARCHAR},
</if>
<if test="password != null">
#{password,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.qi.entity.UserBean">
update t_users
<set>
<if test="username != null">
username = #{username,jdbcType=VARCHAR},
</if>
<if test="password != null">
password = #{password,jdbcType=VARCHAR},
</if>
</set>
where id = #{id,jdbcType=BIGINT}
</update>
<sql id="condition">
<where>
<if test="id!=null">
and id = #{id,jdbcType=INTEGER}
</if>
<if test="username!=null">
and username = #{username,jdbcType=VARCHAR}
</if>
<if test="password!=null">
and password = #{password,jdbcType=VARCHAR}
</if>
</where>
</sql>
<select id="selectByMap" parameterType="map" resultMap="BaseResultMap">
select <include refid="Base_Column_List"/> from t_users <include refid="condition"/>
</select>
</mapper>
8.文件配置
mybatis-config
<?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>
<properties resource="database.properties"/>
<environments default="qi">
<environment id="qi">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/qi/mapper/UserBeanMapper.xml"/>
</mappers>
</configuration>
struts
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<constant name="struts.action.extension" value="action"/>
<package name="default" extends="struts-default"
strict-method-invocation="false">
<action name="user_*" class="com.qi.action.UserAction" method="{1}">
<result name="login">/WEB-INF/content/user/login.jsp</result>
<result name="success">/WEB-INF/content/user/show.jsp</result>
<result name="input">/WEB-INF/content/user/login.jsp</result>
</action>
</package>
</struts>
web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<filter>
<filter-name>OpenMySessionInViewFilter</filter-name>
<filter-class>com.qi.filter.OpenMySessionInViewFilter</filter-class>
</filter>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
<init-param>
<param-name>struts.devMode</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>OpenMySessionInViewFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.qi</groupId>
<artifactId>spring-maven</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5.16</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.3</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.44</version>
</dependency>
</dependencies>
</project>
=================================
index.jsp页面
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>${initParam.appName}</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
</head>
<body>
<h1>${initParam.appName}</h1>
<a href="user_tologin.action">登录系统</a>
</body>
</html>
login.jsp页面
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<h1>${initParam.appName}</h1>
<s:actionerror/>
<s:form action="user_login.action">
<s:textfield name="username" label="用户名称"/>
<s:password name="password" label="用户口令"/>
<tr>
<td colspan="2">
<s:submit value="登录系统" theme="simple"/>
<s:reset value="重置数据" theme="simple"/>
</td>
</tr>
</s:form>
</body>
</html>
show.jsp页面
<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<h1>登录成功</h1>
</body>
</html>