• 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="true" />
        <constant name="struts.devMode" value="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;
    
    @Entity
    public 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="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>


     

  • 相关阅读:
    【WEBAPI】Passing multiple POST parameters to Web API Controller Methods
    【WEBAPI】常用参数传递方法总结
    JavaScript面向对象静态方法私有方法公有方法特权方法
    javascript 封装
    javascript 获取 浏览器body高宽
    Fiddler 教程
    预加载下一张图片
    div页面居中
    关于模块化加载
    chrome本地不能操作iframe
  • 原文地址:https://www.cnblogs.com/tianhao/p/4029712.html
Copyright © 2020-2023  润新知