首页 > 代码库 > struts+hibernate 请求数据库增删改查(小项目实例)

struts+hibernate 请求数据库增删改查(小项目实例)

 

StudentAction.java

package com.action;import java.util.ArrayList;import java.util.List;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.ServletActionContext;import org.omg.CORBA.Request;import com.dao.StudentDao;import com.dao.imp.StudentDaoImp;import com.entity.Student;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;public class StudentAction extends ActionSupport{	private StudentDao dao=new StudentDaoImp();	public StudentDao getDao() {		return dao;	}	public void setDao(StudentDao dao) {		this.dao = dao;	}		private int id;	private String name;	private String password;	private String email;	private String sex;	private int age;	private int page=1;	private Student student=new Student();		public int getId() {		return id;	}	public void setId(int id) {		this.id = id;	}	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}	public String getPassword() {		return password;	}	public void setPassword(String password) {		this.password = password;	}	public String getEmail() {		return email;	}	public void setEmail(String email) {		this.email = email;	}	public String getSex() {		return sex;	}	public void setSex(String sex) {		this.sex = sex;	}	public int getAge() {		return age;	}	public void setAge(int age) {		this.age = age;	}	public int getPage() {		return page;	}	public void setPage(int page) {		this.page = page;	}							@Override	public void validate() {		// TODO Auto-generated method stub		if(student.getName()==null||student.getName().trim().equals(""))		{			this.addFieldError("name", "姓名不能为空");		}		if(student.getPassword()==null||student.getPassword().trim().equals(""))		{			this.addFieldError("password", "密码不能为空");		}			}	//重写validate()校验方法			public String findStudents(){		/*耦合方式		 * HttpServletRequest request=ServletActionContext.getRequest();		HttpServletResponse response=ServletActionContext.getResponse();		 */			ActionContext ctx=ActionContext.getContext();		Map request=(Map)ctx.get("request");		//可以直接拿到session		ctx.getSession();		//ctx.getApplication();		List<Student> students=dao.getStudentsByPage("from Student",page);		//存放到request 属性里面返回前台		//page已经在配置成属性  不用set前台也能获得到		request.put("students", students);		//通过拦截器将其放到attribute里		/*耦合方式request.setAttribute("students", students);*/				//request.getSession().getServletContext();可以拿到session 		//servlet中的都可以拿得到		return "findStudents";		}		public String saveStudent(){				student.setId(id);		student.setAge(age);		student.setName(name);		student.setEmail(email);		student.setPassword(password);		student.setSex(sex);		dao.saveStudent(student);		return "saveStudent";	}				public String deleteStudent(){		dao.deleteStudent(id);		return "deleteStudent";			}}

 student.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.enable.DynamicMethodInvocation" value="http://www.mamicode.com/true" />    <constant name="struts.devMode" value="http://www.mamicode.com/false" />      <package name="student" namespace="/student" extends="struts-default">   		<action name="student_*" class="com.action.StudentAction" method="{1}">   			<result name ="saveStudent" type="chain">student_findStudents</result>   			<!-- action之间的跳转    type="chain"-->   			<result name ="deleteStudent" type="chain">student_findStudents</result>   			<result name ="findStudents">/student.jsp</result>   			<result name="input">/student_add.jsp</result>   			<!-- 出现错误返回当前页面 -->	   </action>       </package></struts>

 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>      <include file ="config/student.xml"></include>   </struts>

 student.java

package com.entity;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;@Entitypublic class Student{	@Id	@GeneratedValue(strategy=GenerationType.AUTO)	private int id;	private String name;	private String password;	private String email;	private String sex;			public String getPassword() {		return password;	}	public void setPassword(String password) {		this.password = password;	}	public String getEmail() {		return email;	}	public void setEmail(String email) {		this.email = email;	}	public String getSex() {		return sex;	}	public void setSex(String sex) {		this.sex = sex;	}	public int getId() {		return id;	}	public void setId(int id) {		this.id = id;	}	private int age;	 	public Student() {		super();	}	public Student(String name, int age) {		super();		this.name = name;		this.age = age;	}	public String getName() {		return name;	}	 	public void setName(String name) {		this.name = name;	}	public int getAge() {		return age;	}	public void setAge(int age) {		this.age = age;	}	}

 

studentDao.java

package com.dao;import java.util.List;import com.entity.Student;public interface StudentDao {	public void saveStudent(Student student);	public void deleteStudent(int id);	public List<Student> getStudents(String hql);	public List<Student> getStudentsByPage(String hql,int page) ;}

 

StudentDaoImp.java

package com.dao.imp;import java.util.List;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.Transaction;import com.dao.StudentDao;import com.entity.Student;import com.util.HibernateUtils;public class StudentDaoImp implements StudentDao {	private  int pageSize=10;	@Override	public void saveStudent(Student student) {		// TODO Auto-generated method stub		Session session=HibernateUtils.getSession();		Transaction tx=session.beginTransaction();		session.saveOrUpdate(student);		tx.commit();		HibernateUtils.closeSession(session);	}	@Override	public void deleteStudent(int id) {		// TODO Auto-generated method stub		Session session=HibernateUtils.getSession();		Transaction tx=session.beginTransaction();//		1.session???		Student stu=(Student)session.get(Student.class, id);		session.delete(stu);		//2.????query??????  session.createQurey(delete from Student where id=??)		//q.executeUpdate()		tx.commit();		HibernateUtils.closeSession(session);	}	@Override	public List<Student> getStudents(String hql) {		// TODO Auto-generated method stub		Session session=HibernateUtils.getSession();		Query q=session.createQuery(hql);				return q.list();	}	@Override	public List<Student> getStudentsByPage(String hql,int page) {		// TODO Auto-generated method stub		Session session=HibernateUtils.getSession();		Query q=session.createQuery(hql);		int begin=(page-1)*pageSize+1;		q.setFirstResult(begin-1).setMaxResults(pageSize);		return q.list();	}}

 

 

 

前台页面student.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@taglib prefix="c"  uri="http://java.sun.com/jsp/jstl/core" %><!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title><link href="${pageContext.request.contextPath}/css/bootstrap.css"  type="text/css"  rel="stylesheet"/><script type="text/javascript" src="js/jquery-2.0.3.min.js"></script><script type="text/javascript" src="js/bootstrap.js"></script><style type="text/css">h1,h3,table{margin: 0 auto;text-align: center;}</style> </head><body><h1>学生信息表</h1><table class="table table-striped table-bordered"><tr><td>学号</td><td>姓名</td><td>年龄</td><td>操作</td><c:forEach items="${requestScope.students}" var="student"><tr><td>${student.id }</td><td>${student.name}</td><td>${student.age }</td><td><a href="saveStudentServlet?id=${student.id }">更新</a>&nbsp;&nbsp;<a href="student_deleteStudent?id=${student.id }">删除</a></td></tr></c:forEach></table><h3><span><a href="student_findStudents.action?page=${page-1 }">上一页</a>&nbsp;<a href="student_findStudents.action?page=${page+1 }">下一页</a>&nbsp;当前是第${page }页<%-- a href="student_findStudents.action?page=${page-1 }" --%><!-- student是action name  findstudents是方法 也可以写绝对目录     /项目名称/namespace/actionname.action--></span></h3></body></html>


student_add.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@taglib prefix="c"  uri="http://java.sun.com/jsp/jstl/core" %><%@taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title><link href="${pageContext.request.contextPath}/css/bootstrap.css"  type="text/css"  rel="stylesheet"/><script type="text/javascript" src="js/jquery-2.0.3.min.js"></script><script type="text/javascript" src="js/bootstrap.js"></script><style type="text/css">h1,h3,table{margin: 0 auto;text-align: center;}input{width:200px}</style></head><body><div class="container" style="width:500px;height: 500px"><h1>增加学生信息</h1><form role="form" action="student/student_saveStudent" method="post"> <input type="hidden" value="${stu.id }" name="id"/>  <div class="form-group">    <label for="email">邮箱</label>    <input type="email" class="form-control" value="${stu.email }" name="email" id="email" placeholder="Enter email">  </div>  <div class="form-group">    <label for="name">姓名</label>    <input type="text" class="form-control" name="name" value="${stu.name }" id="name" placeholder="name">  </div>  <div class="form-group">    <label for="password">密码</label>    <input type="password" class="form-control" name="password" value="${stu.password }" id="password" placeholder="Password">  </div>  <div class="form-group">    <label for="age">年龄</label>    <input type="text" class="form-control" id="age" name="age" value="${stu.age }">  </div>  <div class="radio">    <label>      <input type="radio" class="form-control" id="sex" name="sex" value="male"/><input type="radio" class="form-control" id="sex1" name="sex" value="female" checked="checked"/></label>  </div>  <button type="submit" class="btn btn-default">保存</button></form></div></body></html>


 

 

struts+hibernate 请求数据库增删改查(小项目实例)