servlet session管理之一 重写

来源:互联网 发布:淘宝推广工具 编辑:程序博客网 时间:2024/06/05 20:18

    在同一个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参数为指定的两种,则会显示相应的页面。

原创粉丝点击