您的位置:首页 > 编程语言 > Java开发

使用Struts2+Hibernate(HQL)添加数据、查询数据

2017-05-09 20:50 288 查看

使用Struts2+Hibernate(HQL)添加数据、查询数据

1、添加Struts2、Hibernate架构jar包

2、修改web.xml文件,添加Struts2支持

3、添加Hibernate持久化类与所需要的set、get方法及其映射文件

package com.hibernate.lab11.po;
/**
* @author  李芝成
* @date 创建时间:2017年5月9日 下午1:59:29
* @version 1.0
* 项目名:SSHlab11
* 包名:com.hibernate.lab11.po
* 描述:
*/
public class Register {
private Integer id;
private String username;
private String password;
public Integer getId() {
return id;
}
public void setId(Integer 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;
}
}


<?xml version="1.0" encoding="UTF-8"?>
<!-- Hibernate映射文化 -->
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.hibernate.lab11.po">
<class name="Register" table="lab11_register">
<id column="id" name="id" type="java.lang.Integer">
<generator class="native"/>
</id>
<property name="username" length="20" not-null="true"/>
<property name="password" length="20" not-null="true"/>
</class>
</hibernate-mapping>


4、创建工具类,获取Session对象

package com.sise.hibernate.util;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

/**
* @author  李芝成
* @date 创建时间:2017年4月11日 下午2:39:02
* @version 1.0
* 项目名:SSHlab07
* 包名:com.sise.hibernate.util
* 描述:
*/
public class HibernateUtil {
private static SessionFactory factory;//
static {
try {
//读取hibernate.cfg.xml文件
Configuration cfg = new Configuration().configure();
//建立SessionFactory
factory = cfg.buildSessionFactory();
}catch(Exception e) {
e.printStackTrace();
}
}
public static Session getSession() {
return factory.openSession();  //创建对象session
}
public static void closeSession(Session session) {
if (session != null) {
if (session.isOpen()) {
session.close();
}
}
}
public static SessionFactory getSessionFactory() {
return factory;
}
}


5、创建Dao接口add()与findAll()方法及其调用Dao的业务方法

package com.hibernate.lab11.dao;

import java.util.List;

import com.hibernate.lab11.po.Register;

/**
* @author  李芝成
* @
4000
date 创建时间:2017年5月9日 下午2:05:10
* @version 1.0
* 项目名:SSHlab11
* 包名:com.hibernate.lab11.dao
* 描述:
*/
public interface HibernateDao {
public void addRegister(Register register);//添加Register方法
public List<Register> findAllRegister();//查找所有Register方法
}


package com.hibernate.lab11.dao.impl;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

import com.hibernate.lab11.dao.HibernateDao;
import com.hibernate.lab11.po.Register;
import com.sise.hibernate.util.HibernateUtil;

/**
* @author  李芝成
* @date 创建时间:2017年5月9日 下午2:08:04
* @version 1.0
* 项目名:SSHlab11
* 包名:com.hibernate.lab11.dao.impl
* 描述:
*/
public class HibernateDaoBean implements HibernateDao{
public void addRegister(Register register) {
Session session=HibernateUtil.getSession();
Transaction tx=session.beginTransaction();
try {
session.persist(register);//把Register数据写入数据库
tx.commit();//提交
} catch (Exception e) {
if (session!=null)tx.rollback(); {
e.printStackTrace();
}
}
}
public List<Register> findAllRegister() {
Session session=HibernateUtil.getSession();
Transaction tx=session.beginTransaction();
Query query=session.createQuery("from Register");//创建HQL查询语句
List<Register> registers=query.list();//获取所有Register数据存储到list中
tx.commit();
return registers;
}
}


6、创建Hibernate.cfg.xml文件,并建立数据库与持久化类映射文件的连接

7、Struts2部分:创建动作类,在其中调用DAO中的业务方法

package com.hibernate.lab11.action;

import java.util.List;

import com.hibernate.lab11.dao.HibernateDao;
import com.hibernate.lab11.dao.impl.HibernateDaoBean;
import com.hibernate.lab11.po.Register;
import com.opensymphony.xwork2.ActionSupport;

/**
* @author  李芝成
* @date 创建时间:2017年5月9日 下午2:28:54
* @version 1.0
* 项目名:SSHlab11
* 包名:com.hibernate.lab11.action
* 描述:
*/
public class RegisterAction extends ActionSupport{
private String username;
private String password1;
private String password2;
private List<Register> registers;//存储Register对象的list
private HibernateDao dao;//初始化HibernateDao接口
private Register register;
public RegisterAction(){
dao=new HibernateDaoBean();//创建Dao对象
register=new Register();//创建Register对象
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword1() {
return password1;
}
public void setPassword1(String password1) {
this.password1 = password1;
}
public String getPassword2() {
return password2;
}
public void setPassword2(String password2) {
this.password2 = password2;
}
public List<Register> getRegisters() {
return registers;
}
public void validateInsertRegister(){
if (!password1.equals(password2)) {
this.addFieldError("password2", "确定密码和密码不一致,请重新输入");//两次密码提示
}
}
public String insertRegister()throws Exception{
register.setUsername(username);//set数据提交到dao层
register.setPassword(password1);//set数据提交到dao层
dao.addRegister(register);
return SUCCESS;
}
public String listRegister()throws Exception{
registers=dao.findAllRegister();//查询数据存储到list中
return SUCCESS;
}

}


8、编写struts.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.il8n.encoding" value="utf-8"/>
<package name="SSHlab11" extends="struts-default">
<action name="registerAction" class="com.hibernate.lab11.action.RegisterAction" method="insertRegister">
<result name="success">/success.jsp</result>
<result name="input">/register.jsp</result>
</action>
<action name="listRegister" class="com.hibernate.lab11.action.RegisterAction" method="listRegister">
<result name="success">/findAllRegister.jsp</result>
</action>
</package>
</struts>


9、编写客户端JSP文件调用action

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>首页</title>
</head>
<body>
<a href="listRegister.action">显示所有注册用户</a>
<br/><br/>
<a href="register.jsp">注册</a>
</body>
</html>


register.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>注册页面</title>
</head>
<body>
<s:form action="registerAction">
<s:textfield name="username" label="用户名"/>
<s:password name="password1" label="密码"/>
<s:password name="password2" label="确定密码"/>
<s:submit value="注册"/>
</s:form>
</body>
</html>


findAllRegister.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>显示所有注册用户信息</title>
</head>
<body>
<table border="1" width="39%">
<tr style="background-color:#bbb666">
<th width="50%">用户名</th>
<th width="50%">密码</th>
</tr>
<s:iterator value="registers">
<tr>
<td><s:property value="username"/></td>
<td><s:property value="password"/></td>
</tr>
</s:iterator>
</table>
</body>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: