- 浏览: 38640 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
qian3313:
好!非常好!
hibernate中lazy="false"理解 -
雪韧梅:
...
hibernate和struts2心得 -
xycdgc:
是啊,在自学struts,书上的一个例子,自己尝试着敲了下, ...
struts2+hibernate实现简单登录与注册 -
pweffort:
看到好熟悉哦.
struts2+hibernate实现简单登录与注册
最近在自学ssh,以前开发一直用的普通的MVC模式进行开发的,接触了这几个框架后感触很多,学着做了一个简单的登录注册的模块,运用的是struts2和hibernate来实现的。
1.(1)首先,运用了struts2提供的标签,struts2总共提供的标签大体有三类,一种是逻辑控制类标签:if elseif等,一种是表单的标签,这类事最常用的,最后就是非表单的标签如div等等。
(2)创建需要的jsp页面:
1>index.jsp
其中,action指向了对应action的定义,而在以前的项目当中,我们会将此定义为所要post或get的servlet上,这个表单在提交的时候是可以进行验证的,并且如果验证不通过,还可以显示出相应的message信息。
2>register.jsp注册页面:
3>success.jsp成功页面
2.(1)创建模型组件
因为需要通过hibernate连接数据库持久层。引入DAO(Data Access Object数据访问对象),是一种抽象了数据源,并提供对数据源的透明访问的设计。下面定义UserDAO接口,使用Hibernate访问数据库用户数据的连接访问实现。
IUserDAO.java
(2)User.java
(3)对接口的实做UserDAOHibernate.java
(4)User.hbm.xml
(5)Hibernate.cfg.xml
3.创建控制器的组件
(1)首先配置struts.xml中的Action映射
(2)控制类LoginAction.java
(3)控制类RegisterAction.java
(4)对登录以及注册的验证:
1>LoginAction-validation.xml
2>RegisterAction-validation.xml
4.做到这里,下一步应该是引入拦截器。struts2提供了AOP的实现,拦截器在调用Action前后调用,拦截器有很多的好处和功能,比较常见的有计算action的运行时间、禁止用户将表单重复提交,还有就是如果知道了一个URL,在没有登录(也就是httpsession为空的时候不能让其进入页面,直接跳转到登录页面等等),在以后,我会将这个功能加上,使登录的模块更加的完整!
看到好熟悉哦.
1.(1)首先,运用了struts2提供的标签,struts2总共提供的标签大体有三类,一种是逻辑控制类标签:if elseif等,一种是表单的标签,这类事最常用的,最后就是非表单的标签如div等等。
(2)创建需要的jsp页面:
1>index.jsp
<%@ page contentType="text/html;charset=GB2312"%> <%@ taglib prefix="s" uri="/struts-tags"%> <html> <head> <title>登录</title> </head> <body> <s:actionerror/> <s:property value="message"/> <a href="register.jsp">注册</a> <hr/> 请您登录: <s:form validate="true" action="Login" > <s:textfield name="username" label="用户名"/> <s:password name="password" label="密码"/> <s:submit value="提交"/> </s:form> <hr/> </body> </html>
其中,action指向了对应action的定义,而在以前的项目当中,我们会将此定义为所要post或get的servlet上,这个表单在提交的时候是可以进行验证的,并且如果验证不通过,还可以显示出相应的message信息。
2>register.jsp注册页面:
<%@ page contentType="text/html;charset=GB2312"%> <%@ taglib prefix="s" uri="/struts-tags"%> <html> <head> <title> 注册 </title> </head> <body> <s:property value="message"/> <a href="index.jsp">返回登录</a> <hr/> 请您注册: <div style="color:red;"> <s:fielderror/> <s:actionerror/> </div> <s:form action="Register" validate="true"> <s:textfield name="username" label="用户名"/> <s:password name="password" label="密码"/> <s:submit value="提交"/> </s:form> <hr/> </body> </html>
3>success.jsp成功页面
<%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib prefix="s" uri="/struts-tags" %> <s:property value="message"/> 欢迎
2.(1)创建模型组件
因为需要通过hibernate连接数据库持久层。引入DAO(Data Access Object数据访问对象),是一种抽象了数据源,并提供对数据源的透明访问的设计。下面定义UserDAO接口,使用Hibernate访问数据库用户数据的连接访问实现。
IUserDAO.java
package dao; import dao.hibernate.User; public interface IUserDAO{ boolean isValidUser(String username,String password); User save(User transientInstance); }
(2)User.java
package dao.hibernate; public class User { private int id; private String username; private String password; public int getId() { return id; } public void setId(int 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; } }
(3)对接口的实做UserDAOHibernate.java
package dao.hibernate; import java.io.File; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.*; import org.hibernate.cfg.*; import dao.IUserDAO; import dao.hibernate.User; public class UserDAOHibernate implements IUserDAO { private static final Log log = LogFactory.getLog(UserDAOHibernate.class); SessionFactory sf = new Configuration().configure( new File("E:\\web\\struts_login\\src\\hibernate.cfg.xml")) .buildSessionFactory(); public boolean isValidUser(String name, String password) { log.debug("in UserDAO IsValid"); try { Session session = sf.openSession(); String hql = "from User as u where u.username=? and u.password=?"; Query query = session.createQuery(hql); query.setString(0, name); query.setString(1, password); List userList = query.list(); if (userList.size() > 0) { session.close(); return true; } session.close(); return false; } catch (RuntimeException e) { log.error("isValidUser failed", e); throw e; } } public User save(User transientInstance) { log.debug("saving user instance"); Session session = sf.openSession(); Transaction tran = session.beginTransaction(); try { if (findByName(transientInstance.getUsername()) > 0) { return null; } session.save(transientInstance); session.flush(); tran.commit(); log.debug("save successful"); session.close(); return transientInstance; } catch (RuntimeException e) { tran.rollback(); log.error("save failed", e); throw e; } } public int findByName(String name) { Session session = sf.openSession(); String hql = "from User as u where u.username=?"; Query query = session.createQuery(hql); query.setParameter(0, name); List userlist = query.list(); if (userlist.size() > 0) { return 1; } return 0; } }
(4)User.hbm.xml
<?xml version="1.0" encoding="GB2312"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "Http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="dao.hibernate.User" table="myusertable"> <id name="id" type="integer"> <column name="id"/> <generator class="native"> </generator> </id> <property name="username" type="string"> <column name="username" length="50" not-null="false"/> </property> <property name="password" type="string"> <column name="password" length="50" not-null="false"/> </property> </class> </hibernate-mapping>
(5)Hibernate.cfg.xml
<?xml version="1.0" encoding="GB2312"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "Http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="connection.driver_class">com.microsoft.jdbc.sqlserver.SQLServerDriver</property> <property name="connection.url">jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mypro</property> <property name="connection.username">sa</property> <property name="connection.password">sa</property> <property name="connection.pool_size">1</property> <property name="dialect">org.hibernate.dialect.SQLServerDialect </property> <property name="current_session_context_class">thread</property> <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> <mapping resource="dao/hibernate/User.hbm.xml"/> </session-factory> </hibernate-configuration>
3.创建控制器的组件
(1)首先配置struts.xml中的Action映射
<?xml version="1.0" encoding="GB2312"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <include file="struts-default.xml"/> <package name="struts2" extends="struts-default"> <global-results> <result name="login" type="redirect">index.jsp</result> </global-results> <action name="Login" class="struts2.LoginAction"> <result name="input">index.jsp</result> <result name="success">success.jsp</result> </action> <action name="Register" class="struts2.RegisterAction"> <result name="input">register.jsp</result> <result name="success">index.jsp</result> </action> </package> </struts>
(2)控制类LoginAction.java
package struts2; import dao.IUserDAO; import dao.hibernate.UserDAOHibernate; public class LoginAction { private String username; private String password; IUserDAO userDAO=new UserDAOHibernate(); 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 execute()throws Exception{ if(isInvalid(username,password)){ return "success"; }else{ return "input"; } } private boolean isInvalid(String username,String password){ return userDAO.isValidUser(username, password); } }
(3)控制类RegisterAction.java
package struts2; import dao.IUserDAO; import dao.hibernate.User; import dao.hibernate.UserDAOHibernate; public class RegisterAction { private String username; private String password; private String confirmpassword; private String message; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } 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 getConfirmpassword() { return confirmpassword; } public void setConfirmpassword(String confirmpassword) { this.confirmpassword = confirmpassword; } IUserDAO userDAO=new UserDAOHibernate(); public String execute() throws Exception{ User user=new User(); user.setUsername(username); user.setPassword(password); if(userDAO.save(user)==null){ message="你好,用户名:"+username+"已经注册,请重新选择用户名!"; return "input"; } message="注册成功!"; return "success"; } }
(4)对登录以及注册的验证:
1>LoginAction-validation.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> <validators> <field name="username"> <field-validator type="requiredstring"> <message>请输入用户名!</message> </field-validator> </field> <field name="password"> <field-validator type="requiredstring"> <message>请输入密码!</message> </field-validator> <!--限制字符串长短验证--> <field-validator type="stringlength"> <param name="trim">true</param> <param name="minLength">4</param> <param name="maxLength">10</param> <message>请设置4-10位长度的密码!</message> </field-validator> </field> </validators>
2>RegisterAction-validation.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> <validators> <field name="username"> <field-validator type="requiredstring"> <message>请输入用户名!</message><!--出错提示信息--> </field-validator> </field> <field name="password"> <field-validator type="requiredstring"> <message>请输入密码!</message><!--出错提示信息--> </field-validator> <!--限制字符串长短验证--> <field-validator type="stringlength"> <param name="trim">true</param><!--是否去除空格--> <param name="minLength">4</param><!--最小长度--> <param name="maxLength">10</param><!--最大长度--> <message>请设置4-10位长度的密码!</message><!--出错提示信息--> </field-validator> </field> <validators>
4.做到这里,下一步应该是引入拦截器。struts2提供了AOP的实现,拦截器在调用Action前后调用,拦截器有很多的好处和功能,比较常见的有计算action的运行时间、禁止用户将表单重复提交,还有就是如果知道了一个URL,在没有登录(也就是httpsession为空的时候不能让其进入页面,直接跳转到登录页面等等),在以后,我会将这个功能加上,使登录的模块更加的完整!
评论
2 楼
xycdgc
2010-04-29
是啊,在自学struts,书上的一个例子,自己尝试着敲了下,改正了书上的一些问题,你是第一个给我评论的呢 谢谢你!
1 楼
pweffort
2010-04-29
看到好熟悉哦.
发表评论
-
hibernate和struts2心得
2010-12-02 17:52 7191.hibernate中 load和get参数一样,完成功能一 ... -
hibernate中lazy="false"理解
2010-11-29 17:32 900今天看到了别人的回答感觉讲解不错,分享下: hiberna ... -
一个计算表达式的
2010-05-17 17:05 678老师留了个小作业,做一个能够算表达式的,要求是用截取字 ... -
Spring的一些概念2
2010-05-07 00:34 616继续学习Spring中,Spring对服务的支持是蛮强 ... -
Spring的第二个程序
2010-05-06 20:01 925今天写了一下Spring ... -
Spring的第一个程序
2010-05-06 01:26 645今天写了第一个Spring的小程序,体验了一下它的特性 ... -
Spring的一些概念1
2010-05-05 00:00 625今天开始进阶到Spring,Spring框架中有不少的概 ... -
扑克牌程序
2010-04-28 23:09 885经常遇到这个问题,自己做了一下,随机发52张牌,分给4 ... -
使用Hibernate进行数据查询却清除了数据库对应表的内容
2010-04-19 22:09 908这些天,在运用Hibernate框架的时候,出现了一个问题,我 ... -
HTTP Status 404 There is no Action mapped for namespace / and action name
2010-04-17 22:56 1942在首次进行struts的开发中,初学者经常会遇到HTT ... -
struts2 简单配置
2010-04-14 17:16 654Struts2 是Apache下的一个开源在view层中 ... -
Hibernate 接口和配置文件
2010-04-12 23:58 530Hibernate核心接口位于业务层和持久化层,核心接口总共有 ... -
hibernate对数据库连接方言
2010-04-12 00:43 809今天在编程的过程中,配置hibernate的xml文件的 ... -
连接池技术
2010-02-02 22:11 825java在操作数据库时,用到的是jdbc,在操作数据库时引 ... -
在myeclipse下启动报错的问题
2010-02-02 18:58 1783以前一直是用eclipse来做web的开发,这个学期换了 ...
相关推荐
struts2+hibernate+mysql实现简单的注册和登录,适合新手
这是本人用hibernate+struts2做的一个登录注册的小例子,里面包含分页查询,hiberante的多种技术!
struts2 + spring 3 + hibernate3.3整合实现图书馆管理系统登陆和注册,以及一个对书籍表的增删改查,分页显示。
基于Struts2+Spring+Hibernate+MySql的注册登录系统 SSH实例 入门实例 Java EE简单实现例子
AJAX实现用户登录注册(Struts+Spring+Hibernate+Ajax框架) AJAX实现用户登录注册(Struts+Spring+Hibernate+Ajax框架) AJAX实现用户登录注册(Struts+Spring+Hibernate+Ajax框架)
相对简单的struts2+hibernate登陆注册,包含数据库和文档,欢迎初学者下载学习。
简单使用struts2,Hibernate 3实现注册模块 另外使用token方式防止表单重复提交 使用hbm2ddl.auto,透过pojo产生数据库表
最简单的Spring+Struts2+Hibernate整合例子,MySql数据库,IDE是JavaEE版的Eclipse,tomcat7.0 ,实现功能:登录+注册+增删改查+一键清空数据库表的数据。所有jar文件都在里面了。
简单地Struts2+hibernate的整合,包含了基本的增删改查,另外写了个登录和注册。可以试试,适合框架初学者。简单 jar包齐全。
使用java ssh框架(struts2+hibernate+spring)开发的简易电子商城系统,有用户登录注册功能、商城购物功能,有前端页面,开发环境:编译器为eclipse,数据库为mysql5.7(mysql8.0用不了,需要重新修改配置文件),...
MySQL数据库,完整备份
1.需要完成的任务 :基于Struts2+Hibernate,设计一个简单的网上名片管理系统,实现名片的增、删、改、查等操作。 (1) 户登录与注册 用户登录:登录时,如果用户名和密码正确,进入系统主页面; 用户注册:新...
一个简单的struts+spring+hibernate整合实现用户注册的例子,我花了一个下午整出来的,希望对想学习的同志有所帮助。 mysql sql文: DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `password` varchar(32) ...
代码可导入myeclipse 或者是eclipse中直接云新 功能:简单的身份认证系统 JSP+struts+hibernate+mysql5.x 开发平台myeclipse 6.0 GA 数据库mysql 5.x 数据库名 test 表名 logic
使用Struts+Hibernate实现对班级-学员管理系统。需要先登录,登录成功跳转到所有信息页面。失败跳转到失败页面。
Struts2+Spring3+Hibernate3框架整合AJAX+JQuery实现登录、注册以及验证码和验证注册用户的用户名唯一性 代码简单易懂且肯定正确,有丰富的注释肯定能看明白,本来不想设资源分,但是看到凡是上传代码的都设了资源分...
项目解压,导入myeclipse即可,数据库的sql已放在包中
1.需要完成的任务 :基于Struts2+Hibernate,设计一个简单的网上名片管理系统,实现名片的增、删、改、查等操作。 (1) 户登录与注册 用户登录:登录时,如果用户名和密码正确,进入系统主页面; 用户注册:新...
Struts + Spring + Hibernate完成用户登陆
SSH 框架集成,实现 简单的用户登陆和注册功能(内涵相关jar包 Sping4.1+Struts2.3+Hibernate4.3+MySQL驱动5.1).适合初学SSH框架的学者,供参考和学习。 注:内不包含MySQL数据库的相关表,建议运行环境在JDK 1.7...