servlet session管理之一 重写

    在同一个servlet中通过参数的改变而访问不同的页面。


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;

@WebServlet("/Rewrite")
public class Rewrite extends HttpServlet {
	private static final long serialVersionUID = 1L;
    public Rewrite() {
        super();
    }
    
    ArrayList<String> londonAttr = new ArrayList<>(10);
    ArrayList<String> pairsAttr = new ArrayList<>(10);
    
    public void init() throws javax.servlet.ServletException{
    	for( int i = 0; i < 10; i++) {
    		londonAttr.add("l " + (i+1));
    	}
    	
    	for( int i = 0; i < 10; i++) {
    		pairsAttr.add("p " + (i+1));
    	}
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		if(request.getParameter("city") != null) {
			System.out.println("attribute");
			String city = request.getParameter("city");
			int page = 1;
			int p = 1;
			if (request.getParameter("page") != null){
			    try {
			        p = Integer.parseInt(request.getParameter("page"));
			        //showAttribute(request, response, city, page);
			    }catch (NumberFormatException e) {}
			}
			page = p;
			showAttribute(request, response, city, page);
		}else showMainPage(request, response);
	}
	
	public void showMainPage(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException{
		response.setContentType("text/html");
		PrintWriter pw = response.getWriter();
		pw.println("<html><head><title>select a city</title><head><body>"
				 + "<h3><a href=\"?city=london&page=1\">london</a><h3>"
				 + "<h3><a href=\"?city=pairs&page=1\">pairs</a><h3>"
				 + "</body></html>");
	}
	
	public void showAttribute(HttpServletRequest request, HttpServletResponse response, String city, int page)
			throws ServletException, IOException {
		response.setContentType("text/html");
		PrintWriter pw = response.getWriter();
		pw.println("<html><head><title>" + city +"</title></head><body>"
				 + "<table>");
		if(city.equals("london")) {
			for (int i = 5 * (page-1) ; i < 5 * (page-1) + 5; i++) {
				pw.println("<tr><td>" + londonAttr.get(i) + "</td><tr>");
			}
		}else if(city.equals("pairs")) {
			for (int i = 5 * (page-1) ; i < 5 * (page-1) + 5; i++) {
				pw.println("<tr><td>" + pairsAttr.get(i) + "</td><tr>");
			}
		}
		pw.println("</table>");
		if(page == 1) pw.println("<a href=?city=" + city + "&page=2>next</a><br/>");
		if(page == 2) pw.println("<a href=?city=" + city + "&page=1>pass</a><br/>");
		pw.println("<a href=http://localhost:8080/goon/Rewrite>city list</a>");
		pw.println("</body><html>");
	}
	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		doGet(request, response);
	}

}

第一次访问的为showMainPage()方法中的页面

london

pairs

通过点击london或者pairs访问不同的页面。

原理,客户端发出请求,请求后跟随的参数决定本次响应应该访问哪个或哪几个方法。

    在本例中,每一次客户端发出一个请求,在doGet方法中都会进行参数验证,如果未选择cite参数,则会进入showMainPage方法,如果选择了city参数,且city参数为指定的两种,则会显示相应的页面。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值