정보를 삭제하고 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();
 } 
  
 }
image.png
image.png

보충 지식 : 페이징 할 때,이 페이지의 마지막 레코드가 삭제 될 때 다음 페이지로 자동 점프 실현 (Java에서 구현)

문제에 대한 자세한 설명
일괄 삭제를 할 때 전체 페이지를 일괄 적으로 삭제하면 현재 페이지의 이전 페이지로 돌아 가지 않고 자동으로 첫 페이지의 첫 페이지로 이동하는 것으로 나타났습니다. 제품 요구 사항을 충족하고 인터페이스 상호 작용을 나쁘게 만들어 사용자에게 나쁜 경험을 제공합니다.

세부 아이디어
컨트롤러 계층에서 매개 변수를 전달할 때 삭제해야하는 ID 컬렉션뿐만 아니라 pageSize, pageNum 및 총 컬렉션 수에 대한 쿼리 조건도 고려해야합니다 (예 :이 예제는 groupId (group id)), 삭제 성공 후 현재 페이지를 초기화하고 pageSize가 null 또는 0이 아닌 경우 먼저 쿼리 조건에 따라 총 항목 수를 쿼리합니다. 나머지 [(pageSize * pageNum-count) % pageSize]를 계산합니다. 나머지가 0이면 현재 페이지는 pageNum-1과 같고 나머지가 0이 아니면 현재 페이지 = pageNum입니다. 결과를 현재 페이지로 보냅니다. 페이지 전경.

백그라운드 코드 구현

컨트롤러 레이어 #

@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);
 }
 }

서비스 계층 #

@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 인터페이스의 서비스 계층 #

①://删除分组下的学生
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;

}

|

[] (javascript :; "모두 선택") [] (javascript :; "Java 코드 복사")

#dao 레이어 ofdubbo 인터페이스 #

`①:``//删除分组下的学生`

`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;

}

|

[](javascript:; "全选")[](javascript:; "复制java代码")

<textarea style="margin: 0px; padding: 0px; outline: none; font: 16px / 24px tahoma, arial, 宋体;"></textarea>

Entity类(学生类)#(get,set函数省略)
`public` `clas` `Student` `implements` `java.io.Serializable {
    
    `

`/**`

`*`

`*/`

`private` `static` `final` `long` `serialVersionUID = 1L;`

`private` `Long id;`

`private` `String name ;`

`private` `Integer age;`

`}`

 |

추천

출처blog.csdn.net/dcj19980805/article/details/115175864