JSP:基于mysql的strust2+hibernate用户管理

程序的运行流程顺序:

由上顺序,浏览器->Action部分为自动运行,但后面Service等接口与前面代码如何关联不大,所以先配置完前面struts、hibernate文件后从后面功能往回写比较方便。

所用的包,类和配置文件

           

新建界面jsp文件

register.jsp,listAll.jsp,getSinglePerson.jsp,updatePerson.jsp,注册,所有用户,查看单个用户,更新页面

register.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
  <body>
   <form action="savePerson.action">
   username:<input type="text" name="username" size="20"><br>
   password:<input type="password" name="password" size="20"><br>
   age:<input type="text" name="age" size="20"><br>
   <input type="submit" value="submit">
   </form>
  </body>
</html>

listAll.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<html>
  <head>
<script type="text/javascript">
function del(){
	if(confirm("确定删除吗?")){
		return true;
	}
	return false;
}
</script>
  </head>
  <body>
   <table width="80%" align="center" border="1">
   <tr>
   <th>username</th>
   <th>password</th>
   <th>age</th>
   <th>registerDate</th>
   <th>update</th>
   <th>delete</th>
   </tr>
   <s:iterator value="#request.list" id="person">
   <tr>
   <td>
   <s:a href="getSinglePerson.action?id=%{#person.id}"><s:property value="username"/></s:a>
   </td>
   <td>
   <s:property value="password"/>
   </td>
  <td>
   <s:property value="age"/>
   </td>
   <td>
   <s:property value="registerDate"/>
   </td>
   <td> <s:a href="toupdatePerson.action?id=%{#person.id}">update</s:a>
   </td>
   <td><s:a href="deletePerson.action?id=%{#person.id}" οnclick="return del();">delete</s:a>
   </td>
   </tr>
   </s:iterator>
   </table>
  </body>
</html>
getSinglePerson.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
  <body>
    username:<s:property value="#request.person.username"></s:property>
  	password:<s:property value="#request.person.password" />
  	age:<s:property value="#request.person.age"/>
  	registerDate:<s:property value="#request.person.registerDate"/>
  </body>
</html>
updatePerson.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
  <body>
    <form action="updatePerson">
    	username:<s:textfield name="username" value="%{#request.person.username}"></s:textfield>
    	password:<s:textfield name="password" value="%{#request.person.password}"></s:textfield>
    	age:<s:textfield name="age" value="%{#request.person.age}"></s:textfield>
    	registerDate:<s:textfield name="registerDate"  value="%{#request.person.registerDate}" readonly="true"></s:textfield>
    	<s:hidden name="id" value="%{#request.person.id}" ></s:hidden>
    	<input type="submit" value="更改" />
    </form>
  </body>
</html>

模型,andy.model.Person.java

package andy.model;
import java.sql.Date;
public class Person {
	//省略get/set方法
	private Integer id;
	private String username;
	private String password;
	private Integer age;
	private Date registerDate;
	}

hibernate配置文件,hibernate.cfg.xml

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>

    <session-factory>
    	<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    	<property name="connection.url">jdbc:mysql://localhost:3306/mydata</property>
    	<property name="connection.username">root</property>
    	<property name="connection.password">123456</property>
    	<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property><!-- org.hibernate.dialect.Oracle11Dialect -->
    	<property name="show_sql">true</property>
    	<property name="hbm2ddl.auto">update</property>
    	<mapping resource="Person.hbm.xml" />
    </session-factory>

</hibernate-configuration>

映射文件Person.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>
<class name="andy.model.Person" table="person">
<id name="id" column="id" type="int">
<generator class="increment"></generator>
</id>
<property name="username" column="username" type="string"></property>
<property name="password" column="password" type="string"></property>
<property name="age" column="age" type="int"></property>
<property name="registerDate" column="registerDate" type="date"></property>
</class>
</hibernate-mapping>

至此,先写后面接口,即是数据库->DAO->Service->Action,这样可以减少程序报错

工具类,andy.util.HibernateUtil.java

package andy.util;

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

public class HibernateUtil {
	private static SessionFactory sessionFactory;
	static {
		try{
			Configuration config=new Configuration().configure();//通过hibernate.hbm.xml获取数据库配置
			sessionFactory = config.buildSessionFactory();//连接数据库
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	public static Session openSession(){
		Session session=sessionFactory.openSession();
		return session;
	}
	public static void close(Session session){
		if(null!=session)
			session.close();
	}
}
DAO的抽象类,andy.dao.PersonDAO.java
package andy.dao;

import java.util.List;

import andy.model.Person;

public interface PersonDAO {
	//DAO层抽象方法定义
	public void savePerson(Person person);
	public List<Person>	listAllPerson();
	public void removePerson(Integer id);
	public Person getSinglePerson(Integer id);
	public void updatePerson(Person person);
}
DAO的实现类,andy.dao.impl.PersonDAOImpl.java
package andy.dao.impl;

import java.util.List;

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

import andy.dao.PersonDAO;
import andy.model.Person;
import andy.util.HibernateUtil;

public class PersonDAOImpl implements PersonDAO {
	//DAO层抽象方法定义
	
	@Override
	public void savePerson(Person person) {
		//保存用户
		//获取session对象及Transaction事务
		Session session=HibernateUtil.openSession();
		Transaction tx=session.beginTransaction();
		try{	//操作数据库进行保存
			session.save(person); 
			tx.commit();
		}catch(Exception e){
			if(null!=tx){
				tx.rollback();//如果操作失败,执行回滚
			}
		}
		finally{
			HibernateUtil.close(session);//操作完数据库关闭连接
		}
	}

	
	@SuppressWarnings("unchecked")
	@Override
	public List<Person> listAllPerson() {
		// 获取所有用户列表信息
		Session session=HibernateUtil.openSession();
		Transaction tx=session.beginTransaction();
		List<Person> list =null;
		try{   
			Query query=session.createQuery("from Person");//Person是类的名字,而不是表的名字
	
			 list=(List<Person>)query.list();
			tx.commit();
		}catch(Exception ex){
			if(null!=tx){
				tx.rollback();
			}
		}
		finally{
			HibernateUtil.close(session);
		}
		return list;
	}

	@Override
	public void removePerson(Integer id) {
		//删除用户
		Session session=HibernateUtil.openSession();
		Transaction tx=session.beginTransaction();
		try{	
			Person person=(Person)session.get(Person.class, id);
			session.delete(person);
			tx.commit();
		}catch(Exception ex){
			if(null!=tx){
				tx.rollback();
			}
				
		}finally{
			HibernateUtil.close(session);
		}
	}

	@Override
	public Person getSinglePerson(Integer id) {
		// 获取单个用户信息
		Session session = HibernateUtil.openSession();
		Transaction tx=session.beginTransaction();
		Person person=null;
		try{
			person =(Person) session.get(Person.class, id);
		}catch(Exception e){
			if(null!=tx)
				tx.rollback();
		}finally{
			session.close();
		}
		return person;
	}

	@Override
	public void updatePerson(Person person) {
		// 更新用户信息
		Session session=HibernateUtil.openSession();
		Transaction tx=session.beginTransaction();
		try{
			session.update(person);
			tx.commit();
		}catch(Exception e){
			if(null!=tx)
				tx.rollback();
		}finally{
			session.close();
		}
	}
}
Service抽象方法,andy.service.PersonService.java
package andy.service;

import java.util.List;

import andy.model.Person;

public interface PersonService {
//Service层抽象方法定义
	public void savePerson(Person person);
	public List<Person> listAllPersons();
	public void removePerson(Integer id);
	public Person getSinglePerson(Integer id);
	public void updatePerson(Person person);
}
Service实现,andu.service.impl.PersonServiceImpl.java
package andy.service.impl;

import java.util.List;

import andy.dao.PersonDAO;
import andy.dao.impl.PersonDAOImpl;
import andy.model.Person;
import andy.service.PersonService;

public class PersonServiceImpl implements PersonService {
//Service抽象方法实现类
	@Override
	public void savePerson(Person person) {
		// TODO Auto-generated method stub
		PersonDAO personDAO = new PersonDAOImpl();
		personDAO.savePerson(person);
	}

	@Override
	public List<Person> listAllPersons() {
		// TODO Auto-generated method stub
		PersonDAO personDAO = new PersonDAOImpl();
		return personDAO.listAllPerson();
	}

	@Override
	public void removePerson(Integer id) {
		// TODO Auto-generated method stub
		PersonDAO personDAO=new PersonDAOImpl();
		System.out.println("获取DAO成功,id为:"+id);
		personDAO.removePerson(id);
	}

	@Override
	public Person getSinglePerson(Integer id) {
		// TODO Auto-generated method stub
		PersonDAO personDAO=new PersonDAOImpl();
		return personDAO.getSinglePerson(id);
	}

	@Override
	public void updatePerson(Person person) {
		// TODO Auto-generated method stub
		PersonDAO personDAO=new PersonDAOImpl();
		personDAO.updatePerson(person);
	}
}
回头写 Action实现Service接口,andy.action.PersonAction.java
package andy.action;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

import andy.model.Person;
import andy.service.PersonService;
import andy.service.impl.PersonServiceImpl;

public class PersonAction extends ActionSupport{
	
	private int id;
	private String username;
	private String password;
	private int age;
	java.sql.Date registerDate;
	
	public java.sql.Date getRegisterDate() {
		return registerDate;
	}
	public void setRegisterDate(java.sql.Date registerDate) {
		this.registerDate = registerDate;
	}
	public int getId() {
		return id;
	}
	public void setId(int 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;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	//用户注册
	public String savePerson() throws Exception{
		PersonService personService=new PersonServiceImpl();
		//获取数据
		Person person =new Person();
		person.setUsername(username);
		person.setPassword(password);
		person.setAge(age);
		registerDate = new java.sql.Date(
				new java.util.Date().getTime());
		person.setRegisterDate(registerDate);
		
		 //保存数据
		personService.savePerson(person);
		//获取数据库所有对象+显示
		List<Person> list = personService.listAllPersons();
						
		HttpServletRequest request = ServletActionContext.getRequest();
		request.setAttribute("list", list);
		return SUCCESS;
	}
	
	//删除用户
	public String deletePerson()throws Exception{
		PersonService personService=new PersonServiceImpl();
		personService.removePerson(id);
		List <Person> list = personService.listAllPersons();
		HttpServletRequest request=ServletActionContext.getRequest();
		request.setAttribute("list", list);
		return SUCCESS;
	}
	
	//获取单个用户信息
	public String getSinglePerson()throws Exception{
		PersonService personService=new PersonServiceImpl();
		//通过传递获得某用户ID从而查询获取用户信息
		Person person=personService.getSinglePerson(id);
		HttpServletRequest request = ServletActionContext.getRequest();
		request.setAttribute("person", person);
		return SUCCESS; 
	}
	
	//更新用户信息   --ID  --registerDate不允许更改
	public String updatePerson()throws Exception{
		PersonService personService=new PersonServiceImpl();
		//获取更新数据
		Person person=personService.getSinglePerson(id);
		person.setUsername(username);
		person.setPassword(password);
		person.setAge(age);
		//更新
		personService.updatePerson(person);
		//返回新列表
		List <Person> list = personService.listAllPersons();
		HttpServletRequest request= ServletActionContext.getRequest();
		request.setAttribute("list", list);
		return SUCCESS;
	}
}
最后 配置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="hibernate" extends="struts-default">
	
	<action name="savePerson" class="andy.action.PersonAction" method="savePerson">
		<result>/listAll.jsp</result>
	</action>
	
	<action name="deletePerson" class="andy.action.PersonAction" method="deletePerson">
		<result>/listAll.jsp</result>
	</action>
	
 	<action name="getSinglePerson" class="andy.action.PersonAction" method="getSinglePerson">
 		<result>/getSinglePerson.jsp</result>
 	</action>
 	
 	<action name="toupdatePerson" class="andy.action.PersonAction" method="getSinglePerson">
 		<result>/updatePerson.jsp</result>
 	</action>
 	
 	<action name="updatePerson" class="andy.action.PersonAction" method="updatePerson">
 		<result>/listAll.jsp</result>
 	</action>

</package>
</struts>    

至此,基于mysql使用struts2+hibernate进行用户管理代码已完成,自己手动实现一下吧~~~



  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值