使用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>
相关文章推荐
- Hibernate查询数据的几种方式以及HQL用法及参数的几种使用方法
- hibernate使用createQuery(hql)语句仅查询部分字段,应如何获得数据
- Hibernate(3)-使用HQL语句进行数据查询
- Hibernate学习31 -- Hibernate查询语言(HQL)5 -- 直接使用sql进行查询
- 使用hibernate保存blob大数据,ibatis查询blob大数据
- Hibernate 使用HQL的 in 时要注意判断in的值(list)是否包含数据
- 在Hibernate中使用HQL通过Join进行关联查询
- Hibernate学习36 -- Hibernate查询语言(HQL)10 -- 使用聚集函数查询
- 使用hibernate查询时,查询的数据和数据库的不一样问题
- hibernate HQL left join on 使用及多表连接取不同表(封装类)字段数据显示解决办法
- struts+hibernate+mysql HQL语句查询带中文的查询不出数据的解决方法
- Hibernate使用sql查询出map类型数据
- 使用jpa hql语句查询关联多个表 如何用struts的iterator接受显示数据
- 在hibernate中使用HQL语句和QBC两种方法进行查询
- hibernate 的hql查询语句中使用fetch的注意点
- hibernate中使用new class a(class b,class c)查询数据
- 使用 hibernate 时,如何去除重复项查询出的数据
- Hibernate中使用HQL语句删除数据
- 使用ajax来实现数据的添加删除查询并能操作表格
- 【Hibernate的HQL多表联合查询使用left join方式】