使用Struts2+Hibernate(HQL)添加数据、查询数据
来源:互联网 发布:田馥甄唱功 知乎 编辑:程序博客网 时间:2024/06/05 03:18
使用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 李芝成* @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>
1 0
- 使用Struts2+Hibernate(HQL)添加数据、查询数据
- Hibernate(3)-使用HQL语句进行数据查询
- HQL数据查询(Hibernate推荐)
- Hibernate HQL 查询Set数据
- 【SSH】使用HQL查询数据
- Hibernate——HQL数据查询
- Hibernate中使用HQL语句删除数据
- hibernate使用hql 查询
- HQL数据查询基础
- HQL数据查询基础
- HQL数据查询
- HQL数据查询基础
- Hql数据查询基础
- HQL数据查询
- HQL数据查询基础
- HQL数据查询
- HQL数据查询基础
- hibernate使用createQuery(hql)语句仅查询部分字段,应如何获得数据
- WebStudy03_HTML5+CSS3
- CodeForces 768C Jon Snow and his Favourite Number 暴力 空间换时间
- k8s kubernetes 高可用https and http集群实战 HA
- WebStudy04_AngularJS
- 使用Java Socket实现简单的聊天功能
- 使用Struts2+Hibernate(HQL)添加数据、查询数据
- 【深度学习】RNN的梯度消失/爆炸与正交初始化
- WebStudy05_移动端+less+bootstrap+zepto
- VR系列——Oculus Rift 介绍指南:七、使用演示场景测试Rift
- drbd安装及配置
- closest-number-in-sorted-array
- 2017.5.9 运输计划 失败总结
- 图像处理-图像滤波和卷积的区别(filter、conv)
- 五子棋_Java_控制台窗口_人人对战