使用struts2和hibernate框架,实现一个拥有注册和登录功能的小程序 步骤 1. 使用myeclipce2016创建一个名为struts2_hibernate项目 2. 使用myeclipce自带的功能向该项目构建struts2包和hibernate包, 3. 修改hibernate.cfg.xml,添加show_sql 和update 4. 创建实体类User和相应的映射文件User.hbm.xml 5. 编写DAO层-UserDAO 6. 编写action层-UserAction 7. 配置UserAction于struts.xml 8. 编写JSP页面 实现 总结构图 1. 使用myeclipce2016创建一个名为struts2_hibernate项目 2. 使用myeclipce自带的功能向该项目构建struts2.1包和hibernate3.2包, 先删除本身自动的struts2包,添加struts2基本的7个包,如果使用本身的struts2包,会报错 3. 修改hibernate.cfg.xml,添加show_sql 和update 代码
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <!-- Generated by MyEclipse Hibernate Tools. --> <hibernate-configuration> <session-factory> <property name="myeclipse.connection.profile">mysql</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="connection.password">123456</property> <property name="connection.username">root</property> <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> //添加这2个语句 <property name="show_sql">true</property> <property name="hibernate.hbm2ddl.auto">update</property> //映射文件 <mapping resource="com/hbm/User.hbm.xml"/> </session-factory> </hibernate-configuration>4.创建实体类User和相应的映射文件User.hbm.xml 4.1实体类User
package com.hbm; public class User { private Integer id; private String name; private String password; public void setName(String nString){ this.name=nString; } public String getName() { return name; } public void setPassword(String password) { this.password = password; } public String getPassword() { return password; } public void setId(Integer id) { this.id = id; } public Integer getId() { return id; } }4.2映射文件User.hbm.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- 产品信息字段配置信息 --> <hibernate-mapping> <!-- name 表示引用的包的类,tabel表示名为hibernate的数据库里面的一张表,名user --> <class name="com.hbm.User" table="user"> <id name="id" column="id" type="int"> <generator class="native"></generator> </id> <property name="name" type="string"> <column name="name"></column> </property> <property name="password" type="string"> <column name="password"></column> </property> </class> </hibernate-mapping>4.3在hibernate.cfg.xml中配置该User.hbm.xml 语句: <mapping resource="com/hbm/User.hbm.xml"/> 5. 编写DAO层-UserDAO 5.1先创建接口UserDAOImpl 代码
package com.DAO; import com.hbm.User; public interface UserDAOImpl { public boolean login(User user); public String register(String name,String password); } 5.2实现接口UerDAO package com.DAO; import java.util.Iterator; import java.util.List; import org.hibernate.Session; import com.hbm.User; import com.hibernate.HibernateSessionFactory; public class UserDAO implements UserDAOImpl{ @Override //实现登录功能 public boolean login(User user) { // TODO Auto-generated method stub Session session=null; session=HibernateSessionFactory.getSession(); session.beginTransaction(); String sqlString="select u.password from com.hbm.User as u where u.name='"+user.getName()+"'"; //上面语句中的com.hbm.User这个为User该POJO所在位置,不能只写User List list=session.createQuery(sqlString).list(); if (!list.isEmpty()){ Iterator it=list.iterator(); while (it.hasNext()){ String get=(String)it.next(); if (get.equals(user.getPassword())){ HibernateSessionFactory.closeSession(); return true; } } } HibernateSessionFactory.closeSession(); return false; } //实现注册功能 @Override public String register(String name, String password) { // TODO Auto-generated method stub Session session=null; User user=new User(); user.setName(name); user.setPassword(password); try { session=HibernateSessionFactory.getSession(); session.beginTransaction(); session.save(user); session.getTransaction().commit(); } catch (Exception e) { // TODO: handle exception session.getTransaction().rollback(); System.out.println("error in register"); e.printStackTrace(); }finally { HibernateSessionFactory.closeSession(); } return "register"; } }6 编写action层,作用是连接DAO层和JSP层 命名为UserAction
package com.action; import com.DAO.UserDAO; import com.hbm.User; import com.opensymphony.xwork2.ActionSupport; public class UserAction extends ActionSupport{ private String name; private String password; public void setName(String name) { this.name = name; } public String getName() { return name; } public void setPassword(String password) { this.password = password; } public String getPassword() { return password; } //注册功能 public String register()throws Exception{ UserDAO userDAO=new UserDAO(); userDAO.register(name, password); return SUCCESS; } //登录功能 public String login() throws Exception{ User user=new User(); UserDAO userDAO=new UserDAO(); user.setName(name); user.setPassword(password); if (userDAO.login(user)){ return SUCCESS; } return ERROR; } }7 配置UserAction于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="action" extends="struts-default"> <action name="useraction" class="com.action.UserAction"> <result>success.jsp</result> <result name="error">error.jsp</result> </action> </package> </struts>8 编写JSP页面 8.1编写index.jsp,登录界面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Index</title> </head> <body> <form action="useraction!login" method="post"> 用户名:<input type="text" name="name"><br> 密 码:<input type="password" name="password"><br> <input type="submit" value="登录"><br> </form> <a href="register.jsp">注册</a> </bod1y> </html>8.2编写注册界面,register.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>register</title> </head> <body> <form action="useraction!register" method="post"> 用户名:<input type="text" name="name"><br> 密 码:<input type="password" name="password"><br> <input type="submit" value="确定"> </form> <a href="index.jsp">返回</a> </body> </html>8.3编写登录成功界面,success.jpp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Index</title> </head> <body> <form action="useraction!login" method="post"> 用户名:<input type="text" name="name"><br> 密 码:<input type="password" name="password"><br> <input type="submit" value="登录"><br> </form> <a href="register.jsp">注册</a> </bod1y> </html>8.4录错误界面,error.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'error.jsp' starting page</title> </head> <body> 登录错误<br> <a href="index.jsp">返回</a> </body> </html>9.将该项目配置到tomcat中,运行后就可以了