修改操作
首先 明确 修改操作的前提是 先在页面显示修改前的数据 然后对其进行修改 之后点击提交
在页面显示修改前的数据
方法一: 带着数据直接跳转 到添加页面 即在跳转的url后 直接通过?携带数据跳转
缺点: !!! 携带的数据会直接在页面的url上显示 会造成信息泄露等(影响不大 毕竟为修改时数据 本身就需要显示)
具体的实现:
1、在uesr.jsp页面的修改操作处 跳转路径后 追加需要在修改页面显示的数据
2、在修改页面admin_updateuser.jsp 通过el表达式 在其中书写 java代码 获取url中的数据 获取url中的数据 并展示在指定位置
3、因为修改操作的sql语句为update t_user set username=? , phone=?,sex=? , mail=? where id=? 目前 我表单中的 input输入框中 有username,phone等 还需要id
两种方法 将id传递到 修改操作的servlet
第一种 : 直接在跳转路径后 追加id属性
第二种 : 设置一个隐藏的input的输入框 然后将id存放其中 在servlet中获取
方法二: 带着id数据直接跳转 到ShowUpdateUserServlet中 然后在其中 通过id查询出其对应的对象数据 然后将其放到request域中 然后在页面 通过 ${} 获取request 域中的值
1、设置user.jsp的跳转路径
![在这里插入图片描述](https://img-blog.csdnimg.cn/bc5e5ccf78f44bac8e474113595c2ac8.png)
2、创建并书写ShowUpdateUserServlet
代码如下:
package com.qfedu.controller;
import com.qfedu.entity.User;
import com.qfedu.service.UserService;
import com.qfedu.service.impl.UserServiceImpl;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet(name = "ShowUpdateUserServlet", value = "/ShowUpdateUserServlet")
public class ShowUpdateUserServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//先设置请求的字符集 防止中文乱码
request.setCharacterEncoding("utf-8");
String pageNo = request.getParameter("pageNo");
if(pageNo==null){
pageNo="1";
}
Integer pNo=Integer.valueOf(pageNo);
//获取前端传过来的 用户id
String id1 = request.getParameter("id");
Integer id= Integer.valueOf(id1);
UserService userService=new UserServiceImpl();
User user = userService.showUpdateUser(id);
//将user存到request域中
request.setAttribute("user",user);
//转发到修改界面
request.getRequestDispatcher("/after/admin_updateuser.jsp?pageNo="+pNo).forward(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
3、在admin_updateuesr.jsp 页面显示数据
4、id的传递设置与方法一中的一致 只是值需要通过查询域中数据 即通过 ${user.id} 获取
修改完数据后跳转到 UserUpdateServlet 将修改后的数据传递到后端 对数据库中的数据进行修改
UserUpdateServlet 代码如下:
package com.qfedu.controller;
import com.qfedu.service.UserService;
import com.qfedu.service.impl.UserServiceImpl;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet(name = "UserUpdateServlet", value = "/UserUpdateServlet")
public class UserUpdateServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置请求的字符集 防止中文乱码
request.setCharacterEncoding("utf-8");
String pageNo = request.getParameter("pageNo");
if(pageNo==null){
pageNo="1";
}
Integer pNo=Integer.valueOf(pageNo);
//获取浏览器中 修改后的数据 以及传递过来的用户的id
String id1 = request.getParameter("id");
Integer id= Integer.valueOf(id1);
String username = request.getParameter("username");
String phone = request.getParameter("phone");
String sex = request.getParameter("sex");
String mail = request.getParameter("mail");
//将这些属性存放到object集合中
Object[] objs={username,phone,sex,mail,id};
//调用service层方法
UserService userService=new UserServiceImpl();
boolean b = userService.userUpdate(objs);
//获取session对象
HttpSession session = request.getSession(false);
//设置 session中的一个属性为 userUpdate为ture 代表删除操作成功
session.setAttribute("userUpdate",true);
if(b){
response.sendRedirect("UserFuzzySelectServlet?pageNo="+pNo);
}else{
//将session 中的urp 改为false 代表删除失败
session.setAttribute("userUpdate",false);
response.sendRedirect("UserFuzzySelectServlet?pageNo="+pNo);
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
service层 与dao层代码 略