Struts2和hibernate框架整合实现简单的注册登陆功能
来源:互联网 发布:mysql variables 修改 编辑:程序博客网 时间:2024/05/17 22:56
Struts2和hibernate框架整合实现简单的注册登陆功能
项目结构:
LoginAction.java
package action;import vo.User;import vo.UserDAO;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport { /** * */ private static final long serialVersionUID = 1L; private User user; public User getUser() { return user;} public void setUser(User user) { this.user = user;} public String execute()throws Exception{ if((user=new UserDAO().LoginCheck(user.getUsername(), user.getPassword(),user.getRole()))==null){ return ERROR; } if(user.getRole()=="1"){ return "admin"; }else{ return SUCCESS;} }}
RegistAction.java
package action;import vo.User;import vo.UserDAO;import com.opensymphony.xwork2.ActionSupport;public class RegistAction extends ActionSupport { /** * */ private static final long serialVersionUID = 1L; private User user=null; private String repassword; public String getRepassword() { return repassword; } public void setRepassword(String repassword) { this.repassword = repassword; } //UserDAO userDao=new UserDAO(); @Override public String execute() throws Exception { User selectUser=new User(); if((selectUser=new UserDAO().selectRegist(user.getUsername()))==null){ User u=new User(); u.setUsername(user.getUsername()); u.setPassword(user.getPassword()); new UserDAO().saveRegist(u); return "success"; }else{ return "error"; } } public User getUser() { return user; } public void setUser(User user) { this.user = user; }}
LoginAction-validation.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd"> <validators> <field name="user.username"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>用户名不能为空</message> </field-validator> </field> <field name="user.password"> <field-validator type="regex"> <param name="expression"><![CDATA[(\w{4,8})]]></param> <message>密码长度必须在4~8之间</message> </field-validator> </field> </validators>
RegistAction-validation.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd"> <validators> <field name="user.username"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>用户名不能为空</message> </field-validator> </field> <field name="user.password"> <field-validator type="regex"> <param name="expression"><![CDATA[(\w{4,8})]]></param> <message>密码长度必须在4~8之间</message> </field-validator> </field> <field name="repassword"> <field-validator type="fieldexpression"> <param name="expression"><![CDATA[(repassword==user.password)]]></param> <message>两次输入的密码要一致!</message> </field-validator> </field> </validators>
HibernateSessionFactory.java
package util;import org.hibernate.HibernateException;import org.hibernate.Session;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;import org.hibernate.service.ServiceRegistryBuilder;/** * Configures and provides access to Hibernate sessions, tied to the * current thread of execution. Follows the Thread Local Session * pattern, see {@link http://hibernate.org/42.html }. */public class HibernateSessionFactory { /** * Location of hibernate.cfg.xml file. * Location should be on the classpath as Hibernate uses * #resourceAsStream style lookup for its configuration file. * The default classpath location of the hibernate config file is * in the default package. Use #setConfigFile() to update * the location of the configuration file for the current session. */ private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>(); private static org.hibernate.SessionFactory sessionFactory; private static Configuration configuration = new Configuration(); private static ServiceRegistry serviceRegistry; static { try { configuration.configure(); serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry(); sessionFactory = configuration.buildSessionFactory(serviceRegistry); } catch (Exception e) { System.err.println("%%%% Error Creating SessionFactory %%%%"); e.printStackTrace(); } } private HibernateSessionFactory() { } /** * Returns the ThreadLocal Session instance. Lazy initialize * the <code>SessionFactory</code> if needed. * * @return Session * @throws HibernateException */ public static Session getSession() throws HibernateException { Session session = (Session) threadLocal.get(); if (session == null || !session.isOpen()) { if (sessionFactory == null) { rebuildSessionFactory(); } session = (sessionFactory != null) ? sessionFactory.openSession() : null; threadLocal.set(session); } return session; } /** * Rebuild hibernate session factory * */ public static void rebuildSessionFactory() { try { configuration.configure(); serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry(); sessionFactory = configuration.buildSessionFactory(serviceRegistry); } catch (Exception e) { System.err.println("%%%% Error Creating SessionFactory %%%%"); e.printStackTrace(); } } /** * Close the single hibernate session instance. * * @throws HibernateException */ public static void closeSession() throws HibernateException { Session session = (Session) threadLocal.get(); threadLocal.set(null); if (session != null) { session.close(); } } /** * return session factory * */ public static org.hibernate.SessionFactory getSessionFactory() { return sessionFactory; } /** * return hibernate configuration * */ public static Configuration getConfiguration() { return configuration; }}
AbstractUser.java
package vo;/** * AbstractUser entity provides the base persistence definition of the User * entity. @author MyEclipse Persistence Tools */public abstract class AbstractUser implements java.io.Serializable { // Fields private Integer id; private String username; private String password; private String role; // Constructors /** default constructor */ public AbstractUser() { } /** full constructor */ public AbstractUser(String username, String password,String role) { this.username = username; this.password = password; this.role=role; } // Property accessors public Integer getId() { return this.id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return this.username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return this.password; } public void setPassword(String password) { this.password = password; } public String getRole() { return role; } public void setRole(String role) { this.role = role; }}
BaseHibernateDAO.java
package vo;import org.hibernate.Session;import util.HibernateSessionFactory;/** * Data access object (DAO) for domain model * @author MyEclipse Persistence Tools */public class BaseHibernateDAO implements IBaseHibernateDAO { public Session getSession() { return HibernateSessionFactory.getSession(); }}
IBaseHibernateDAO.java
package vo;import org.hibernate.Session;/** * Data access interface for domain model * @author MyEclipse Persistence Tools */public interface IBaseHibernateDAO { public Session getSession();}
User.java
package vo;/** * User entity. @author MyEclipse Persistence Tools */public class User extends AbstractUser implements java.io.Serializable { // Constructors /** default constructor */ public User() { } /** full constructor */ public User(String username, String password,String role) { super(username, password,role); }}
UserDAO.java
package vo;import java.util.Iterator;import java.util.List;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.Transaction;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import util.HibernateSessionFactory;/** * A data access object (DAO) providing persistence and search support for User * entities. Transaction control of the save(), update() and delete() operations * can directly support Spring container-managed transactions or they can be * augmented to handle user-managed Spring transactions. Each of these methods * provides additional information for how to configure it for the desired type * of transaction control. * * @see vo.User * @author MyEclipse Persistence Tools */public class UserDAO extends BaseHibernateDAO { private static final Logger log = LoggerFactory.getLogger(UserDAO.class); // property constants public static final String USERNAME = "username"; public static final String PASSWORD = "password"; /** * @param username * @return 检查用户名是否存在 */ public User selectRegist(String username){ try{ Session session=getSession(); Query query=session.createQuery("from User where username=?"); query.setParameter(1, username); List list=query.list(); User user = null; Iterator it=list.iterator(); while(it.hasNext()){ user=(User)it.next(); System.out.println(user.getUsername()); } return user; }catch(Exception e){ e.printStackTrace(); return null; } } /** * @param username * @param password * @return 登陆检查用户名和密码,确认身份 */ public User LoginCheck(String username,String password,String role){ System.out.println("this is LoginCheck method !"); log.debug("LoginChecking User instance"); try { Session session = getSession(); /*Transaction tran = session.beginTransaction();*/ Query queryObject = session.createQuery("from User where username=? and password=? and role=?"); System.out.println("pass1"); queryObject.setString(0, username); queryObject.setString(1,password); queryObject.setString(2, role); List list=queryObject.list(); /*tran.commit();*/ System.out.println("pass2"); User user = null; Iterator it=list.iterator(); while(it.hasNext()){ user=(User)it.next(); //System.out.println(user.getUsername()); } return user; } catch (RuntimeException re) { log.error("find by property name failed", re); throw re; } } /** * @param user * 进行注册,向数据库插入数据 */ public void saveRegist(User user){ Session session = null ; Transaction tx=null; try{ session = getSession(); tx=session.beginTransaction(); session.save(user); tx.commit(); }catch(Exception e){ e.printStackTrace(); System.out.println("提交数据出错了"); if(tx!=null)tx.rollback(); }finally{ session.close(); } }}
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"><!-- Mapping file autogenerated by MyEclipse Persistence Tools--><hibernate-mapping> <class name="vo.User" table="user" catalog="bookmanage"> <id name="id" type="java.lang.Integer"> <column name="Id" /> <generator class="identity" /> </id> <property name="username" type="java.lang.String"> <column name="username" not-null="true" /> </property> <property name="password" type="java.lang.String"> <column name="password" not-null="true" /> </property> <property name="role" type="java.lang.String"> <column name="role" not-null="true" /> </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"><!-- Generated by MyEclipse Hibernate Tools. --><hibernate-configuration> <session-factory> <property name="dialect"> org.hibernate.dialect.MySQLDialect </property> <property name="connection.url"> jdbc:mysql://localhost:3306/bookManage </property> <property name="connection.username">root</property> <property name="connection.password">1011</property> <property name="connection.driver_class"> com.mysql.jdbc.Driver </property> <property name="myeclipse.connection.profile"> bookDriver </property> <mapping resource="vo/User.hbm.xml" /> </session-factory></hibernate-configuration>
struts.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts><package name="mypackage" extends="struts-default" namespace="/"><action name="login" class="action.LoginAction"> <result name="success">/success.jsp</result> <result name="error">/error.jsp</result> <result name="admin">/admin.jsp</result> <result name="input">/index.jsp</result></action><action name="regist" class="action.RegistAction"> <result name="success">/success.jsp</result> <result name="error">/error.jsp</result> <result name="input">/regist.jsp</result></action></package></struts>
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@taglib prefix="s" uri="/struts-tags"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>login</title> </head> <body> <s:form action="login" method="post"> <s:radio list="#{'1':'admin','0':'user' }" name="user.role" label="role" value="0" /> <s:textfield name="user.username" label="用户名"/> <s:password name="user.password" label="密码"/> <s:submit value="登陆"/> <a name="regist" id="loginRegist" href="regist.jsp">regist</a> </s:form> </body></html>
regist.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@taglib prefix="s" uri="/struts-tags"%><html> <head> <title>regist</title> </head> <body> <s:form action="regist"> <s:textfield name="user.username" label="用户名"/> <s:password name="user.password" label="密码"/> <s:password name="repassword" label="确认密码"/> <s:submit value="注册"/> </s:form> </body></html>
需要注意的是引入myeclipse自带的struts2和hibernate时,antlr-2.7.7.jar包重复,运行时会报错,本例的用法是直接将struts2的类库导出去,将struts用到的几个jar包铐入工程,放置在/linda/WebRoot/WEB-INF/lib目录下。(如果没有不清楚如何配置struts和hibernate,可以看一下这篇博客:http://blog.csdn.net/weixin_36380516/article/details/53822344)
2 0
- Struts2和hibernate框架整合实现简单的注册登陆功能
- 基于Struts2和Android的简单登陆注册功能的设计与实现(待完善)
- Spring3整合Struts2+Hibernate 实现注册、数据库验证登陆
- struts2+hibernate4实现简单的注册登陆
- SSM框架整合---实现简单登录注册功能
- Eclipse+struts2+spring整合实现登陆功能
- 运用struts2框架实现登陆注册
- Struts2+Mybatis整合实现注册登录功能
- SpringBoot实现简单的注册与登陆功能
- Struts2 简单的登陆功能
- JAVA简单链接Oracle数据库,实现注册和登陆的功能
- Android 实现简单的登陆注册功能(SharedPreferences和SQLite)
- 整合开发Struts2,Hibernate,Spring简单框架的搭建详解
- 用Maven整合SpringMVC+Spring+Hibernate 框架,实现简单的插入数据库数据功能
- 用Maven整合SpringMVC+Spring+Hibernate 框架,实现简单的插入数据库数据功能(二)
- 用Maven整合SpringMVC+Spring+Hibernate 框架,实现简单的插入数据库数据功能
- 用Maven整合SpringMVC+Spring+Hibernate 框架,实现简单的插入数据库数据功能
- Struts2 + Hibernate实现用户登陆功能
- Computer Vision Foundation open access
- 如何实现响应式布局(转载于sunflower627的博客)
- Java笔记 - 集合框架(LinkedList)
- 部署kubernetes集群
- -Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable
- Struts2和hibernate框架整合实现简单的注册登陆功能
- springmvc注解整理
- 2 Gradle学习总结——抓重点学Gradle
- 算法学习之动态规划(leetcode 72. Edit Distance)
- spring cloud 全套演示框架后期还会添加mq以及bus等一系列整合
- Activity详解Activity的使用步骤、生命周期及其启动模式、启动方法
- 构造方法、类的初始化块以及类字段的初始化顺序
- 第7章 在项目开始之前
- <Android>打造自己的可双击放大、多指缩放、放大等功能的ImageView