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

效果截图:

 

posted @ 2019-07-25 16:33  !O0O!  阅读(266)  评论(0)    收藏  举报