servlet session管理的四种方式--一 url重写
servlet对于多页面共享信息提供四种方式。
1.url重写的方式
在下面的例子中,每一次请求都通过doGet方法进行“分流”。
如果在网址中含有参数city且不为空,就调用showAttribute()方法下所包含的servlet页面,如果没有该参数或该参数对应值为空,则调用mainPage()方法下的页面。
if (request.getParameter("city") != null){ ....... ....... showAttribute(request, response, city, page); }esle showMainPage(request, response)
在执行showMainPage()方法中,可以通过选择选项,进行url重写
选择不同的选项,其后添加??city=london&page=1或者?city=pairs&page=1,url改写为localhost:8080/Rewrite?city=london&page=1或localhost:8080/Rewrite?city=pairs&page=1重新调用doGet方法,因为其含有city参数且不为空,不再调用showMainpage()方法,改为调用showAttribute(request, response, city, page)方法,实现了多页面共享信息的目的。
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>");
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); } }
posted on 2017-11-20 20:48 slowalker-lee 阅读(1358) 评论(0) 编辑 收藏 举报