zoukankan      html  css  js  c++  java
  • servlet session管理的四种方式 --隐藏表单

    ---恢复内容开始---

    利用隐藏表单来保持状态,与采用网址重写技术类似,但是通过隐藏表单表单的方式,其url后不显式跟随值,而是将他们放到表单中,在提交表单时,其值传递至服务器。

    使用这种方式时,需要页面中本身含有表单或自己构建一个表单来使用。可以传递更多的字符且不需要进行字符编码。

    下文中通过隐藏表单的方式修改类的值。

    package com.slowalker.rewrite;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * Servlet implementation class HiddenForm
     */
    @WebServlet(name="/HiddenForm", 
                urlPatterns= {"/customer", "/editCustomer", "/updateCustomer"}) 
               //一个servlet页面映射多个路径
    
    public class HiddenForm extends HttpServlet {
    	private static final long serialVersionUID = 1L;
    	private ArrayList<Customer> customers = new ArrayList<>(2);
    	
    	public void init() 
    			throws javax.servlet.ServletException {
    		customers.add(new Customer(1 , "lp", "yk"));
    		customers.add(new Customer(2, "hx", "xa"));
    	}
        
        public HiddenForm() {
            super();
        }
    
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
    			throws ServletException, IOException {
    		String url = request.getRequestURI();
    		if (url.endsWith("/customer")) sendCustomerList(request, response);
    		if (url.endsWith("/editCustomer")) sendEditCustomerForm(request, response);
    		
    	}
    	
    	protected void sendCustomerList(HttpServletRequest request, HttpServletResponse response) 
    				throws IOException, ServletException {
    		response.setContentType("text/html");
    		PrintWriter pw = response.getWriter();
    		pw.println("<html><head><title>Customer List</title></head>"
    				 + "<body>"
    				 + "<table>");
    		for (Customer c:customers) {
    			pw.println("<tr><td>" + c.getId() +"</td><td>" + c.getName() + "</td><td>" + c.getCity() +"</td>"
    					+ "<td>" + "<a href='editCustomer?id=" + c.getId() +"'>edit</a>" + "</td>" +"</tr>");
    		}
    		pw.println("</table></body></html>");
    	}
    	
    	private Customer getCustomer(int id) {
    		for (Customer c:customers) {
    			if (c.getId() == id) return c;
    		}
    		return null;
    		
    	}
    	
    	protected void sendEditCustomerForm(HttpServletRequest request, HttpServletResponse response) 
    			throws ServletException, IOException{
    		response.setContentType("text/html");
    		int customerId = 0;
    		try {
    			customerId = Integer.parseInt(request.getParameter("id"));
    		}catch (NumberFormatException e){}
    		Customer customer = getCustomer(customerId);
    		PrintWriter pw = response.getWriter();
    		if (customer != null) {
    			pw.println("<html><head><title>edit customer</title></head>"
    					 + "<body><h2>edit customer</h2>"
    					 + "<form method='post' action='updateCustomer'>");
    			/*
    			 * 隐藏表单 
    			 */
    			pw.println("<input type='hidden' name='id' value='" + customer.getId() + "'/>");
    			pw.println("<table>"
    					 + "<tr><td>Name:</td><td>" + "<input name='name' value='" + customer.getName().replaceAll("'", "'") + "'/>" + "</td></tr>"
    					 + "<tr><td>City:</td><td>" + "<input name='city' value='" + customer.getCity().replaceAll("'", "'") + "'/>" + "</td></tr>");
    			pw.println("<tr><td conspan='2' style='text-align:right'>"
    					 + "<input type='submit' value='Update'/></td></tr>");
    			pw.println("<tr><td colspan='2'><a href='customer'>Customer List</a></td></tr>");
    			pw.println("</table></body></html>");
    		}else {
    			pw.println("No Customer Found");
    		}
    		
    	}
    
    	
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) 
    			throws ServletException, IOException {
    		int customerId = 0;
    		try {
    			customerId = Integer.parseInt(request.getParameter("id"));
    		}catch (NumberFormatException e) {}
    		
    		Customer customer = getCustomer(customerId);
    		if(customer != null) {
    			customer.setName(request.getParameter("name"));
    			customer.setCity(request.getParameter("city"));
    		}
    		sendCustomerList(request, response);
    	}
    
    }
    
  • 相关阅读:
    codeforces689A
    codeforces222A
    codeforces553A
    2021牛客国庆集训派对day6 J
    SVM--支持向量机
    压缩感知
    范数
    LeNet详解
    卷积神经网络(CNN)详解
    BP算法实例—鸢尾花的分类(Python)
  • 原文地址:https://www.cnblogs.com/slowalker-lee/p/7877672.html
Copyright © 2011-2022 走看看