使用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
原创粉丝点击