Servlet——Session管理:隐藏域
package com.java.servlet.test; public class Customer { private int id; private String name; private String city; //省略get和set方法 }
package com.java.servlet.test; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(name="CustomerServlet", urlPatterns= {"/customer","/editCustomer","/updateCustomer"}) public class CustomerServlet extends HttpServlet { private static final long serialVersionUID = 1L; private List<Customer> customers = new ArrayList<Customer>(); @Override public void init() throws ServletException { //初始化list集合 Customer cust1 = new Customer(); cust1.setId(1); cust1.setName("tom"); cust1.setCity("SH"); customers.add(cust1); Customer cust2 = new Customer(); cust2.setId(2); cust2.setName("jack"); cust2.setCity("BJ"); customers.add(cust2); } private void sendCustomerList(HttpServletResponse response) throws IOException { response.setContentType("text/html"); PrintWriter writer = response.getWriter(); writer.println("<html><head><title>Customers</title></head><body><h2>Customers</h2>"); writer.println("<ul>"); for(Customer customer : customers) { writer.println("<li>"+customer.getName()+"("+customer.getCity()+") " +"<a href='editCustomer?id="+customer.getId()+"'>edit</a>"+"</li>"); } writer.println("</ul>"); writer.println("</body></html>"); } private Customer getCustomer(int id) { for(Customer customer : customers) { if(customer.getId() == id) { return customer; } } return null; } private void sendEditCustomerForm(HttpServletRequest request, HttpServletResponse response) throws IOException { response.setContentType("text/html"); PrintWriter writer = response.getWriter(); int id = 0; id = Integer.parseInt(request.getParameter("id")); Customer customer = getCustomer(id); if(customer != null) { //该表单使用了post方法,提交时浏览器会采用HTTP POST方法,并调用Servlet的doPost方法。 writer.println("<html><head><title>Edit Customer</title></head>" + "<body><h2>Edit Customer</h2><form method='post' action='updateCustomer'>"); //隐藏域 writer.println("<input type='hidden' name='id' value='"+id+"'/>"); writer.println("<table><tr><td>Name:</td><td><input name='name' value='"+customer.getName()+"'/></td></tr>"); writer.println("<tr><td>City:</td><td><input name='city' value='"+customer.getCity()+"'/></td></tr>"); writer.println("<tr><td colspan='2' style='text-align:right'><input type='submit' value='Update'/></td></tr>"); writer.println("<tr><td colspan='2'><a href='customer'>Customer List</a></td></tr>"); writer.println("</table></form></body></html>"); }else { writer.println("No customer found"); } } /** * "/customer","/editCustomer","/updateCustomer" * 三个映射路径,前两个会在doGet方法中处理,第三个会执行doPost方法 */ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String uri = request.getRequestURI(); if(uri.endsWith("/customer")) { sendCustomerList(response); }else if(uri.endsWith("/editCustomer")) { sendEditCustomerForm(request,response); } } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int id = 0; id = Integer.parseInt(request.getParameter("id")); Customer customer = getCustomer(id); if(customer != null) { customer.setName(request.getParameter("name")); customer.setCity(request.getParameter("city")); } sendCustomerList(response); } }
效果截图:




浙公网安备 33010602011771号