上一步完成了信息回显功能,第二步是在当前页面修改自己想要修改的信息,然后点击“提交”按钮,这里因为所提交的信息要有一个唯一标识符,所以需要在update.jsp页面设置一个隐藏域:
<!-- 设置隐藏域--> <input type="hidden" name="id" value="${user.id}">(可以在表单任意地方,因为隐藏域不影响页面布局)
接下来设置一下表单的提交代码
<form action="${pageContext.request.contextPath}/updateUserServlet" method="post">
然后编写updateUserServlet类
package edu.swpu.web.servlet;
import edu.swpu.domain.User;
import edu.swpu.service.UserService;
import edu.swpu.service.impl.UserServiceImpl;
import org.apache.commons.beanutils.BeanUtils;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;
@WebServlet("/updateUserServlet")
public class UpdateUserServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.设置编码
request.setCharacterEncoding("utf-8");
//2.获取map
Map<String,String[]> map = request.getParameterMap();
//3.获取封装对象
User user = new User();
try {
BeanUtils.populate(user,map);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
//4.调用Service修改
UserService service = new UserServiceImpl();
service.updateUser(user);
//5.跳转到查询所有Servlet
response.sendRedirect(request.getContextPath()+"/userListServlet");
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
然后实现Service和dao层
UserService:
/**
* 修改用户
* @param user
*/
void updateUser(User user);
UserServiceImpl:
@Override
public void updateUser(User user) {
dao.update(user);
}
UserDao:
void update(User user);
UserDaoImpl:
public void update(User user) {
String sql = "update user set name = ?,gender = ?,age = ? ,address = ? ,qq = ? ,email = ? where id = ?";
template.update(sql,user.getName(), user.getGender(), user.getAge(), user.getAddress(), user.getQq(), user.getEmail(), user.getId());
}