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> <a href="student_deleteStudent?id=${student.id }">删除</a></td>
</tr> </c:forEach> </table>
<h3><span><a href="student_findStudents.action?page=${page-1 }">上一页</a>
<a href="student_findStudents.action?page=${page+1 }">下一页</a>
当前是第${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 请求数据库增删改查(小项目实例)的更多相关文章
- go——beego的数据库增删改查
一直都不理解使用go语言的时候,为什么还要自己去装beego,以为使用go便可以解决所有的问题,结果在朋友的点拨下,才意识到: go与beego的关系就好比是nodejs与thinkjs的关系,因此也 ...
- spring--boot数据库增删改查
spring--boot数据库增删改查 数据库配置:(必须配置),我写的文件是yml的,和properties是相同的 1 spring: 2 datasource: 3 driver-class-n ...
- node.js封装数据库增删改查
数据库增删改查的封装 小编不容易 const sql = { insert: function (Collection, insertData) { return new Promise((resol ...
- Python实现mysql数据库增删改查
利用python操作mysql数据库用法简单,环境配置容易,本文将实现对库增.删.改.查的简易封装! 1. 环境配置 安装第三方包 ,导入模块 mysql.connector pip inst ...
- Yii2.0高级框架数据库增删改查的一些操作(转)
yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 --------------------------- ...
- 2. MongoDB基本操作 —— 用Mongo.exe操作数据库增删改查
一.开篇 传统的关系数据库一般由数据库(database).表(table).记录(record)三个层次概念组成,MongoDB是由数据库(database).集合(collection).文档对象 ...
- (转)SQLite数据库增删改查操作
原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数 ...
- Yii2.0高级框架数据库增删改查的一些操作
yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 --------------------------- ...
- WindowsPhone8 数据库增删改查
今天第一次在博客园发表文章,如果有的地方写的不对,还请大家指出! 1.这就是一个简单wp8数据库增删改查 1.创建数据表Person [Table] public class Person : INo ...
随机推荐
- Ubuntu 15.04 设置thin1.6.4作为Rails4.2.5的默认服务器
0. gem install thin //安装1.6.4 1. 进入到Raisl项目的根目录. 2. 在Gemfile中加入一行 gem 'thin' 3. 运行 bundle install 4. ...
- JavaSE学习总结第08天_面向对象3
08.01 工具类中使用静态 例: class ArrayTool { //将构造方法私有,外界不能创建该类的对象 private ArrayTool(){} //遍历数组 public stat ...
- BZOJ 1898: [Zjoi2004]Swamp 沼泽鳄鱼( dp + 矩阵快速幂 )
----------------------------------------------------------------------- #include<cstdio> #incl ...
- Zend Studio 如何配置本地apache服务器使用xdebug调试php脚本
本地环境搭配: apache 2.2 安装位置:D:/program files/Apache Software Foundation/Apache2.2 php 5.2.10 安装位置:C:/php ...
- linux 内核分析之list_head
转自:http://www.cnblogs.com/riky/archive/2006/12/28/606242.html 一.链表数据结构简介 链表是一种常用的组织有序数据的数据结构,它通过指针将一 ...
- openrisc 之 Wishbone总线学习笔记——总线特性
特性: 一,互联方式: 支持点到点.共享总线.十字交叉(Crossbar)和基于交换结构(Switch fabric)的互联. 二,数据操作方式:单次读/写操作.块读/写操作,读改写(RMW,Read ...
- Error Unable to start the Genymotion virtual device.解决
The Genymotion virtual device could not obtain an IP address.For an unknown reason.VirtualBox DHCP h ...
- python 模块BeautifulSoup使用
BeautifulSoup是一个专门用于解析html/xml的库.官网:http://www.crummy.com/software/BeautifulSoup/ 说明,BS有了4.x的版本了.官方说 ...
- 基于visual Studio2013解决C语言竞赛题之0306分数转换
题目 解决代码及点评 根据题目要去,我们可以通过if实现该功能,伪代码如下: if(a > 90) print 'A' else if(a>80) print 'b' else ...
- 包子IT面试培训
包子IT面试培训 IT 面试不再怕,包子帮你圆个梦!