用Hibernate和Struts2+jsp实现分页查询、修改删除
1.首先用get的方法传递一个页数过去
2.通过Struts2跳转到Action
3.通过request接受主页面index传过的页数,此时页数是1,
然后调用service层的方法获取DAO层分页查询的方法
service
DAO
然后在放回到action层,重新把页数以及list集合里的user对象内容用request写进去,传的下个页面
Struts
接受user对象便利显示在页面
接收页数,并用get方法重写页数进行传递,形成方法链
注意:修改和删除,在重定向action的时候也把页数传递过去
具体代码:
<%@ 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>Insert title here</title>
</head>
<body>
<a href="addUser">添加用户</a> <br><br>
<a href="selectUser?yeshu=1">用户列表</a>
</body>
</html>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"> <struts>
<!-- 覆盖默认的过滤的扩展名 -->
<constant name="struts.action.extension" value="do,action,,"></constant> <!-- 定义包 -->
<package name="text" extends="struts-default" > <action name="addUser">
<result>/WEB-INF/pages/addUser.jsp</result>
</action> <!--保存user -->
<action name="saveUser" class="com.hanqi.action.UserAction" method="saveUser"> <result name="fail">/WEB-INF/pages/fail.jsp</result>
<result name="success">/WEB-INF/pages/success.jsp</result>
</action> <!-- 查询用户/分页 -->
<action name="selectUser" class="com.hanqi.action.UserAction" method="selectUser">
<result name="fail">/WEB-INF/pages/fail.jsp</result>
<result name="success">/WEB-INF/pages/selectUser.jsp</result>
</action> <!-- 删除 -->
<action name="deleteUser" class="com.hanqi.action.UserAction" method="deleteUser">
<result name="fail">/WEB-INF/pages/fail.jsp</result>
<result name="success" type="redirectAction">selectUser?yeshu=1</result>
</action> <!-- 修改 ,跳转到修改页面-->
<action name="updateUser" >
<result>/WEB-INF/pages/updateUser.jsp</result>
<result name="fail">/WEB-INF/pages/fail.jsp</result>
</action>
<!-- 修改输入 -->
<action name="updateUser2" class="com.hanqi.action.UserAction" method="updateUser">
<result name="fail">/WEB-INF/pages/fail.jsp</result>
<result name="success" type="redirectAction">selectUser?yeshu=1</result>
</action> </package> </struts>
package com.hanqi.action; import java.util.List;
import java.util.Map; import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.hanqi.entity.User;
import com.hanqi.service.UserService;
import com.opensymphony.xwork2.ActionContext; public class UserAction { //域模型方式
private User user; public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
} //处理保存user的方法
public String saveUser()
{
String rtn="fail"; System.out.println(user); try
{
//调用业务逻辑层Service(模型层)
User u1 = new UserService().add(user); //使用request转发到下一个页面去
ActionContext ac = ActionContext.getContext();
Map<String, Object> mo = (Map<String, Object>)ac.get("request");
mo.put("user", u1); rtn="success";
}
catch(Exception e)
{
e.printStackTrace();
}
return rtn;
} //查询用户
public String selectUser()
{
String rtn ="fail";
try
{
//调用查询的方法 //得到原生 的request
HttpServletRequest hsr = ServletActionContext.getRequest();
int yeshu = Integer.parseInt(hsr.getParameter("yeshu"));//接收index传过来的yeshu List<User> lu = new UserService().getAll( yeshu); hsr.setAttribute("yeshu", yeshu);//重新添加request传过的页数,改变页码(页码链)
hsr.setAttribute("userlist", lu);
rtn="success";
}
catch(Exception e)
{
e.printStackTrace();
}
return rtn; } //删除用户
public String deleteUser()
{
String rtn ="fail";
try
{
//获取userid
//得到原生 的request
HttpServletRequest hsr = ServletActionContext.getRequest();
String uid = hsr.getParameter("userid");
//执行删除
new UserService().delete(Integer.parseInt(uid)); rtn="success";
}
catch(Exception e)
{
e.printStackTrace();
} return rtn;
} //修改用户 public String updateUser()
{
String rtn ="fail"; try
{ //获取userid
//得到原生 的request
HttpServletRequest hsr = ServletActionContext.getRequest();
String userid = hsr.getParameter("user.userID");//通过request获取页面传过的id //调用业务逻辑层Service(模型层)
int userID = Integer.parseInt(userid) ;//吧页面传过来的userid转换成DAO层的int型进行对应
//System.out.println(userID);
new UserService().update(userID, user); rtn="success";
}
catch(Exception e)
{
e.printStackTrace();
} return rtn;
} //查询单个
public String selectOneUser()
{
String rtn ="fail";
try
{
//调用查询单个的方法
//获取userid
//得到原生 的request
HttpServletRequest hsr = ServletActionContext.getRequest();
String userid = hsr.getParameter("user.userID");
int userID = Integer.parseInt(userid);
//将从用户列表页面获取的id 放入request,目的:为了在修改页面获取当前行的用户id hsr.setAttribute("userid", userID);
new UserService().getOntUser(userID);
rtn="success";
}
catch(Exception e)
{
e.printStackTrace();
} return rtn;
} }
package com.hanqi.service; import java.util.List; import com.hanqi.dao.UserDAO;
import com.hanqi.entity.User; public class UserService { //添加User
public User add(User user)
{
return new UserDAO().insert(user);
} //查询全表
public List<User> getAll(int yeshu)
{
//return new UserDAO().getAll(yeshu);
return new UserDAO().getFen(yeshu);//分页查询
} //删除
public void delete(int userID)
{
new UserDAO().delete(userID);
} //修改
public void update(int userID, User user)
{
new UserDAO().updateUser(userID, user);
}
//查询单个
public User getOntUser(int userID)
{
return new UserDAO().getUser(userID);
}
}
package com.hanqi.dao; import java.util.ArrayList;
import java.util.List; import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry; import com.hanqi.entity.User; public class UserDAO {
private Configuration cfg =null;
private ServiceRegistry sr =null;
private SessionFactory sf =null;
private Session se =null;
private Transaction tr =null;
//构造方法
public UserDAO()
{
//初始化Hibernate
cfg= new Configuration().configure();//获取配置文件
sr= new StandardServiceRegistryBuilder()//注册
.applySettings(cfg.getProperties())
.build();
} //
private void init()
{
sf = cfg.buildSessionFactory(sr);
se =sf.openSession();
tr = se.beginTransaction();
}
private void destory()
{
tr.commit();
se.close();
sf.close();
} //保存user
public User insert(User user)//添加
{ init();
se.save(user);
destory();
return user; } //查询列表
public List<User> getAll(int yeshu)
{
List<User> rtn = new ArrayList<>();
init();
//rtn = se.createQuery("from User").list(); //类名
//设置开始行号;页码=2
//(页码-1)*每页行数
rtn=se.createQuery("from User order by userID").setMaxResults(3)
.setFirstResult((yeshu-1)*2).list();
destory();
return rtn;
} //删除
public void delete(int userID)
{
init();
//获取对象
User u = (User)se.get(User.class, userID);
se.delete(u); destory();
} //修改
public void updateUser(int userID, User user)
{
init();
//获取对象
User u = (User)se.get(User.class, userID);//通过session获取userID的信息
u.setUserId(userID);
u.setUserName(user.getUserName());
u.setMoney(user.getMoney());
u.setBirthday(user.getBirthday()); destory(); }
//查询单条记录
public User getUser (int userID)
{
User rtn = new User();
init();
rtn = (User)se.get(User.class, userID); destory();
return rtn; } //分页查询
public List<User> getFen(int yeshu)
{
init();
List<User> lu = new ArrayList<>();
//设置开始行号;页码=2
//(页码-1)*每页行数
lu=se.createQuery("from User order by userID").setMaxResults(3)
.setFirstResult((yeshu-1)*3).list();
destory();
return lu;
} }
<%@page import="com.hanqi.entity.User"%>
<%@page import="java.util.List"%>
<%@ 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>
<%
//接收action请求的查询方法传过的集合
List<User> lu = (List<User>)request.getAttribute("userlist"); for(User u : lu)
{
out.print(u+"【<a href='updateUser?userid="+u.getUserId()+
"'>修改</a>】"+"【<a href='deleteUser?userid="+u.getUserId()+"'>删除</a>】 <br>");
} %>
<br>
<%
int yeshu = Integer.parseInt(request.getAttribute("yeshu").toString());
if(lu.size()==0)
{
out.print("页码超出范围");
response.setHeader("refresh", "3;url=selectUser?yeshu=1");
}
else
{
%> <a href="selectUser?yeshu=<%=yeshu-1 %> ">上一页</a>
<a href="selectUser?yeshu=<%=yeshu+1 %> ">下一页</a>
<%
}
%>
</body>
</html>
1修改
删除
用Hibernate和Struts2+jsp实现分页查询、修改删除的更多相关文章
- mysql 数据库 添加查询 修改 删除
cmd 命令行模式操作数据库 添加查询 修改 删除 ( 表 字段 数据) 一 查看数据库.表.数据字段.数据 1 首先配置环境变量 进入mysql 或者通过一键集成工具 打开mysql命令行 ...
- Java_Web三大框架之Hibernate+jsp+HQL分页查询
分页查询无处不在.使用Hibernate+jsp+HQL进行分页查询. 第一步:编写房屋实体类和House.hbm.xml映射. /* * 房屋实体类 */ public class House { ...
- jsp+servlet分页查询
分页查询 减少服务器内存开销 提高用户体验 效果图 思绪图 分页显示Bean文件代码 package cn.ytmj.findlist.domain; import java.util.List; / ...
- Struts2与easyui分页查询
easyui里面分页查询:在easyui框架里面已经进行一些分装,所以我们只要进行后台分页查询即可 web.xml和struts.xml文件的配置的就不需要我多说了,和分页前代码一样,不需要更改: 需 ...
- Python全栈day21(作业针对一个文件进行查询修改删除的操作练习)
需求,有一个配置文件test.conf内容如下 backend www1 server 1 server 2 backend www2 server 3 server 4 add [{'backend ...
- cmd 命令行模式操作数据库 添加查询 修改 删除 ( 表 字段 数据)
一 查看数据库.表.数据字段.数据 1 首先配置环境变量 进入mysql 或者通过一键集成工具 打开mysql命令行 或者mysql 可视化工具 打开命令行 进入这样的界面 不同的机器操作不同 ...
- 解决mysql表不能查询修改删除等操作并出现卡死
问题现象1:进程wait卡住 测试环境mysql出现了一个怪表:select查询表卡死,alter修改表卡死,甚至我不想要这个表了,delete.truncate.drop表都卡死卡主了...... ...
- hibernate和struts2实现分页功能
1.DAO层接口的设计,定义一个PersonDAO接口,里面声明了两个方法: public interface PersonDAO { public List<Person> queryB ...
- Hibernate和Struts分页查询
分页查询数据库方法 /** * 分页查询方法 * @param sql,pageNO,maxResult * @return List */ public List<Object> que ...
随机推荐
- Angular2入门系列教程3-多个组件,主从关系
上一篇 Angular2项目初体验-编写自己的第一个组件 好了,前面简单介绍了Angular2的基本开发,并且写了一个非常简单的组件,这篇文章我们将要学会编写多个组件并且有主从关系 现在,假设我们要做 ...
- 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新
[原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...
- 对抗假人 —— 前后端结合的 WAF
前言 之前介绍了一些前后端结合的中间人攻击方案.由于 Web 程序的特殊性,前端脚本的参与能大幅弥补后端的不足,从而达到传统难以实现的效果. 攻防本为一体,既然能用于攻击,类似的思路同样也可用于防御. ...
- 探索ASP.NET MVC5系列之~~~5.缓存篇(页面缓存+二级缓存)
其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/dunitian/p/4822808.ht ...
- JavaScript权威指南 - 数组
JavaScript数组是一种特殊类型的对象. JavaScript数组元素可以为任意类型,最大容纳232-1个元素. JavaScript数组是动态的,有新元素添加时,自动更新length属性. J ...
- 从零开始编写自己的C#框架(25)——网站部署
导航 1.关掉访问保护 2.发布网站 3.复制网站到服务器 4.添加新网站 5.设置网站访问权限 6.设置文件夹访问权限 7.控制可更新文件夹执行权限 8.设置“应用程序池”.net版本与模式 9.附 ...
- Linux碎碎念
在学习Linux过程中,有许多有用的小技巧.如果放在纸质的笔记本上,平时查阅会相当不方便.现在以一种“碎碎念”的方式,汇集整理在此,目前还不是很多,但随着学习.工作的深入,后续会陆陆续续添加更多的小技 ...
- 【Big Data】HADOOP集群的配置(一)
Hadoop集群的配置(一) 摘要: hadoop集群配置系列文档,是笔者在实验室真机环境实验后整理而得.以便随后工作所需,做以知识整理,另则与博客园朋友分享实验成果,因为笔者在学习初期,也遇到不少问 ...
- 在禅道中实现WORD等OFFICE文档转换为PDF进行在线浏览
条件: 安装好禅道的服务器 能直接浏览PDF的浏览器(或通过 安装插件实现 ) 文档转换服务程序(建议部署在另一台服务器上) 实现 原理: 修改禅道的文件预览功能(OFFICE文档其使用的是下 ...
- WebAPI
WebAPI的Host OWIN IIS WebAPI 的handler和Filter有啥区别? WebAPI 常用 Filters Exception Filter Timer Filter Lo ...