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{//调用查询的方法//得到原生 的requestHttpServletRequest hsr = ServletActionContext.getRequest();int yeshu = Integer.parseInt(hsr.getParameter("yeshu"));//接收index传过来的yeshuList<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//得到原生 的requestHttpServletRequest 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//得到原生 的requestHttpServletRequest 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//得到原生 的requestHttpServletRequest hsr = ServletActionContext.getRequest();String userid = hsr.getParameter("user.userID");int userID = Integer.parseInt(userid);//将从用户列表页面获取的id 放入request,目的:为了在修改页面获取当前行的用户idhsr.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 {//添加Userpublic 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(){//初始化Hibernatecfg= 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();}//保存userpublic 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修改

 

删除

转载于:https://www.cnblogs.com/liuyanzeng/p/6074956.html

用Hibernate和Struts2+jsp实现分页查询、修改删除相关推荐

  1. JSP核心——分页查询

    JSP核心--分页查询 业务背景 当数据量较多时,用户需要拖动页面才能浏览更多信息数据定位不便:采用分页技术实现批量数据的页面显示.例如百度搜索: 分页实现 ①确定每页显示的数据数量 ②确定分页显示所 ...

  2. 【瑞吉外卖】学习笔记-day5:(一)套餐管理开发——新增套餐、套餐分页查询、删除/起售/停售套餐

    新增套餐: 需求分析: 套餐就是菜品的集合. 后台系统中可以管理套餐信息,通过新增套餐功能来添加一个新的套餐,在添加套餐时需要选择当前套餐所属的套餐分类和包含的菜品,并且需要上传套餐对应的图片,在移动 ...

  3. 【瑞吉外卖】day07:新增套餐、套餐分页查询、 删除套餐

    目录 1. 新增套餐 1.1 需求分析 1.2 数据模型 1.3 准备工作 1.4 前端页面分析 1.5 代码开发 2. 套餐分页查询 2.1 需求分析 2.2 前端页面分析 2.3 代码开发 2.4 ...

  4. 解决mysql表不能查询修改删除等操作并出现卡死

    问题现象1:进程wait卡住 测试环境mysql出现了一个怪表:select查询表卡死,alter修改表卡死,甚至我不想要这个表了,delete.truncate.drop表都卡死卡主了...... ...

  5. cmd命令窗口mysql查询表数据命令行_cmd 命令行模式操作数据库 添加查询 修改 删除 ( 表 字段 数据)...

    一 查看数据库.表.数据字段.数据 1 首先配置环境变量 进入mysql  或者通过一键集成工具 打开mysql命令行  或者mysql 可视化工具 打开命令行 进入这样的界面   不同的机器操作不同 ...

  6. Spring+SpringMVC+MyBatis明日方舟版人员信息管理系统前端页面代码前后端交互+SSM框架 管理员登录 游客登录 普通用户登录 人员的增删改查 信息更新 图片上传 分页查询)

    Spring+SpringMVC+MyBatis明日方舟版人员信息管理系统前端页面代码(前后端交互+SSM框架 管理员登录 游客登录 普通用户登录 人员的增删改查 信息更新 图片上传 分页查询 修改密 ...

  7. Access数据库 实现分页查询

    Access数据库 实现分页查询 目录 说明 项目的结构 SQL语句 Servlet:page.java 显示页面query.jsp 访问页面hello.jsp 总结 目录 说明 项目环境:Eclip ...

  8. 野狗云API之详解(分页,查询,删除,更新)-yellowcong

    野狗云的API说实话,不是特别的好用,对于分页操作和查询是鸡肋,对于这两个操作我就不过多吐槽了,但是我想吐槽一下,野狗云的确很坑,当里把数据往死里写,超过了250MB后,你的服务就用不了了(当时我用多 ...

  9. mybatis-plus 查询,删除

    title 查询 单值,多个主键,条件 分页查询 物理删除,逻辑删除 mybatis-plus 新增,修改 查询 单值,多个主键,条件 @Testvoid queryOne() {// 查询单个use ...

最新文章

  1. shell脚本重启tomcat
  2. 深入云原生 AI:基于 Alluxio 数据缓存的大规模深度学习训练性能优化
  3. Office 365 Exchange 2016 混合部署前准备
  4. PHP probuf详细步骤_初识protobuf和php的相关用法
  5. 1069: [SCOI2007]最大土地面积 - BZOJ
  6. 近似装箱问题(两种脱机算法实现)
  7. 使用机器视觉模式识别屏幕
  8. tree(nyoj)
  9. 让ie8按照ie7 的方式来进行解析
  10. 【Java】Java与数字证书
  11. 【生信】统计学基础知识
  12. WPS安装自定义项安装程序出错问题
  13. erp进销存多店系统源码 云进销存 超市管理
  14. 51单片机原理与设计方案(包含原理图与PCB)
  15. it职位简称_IT行业常见职位英文缩写
  16. 内网邮箱pop服务器,如何在POP3邮件服务器中创建用户邮箱
  17. 新闻叙事与文学影视叙事的区别
  18. 零基础掌握计算机入门
  19. 调试技巧:如何以数组的方式查看一个指针
  20. 备份 mysql数据

热门文章

  1. 如何制作变年轻特效?分享几个简单的方法给你
  2. 无限极分类原理php,浅谈PHP无限极分类原理
  3. stm32蓝牙遥控小车(hal库)
  4. 20.1-Android12 系统源码下载
  5. WPS文字如Word中的“左侧目录大纲(导航窗格)”怎样显示
  6. jQuery插件使用总结六:nice validator表单验证
  7. Linux命令·mkdir
  8. 吐槽一个叫AMO的狗
  9. 征服Java面试官!为什么数据库会丢失数据?你还看不懂吗?
  10. 【flipclock】类 Fliqlo 的 翻页时钟+日期 网页版