java实现删除某条信息并刷新当前页操作

我就废话不多说了,大家还是直接看代码吧~

//执行的是删除信息的操作
 String a=request.getParameter("name");
  a = URLEncoder.encode(a, "ISO-8859-1");
  String name = URLDecoder.decode(a, "UTF-8");
 String num=request.getParameter("num");
 System.out.println("name:"+name+"num:"+num);
 String sql="delete from person_info where name=? and num=?";
 String sz[]={name,num};
 JdbcUtils.update(sql, sz);
 //刷新操作
 String sqls="select * from person_info";
 ResultSet rs=JdbcUtils.select(sqls, null);
 ArrayList<Person_info> list=new ArrayList<Person_info>();
 try {
  while(rs.next()){
  Person_info pi=new Person_info(rs.getString(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5), rs.getString(6));
  list.add(pi);
  }
  request.setAttribute("list", list);
  request.getRequestDispatcher("Personnel_definition.jsp").forward(request, response);
 } catch (SQLException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }

 }

补充知识:关于分页时怎么实现当本页面最后一条记录被删除时,自动向上一个页面跳转的实现(java实现)

##问题详解

在做批量删除时,发现若批量删除整页时,会自动跳到第一页首页,而不是返回删除当前页的上一页,不符合产品要求且使界面交互不好,给用户带来糟糕体验。

##思路详解

在controller层传参时要考虑到不仅要传入需要删除的id集合,同时传入pageSize,pageNum以及总条数集合的查询条件(如:本示例会传入groupId(分组id)),在删除成功后初始化当前页,先根据查询条件查询出总条数数量,在pageSize不等于null或为0的情况下。算出余数[(pageSize*pageNum-count)%pageSize ].若余数为0,则当前页等于pageNum-1;若余数不为0,则当前页=pageNum.将结果当前页传给前台即可。

##后台代码实现

#controller层#

@Api(description = "分组下的学生",value = "分组下的学生")
@RestController
@RequestMapping("studentGroup")
public class StudentGroupController {
 @Autowired
 private RestStudentGroupService restStudentGroupService;

 @RequestMapping(value = "deleteGroupStudent",method = RequestMethod.POST)
 @ApiOperation(value = "删除分组中的学生",notes = "删除分组中的学生")
 public ResponseObj deleteGroupStudent(@RequestParam(value = "groupId",required = true)Long groupId,
     @RequestParam(value = "ids",required = true)String ids,
     @RequestParam(value = "pageSize",required = false)Integer pagesize,
     @RequestParam(value = "pageNum",required = false)Integer pageNum){

 return restStudentGroupService.deleteGroupStudent(groupId,ids,pagesize,pageNum);
 }
 }

#service层#

@FeignClient(value = ServiceName.VALUE)
public interface RestStudentGroupService {

 @RequestMapping(value = "/school/cloud/student/deleteGroupStudent",method = RequestMethod.POST)
 public ResponseObj deleteGroupStudent(@RequestParam(value = "groupId")Long groupId,
     @RequestParam(value = "ids")String ids,
     @RequestParam(value = "pageSize")Integer pagesize,
     @RequestParam(value = "pageNum")Integer pageNum);
     }

#serviceImpl层#

@Service
public class RestStudentGroupServiceImpl implements RestStudentGroupService {

 @Autowired
 private DubboStudentGroupService dubboStudentGroupService ;
 @Override
 public ResponseObj deleteGroupStudent(Long groupId,String ids,Integer pageSize,Integer pageNum) {

 List<Long> idList = TextUtils.split(ids);
 if(groupId == null || idList== null || idList.size() == 0){
  ResponseObj responseObj = ResponseObj.ERROR("参数错误");
  responseObj.setSuccess(true);
  return responseObj;
 }
 ServiceResult<Long> serviceResult = dubboStudentGroupService .deleteCorpGroup(idList, groupId);
 if(!serviceResult.getSuccess()){
  throw new RuntimeException("分组下学生查询失败");
 }
 //应前端要求加此dto,封装传给前台的当前页属性
 CurrenPageDto currenPageDto=new CurrenPageDto();
 //初始化当前页
 Integer currentPage = 1;
 //查出该分组id下的学生数量
 ServiceResult<Long> itemCountLongs = dubboStudentGroupService.getTotalCount(groupId);
 Long itemCountLong= itemCountLongs.getResult();
 Integer itemCount = itemCountLong!=null ? itemCountLong.intValue() : 0;
 //"查询到学生数量:{},pageSize:{}", itemCount,pageSize;
 if(pageSize != null && pageSize != 0){
  //算出余数
  Integer temp = (pageNum*pageSize-itemCount)%pageSize;
  if(temp == 0){
  //余数为0的话就pageNum-1
  currentPage = (pageNum - 1) == 0 ? 1 : (pageNum -1) ;
  }else {
  //余数不为0则等于pageNum
  currentPage = pageNum;
  }
  currenPageDto.setPresentPage(currentPage);
 }
 ResponseObj responseObj = ResponseObj.SUCCESS();
 responseObj.setData(currenPageDto);
 return responseObj;
 }
}

#dubbo接口的service层#

①://删除分组下的学生
ServiceResult<Long> deleteCorpGroup(List<Long> idList,Long groupId);
②://根据条件查询对应的条目总数
ServiceResult<Long> getTotalCount(Long groupId);

#dubbo接口的serviceImpl层#

①://删除分组下的学生
 @Override
 public ServiceResult<Long> deleteCorpGroup(List<Long> idList, Long groupId) {
 ServiceResult<Long> result = new ServiceResult<>();

 try {
  studentGroupDao.deleteCorpGroup(idList, groupId);
 } catch (Exception e) {
  log.error("调用{}方法 异常", "[RestStudentGroupServiceImpl .deleteCorpGroup]");
  log.error("方法使用参数:[idList:{},groupId:{}]", idList, groupId);
  log.error("异常信息:{}", e);
  result.setErrMessage("调用deleteCorpGroup方法异常,异常信息:" + e.getMessage());
 }

 return result;
 }
②://根据条件查询对应的条目总数
 @Override
 public ServiceResult<Long> getTotalCount(Long groupId) {
 ServiceResult<Long> result = new ServiceResult<>();

 try {
  long count = studentGroupDao.getFindCorpGroupDirectoryCount(groupId);
  result.setResult(count);
 } catch (Exception e) {
  log.error("调用{}方法 异常", "[RestStudentGroupServiceImpl .getTotalCount]");
  log.error("方法使用参数:[groupId:{}]", groupId);
  log.error("异常信息:{}", e);
  result.setErrMessage("调用getTotalCount方法异常,异常信息:" + e.getMessage());
 }
 return result;
 }

#dubbo接口的dao层#

①://删除分组下的学生
 Long deleteCorpGroup(@Param(value = "idList") List<Long> idList,@Param(value = "groupId") Long groupId);
②://根据条件查询对应的条目总数
Long getFindCorpGroupDirectoryCount(@Param(value = "groupId") Long groupId);

#dubbo接口的sql#

①://删除分组下的学生
 <delete id="deleteCorpGroup">
 delete from student_group where group_id = #{groupId} and id in
 <foreach collection="idList" index="index" separator="," item="id"
   open="(" close=")">
  #{id}
 </foreach>
 </delete>
②://根据条件查询对应的条目总数
 <select id="getFindCorpGroupDirectoryCount" resultType="long">
 SELECT COUNT(1)
 FROM student_group
 where group_id = #{groupId}
 </select>

#Entity类(学生分组类)#(get,set函数省略)

public class StudentGroup implements java.io.Serializable {

 /**
 *
 */
 private static final long serialVersionUID = 1L;
 /**
 * @描述:
 * @字段:id BIGINT(19)
 */
 private Long StudentGroupId;

 /**
 * @描述:
 * @字段:group_id BIGINT(19)
 */
 private Long groupId;

 /**
 * @描述:
 * @字段:id BIGINT(19)
 * 此id为学生表id
 */
 private Long id;

 /**
 * @描述:创建时间
 * @字段:create_time DATETIME(19)
 */
 private java.util.Date createTime;

 * @描述:创建人用户名
 * @字段:create_user_name VARCHAR(30)
 */
 private String createUserName;

 /**
 * @描述:创建人用户ID
 * @字段:create_user_id BIGINT(19)
 */
 private Long createUserId;

 /**
 * @描述:更新时间
 * @字段:update_time DATETIME(19)
 */
 private java.util.Date updateTime;

 * @描述:更新人用户名
 * @字段:update_user_name VARCHAR(30)
 */
 private String updateUserName;

 /**
 * @描述:更新人用户ID
 * @字段:update_user_id BIGINT(19)
 */
 private Long updateUserId;
 }

#Entity类(学生类)#(get,set函数省略)

public class Student implements java.io.Serializable {
 /**
 *
 */
 private static final long serialVersionUID = 1L;

 private Long id;
 private String name ;
 private Integer age;
 }

以上这篇java实现删除某条信息并刷新当前页操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 用python删除java文件头上版权信息的方法

    在使用他人代码时,为不保留文件头部版权信息,需要一个个删掉,费时费力, 写了个脚本,简单清除掉目录下所有的文件的头部版权信息. # -*- coding: utf8 -*- ''''' 删除java文件头部的版权等注释 package之上的部分 ''' import os import sys def delHeader(filepath): if os.path.exists(filepath) : file = open(filepath) lines = file.readlines()

  • Java开发中可以防止界面假死的刷新代码

    代码如下: try { // 创建一个线程 Thread thread = new Thread() { public void run() { int i = 0; while(true){ final long start = System.currentTimeMillis(); try { Thread.sleep(1); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackT

  • java中循环删除list中元素的方法总结

    印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后今天在使用时发现报错了,然后去科普了一下,再然后发现这是一个误区.下面就来讲一讲..伸手党可直接跳至文末.看总结.. JAVA中循环遍历list有三种方式for循环.增强for循环(也就是常说的foreach循环).iterator遍历. 1.for循环遍历list for(int i=0;i<list.size();i++){ if(list.get(i).equals("del")

  • javaweb用户注销后点击浏览器返回刷新页面重复登录问题的解决方法

    最近在写一个购书网站,测试注销功能时点击浏览器返回刷新浏览器,会发现原本已经注销的用户又重新登录了 想了很久在网上也找了很多办法,不过网上给出的办法大多是用js实现注销后禁止用户点击游览器返回 这个办法虽然可行,但并不是在后台真正的解决这个问题,有一种防君子不防小人的感觉 下面把自己实现的方法记录下来 原理: 注销后点击浏览器返回刷新浏览器其实就是浏览器将原来form表单的信息重新发送了一遍 注销也就是干掉原来的session // 注销 private void logout(HttpServ

  • java实现删除某条信息并刷新当前页操作

    我就废话不多说了,大家还是直接看代码吧~ //执行的是删除信息的操作 String a=request.getParameter("name"); a = URLEncoder.encode(a, "ISO-8859-1"); String name = URLDecoder.decode(a, "UTF-8"); String num=request.getParameter("num"); System.out.print

  • Java修改PowerPoint幻灯片批注信息

    批注,是给文档的某处内容添加的注释或注解.在PPT演示文稿中,审阅者可以利用此功能提出关于文档的修改意见,以便后期作者更好地查找及修改.本文就将通过使用Java程序来演示如何添加.替换和删除PowerPoint幻灯片中的批注信息. 使用工具:Free Spire.Presentation for Java(免费版) Jar文件获取及导入: 方法1:通过官网下载获取jar包.解压后将lib文件夹下的Spire.Presentation.jar文件导入Java程序.(如下图) 方法2:通过maven

  • java+io+swing实现学生信息管理系统

    本文实例为大家分享了java+io+swing实现学生信息管理系统的具体代码,供大家参考,具体内容如下 说明: 1.开发环境基于eclipse外加windowbuilder插件.2.采用io流持续储存文件到本地磁盘.3.Arrylist对文件信息进行操作. 一.界面展示 本地储存学生信息的txt文件,可在此对学生信息增删改查但需要注意格式. 二.项目构架 三.相关代码及介绍 1.IO部分 学生实体类 package stuManager; public class StuInfo {     p

  • php 用checkbox一次性删除多条记录的方法

    一个简单示例 现有一个学生信息数据库,需要一次性删除多条记录 创建一个名为del.php的文件 代码如下: 复制代码 代码如下: <form action="sc.php" method=post> <table border=1 width=60% align=center> <caption>学生信息表</caption> <th>选项</th><th>学号</th><th>

  • c语言实现的货物管理系统实例代码(增加删除 查找货物信息等功能)

    复制代码 代码如下: #include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h>        /*屏幕操作函数库*/ /*主管权限数据格式化*/#define HEADER1_zg "-----------------------------货物管理系统(主管)--------------------------------\n"#define H

  • java实现简单的学生信息管理系统代码实例

    java实现简单的学生信息管理系统(无界面) 学生类实体: package com.edu.imau.wcy; public class Stu { private String stuNum;//学号 private String name;//姓名 private String gender;//性别 private int age;//年龄 private int score;//分数 public Stu() { super(); } public String getStuNum()

  • Java创建删除文件和目录的方法(推荐)

    创建和删除文件/目录常用的File类的方法 1.boolean exists():判断文件或目录是否存在 2.boolean createNewFile():创建新文件 3.boolean delete():删除文件 4.boolean mkdirs():递归创建多级目录 5.File getParentFile():获取上级目录 1.创建/删除文件 try { //在D盘demo目录新建文件:test.txt File file = new File("D:\\demo\\test.txt&q

  • Java毕业设计实战之药店信息管理系统的实现

    一.项目简述 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持) 项目技术: JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + layui+ maven等等 药品相关的controller: /** * 药品相关的controller */ @Controller @Request

  • Java编程删除链表中重复的节点问题解决思路及源码分享

    一. 题目 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 二. 例子 输入链表:1->2->3->3->4->4->5 处理后为:1->2->5 三. 思路 个人感觉这题关键是注意指针的指向,可以定义一个first对象(值为-1,主要用于返回操作后的链表),first.next指向head,定义一个last同样指向first(主要用于操作记录要删除节点的前一个节点),定义一个p指向head,指向当前节点.

  • php+mysqli预处理技术实现添加、修改及删除多条数据的方法

    本文实例讲述了php+mysqli预处理技术实现添加.修改及删除多条数据的方法.分享给大家供大家参考.具体分析如下: 首先来说说为什么要有预处理(预编译)技术?举个例子:假设要向数据库添加100个用户,按常规思路,就是向数据库发送100个执行请求,此时,按照 mysql 数据库的工作原理,它需要对每一条执行语句进行编译(这里就有100次).所以,这里的效率是非常低的. 预处理(预编译)技术的作用,就是减少编译的次数和时间,以提高效果.通过一个案例来说明,预处理(预编译)技术是如何做到的(好吧,先

随机推荐