登录案例
一、导入Hibernate所需包 完成配置文件
二、导入Struts2所需包 完成配置文件
三、编写代码
代码展示:
UserAction
package com.feizhu.action;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.struts2.ServletActionContext;
import com.feizhu.domain.User;
import com.feizhu.service.UserService;
import com.opensymphony.xwork2.ActionSupport;
/**
* 用户模块的控制器
* @author Administrator
*
*/
public class UserAction extends ActionSupport {
private static final long serialVersionUID = -5172507796874430889L;
/**
* 处理登录功能
* @return
*/
public String login() {
//先使用之前的request对象 封装数据
HttpServletRequest request=ServletActionContext.getRequest();
//获取请求参数
Map<String, String[]> map = request.getParameterMap();
User user=new User();
try {
BeanUtils.populate(user, map);
//调用业务层
User user2 = new UserService().login(user);
//判断
if(user2==null) {
//说明。用户名或密码错误
return LOGIN;
}else {
//存入session
request.getSession().setAttribute("user2", user2);
return SUCCESS;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return NONE;
}
}
UserDao
package com.feizhu.dao;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import com.feizhu.domain.User;
import com.feizhu.utils.HibernateUtils;
/**
* 持久层
* @author Administrator
*
*/
public class UserDao {
/**
* 通过名称和密码寻找用户
* @param user
* @return
*/
public User findByNameAndPwd(User user){
//先获取
Session session = HibernateUtils.getCurrentSession();
//使用用户名和密码进行查询
Query query = session.createQuery("from User where username=? and password=?");
//设置参数
query.setParameter(0, user.getUsername());
query.setParameter(1, user.getPassword());
//查询
List<User> list = query.list();
//有数据
if(list.size()>0) {
return list.get(0);
}
return null;
}
}
User
package com.feizhu.domain;
public class User {
private long uid;
//登录名称
private String username;
private String password;
//真实名称
private String name;
public long getUid() {
return uid;
}
public void setUid(long uid) {
this.uid = uid;
}
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 getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
UserService
package com.feizhu.service;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;
import com.feizhu.dao.UserDao;
import com.feizhu.domain.User;
import com.feizhu.utils.HibernateUtils;
/**
* 用户业务层
* @author Administrator
*
*/
public class UserService {
/**
* 用户登录操作
* @return
*/
public User login(User user) {
//使用事物
Session session = HibernateUtils.getCurrentSession();
Transaction tr = session.beginTransaction();
User exisUser=null;
try {
//调用持久层,查询数据
exisUser = new UserDao().findByNameAndPwd(user);
tr.commit();
} catch (Exception e) {
tr.rollback();
e.printStackTrace();
}
return exisUser;
}
}
HibernateUtils
package com.feizhu.utils;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
/**
* Hibernate框架的工具类
* @author Administrator
*/
public class HibernateUtils {
// ctrl + shift + x
private static final Configuration CONFIG;
private static final SessionFactory FACTORY;
// 编写静态代码块
static{
// 加载XML的配置文件
CONFIG = new Configuration().configure();
// 构造工厂
FACTORY = CONFIG.buildSessionFactory();
}
/**
* 从工厂中获取Session对象
* @return
*/
public static Session getSession(){
return FACTORY.openSession();
}
/**
* // 从ThreadLocal类中获取到session的对象
* @return
*/
public static Session getCurrentSession(){
return FACTORY.getCurrentSession();
}
public static void main(String[] args) {
// 调用获取session的方法
getSession();
}
}
User.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.feizhu.domain.User" table="sys_user">
<!-- 配置id 见到name属性,javaBean的属性 见到column属性,是表结构的字段 -->
<id name="uid" column="uid">
<!-- 主键的生成策略 -->
<generator class="native"></generator>
</id>
<!-- 配置其他属性 -->
<property name="username" column="username"></property>
<property name="password" column="password"></property>
<property name="name" column="name"></property>
</class>
</hibernate-mapping>
hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<!-- 记住:先配置SessionFactory标签,一个数据库对应一个SessionFactory -->
<session-factory>
<!-- 必须要配置的参数有5个,数据库的方言 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///struts2_pro</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<!-- 数据库的方言 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 可选配置 -->
<!-- 显示SQL语句,在控制台显示 -->
<property name="hibernate.show_sql">true</property>
<!-- 格式化SQL语句 -->
<property name="hibernate.format_sql">true</property>
<!-- 生成数据库的表结构 update:如果没有表结构,创建表结构。如果存在,不会创建,添加数据 -->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 绑定本地session -->
<property name="hibernate.current_session_context_class">thread</property>
<!-- 映射配置文件,需要引入映射的配置文件 -->
<mapping resource="com/feizhu/domain/User.hbm.xml"></mapping>
</session-factory>
</hibernate-configuration>
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="crm" namespace="/" extends="struts-default">
<!-- 配置用户的模块 -->
<action name="user_*" class="com.feizhu.action.UserAction" method="{1}">
<result name="login">/login.htm</result>
<result name="success">/index.htm</result>
</action>
</package>
</struts>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" 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">
<display-name>Struts Blank</display-name>
<!-- 配置核心的过滤器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
备注:由于个人原因,本博客暂停更新。如有问题可联系本人,本人提供技术指导、学习方向、学习路线。本人微信wlp1156107728(添加注明来意) QQ1156107728(添加注明来意)