Servlet内两种重定向方式

来源:互联网 发布:python mmap 编辑:程序博客网 时间:2024/05/16 06:19

Servlet内重定向方式

A:

javax.servlet.RequestDispatcher接口的forward方法

备注

方法调用

1.                    javax.servlet.ServletContext接口的getRequestDispatcher

2.                    javax.servlet.ServletContext接口的getNamedDispatcher

3.                   javax.servlet.ServletRequest接的getRequestDispatcher
1
应用web.xml servlet定义路径eg: servlet/ServletA
2
应用web.xml servlet定义名称 eg: ServletA
3
应用web.xml servlet定义名称或路径 eg: ServletA

 

重定向servlet

1getServletContext().getRequestDispatcher(“/servlet/ServletB”).forward(request,response);
2 .  getServletContext().getNameDispatcher(“ServletB”).forward(request,response);

3 .  request.getRequestDispatcher((“/servlet/ServletB”).forward(request,response)

request.getRequestDispatcher((“ServletB”).forward(request,response)

 

重定向jsp

1getServletContext().getRequestDispatcher(“/WEB-INF/jsp/login.jsp”).forward(request,response);
2 .
不能,否则抛NullPointerException
3   request.getRequestDispatcher(“/WEB-INF/jsp/login.jsp”).forward(request,response)

可以访问WEB-IINF/下资源

传递参数

Forward方法之前调用:
request.setAttribute(“param1”,”This is a request setAttribute param1”);

1. getServletContext().getRequestDispatcher(“/servlet/ServletB?param1=a”).forward(request,response);
2. getServletContext().getNameDispatcher(“ServletB?param1=a”).forward(request,response);
3 .   request.getRequestDispatcher((“/servlet/ServletB?param1=a”).forward(request,response)
或者
request.getRequestDispatcher((“ServletB?param1=a”).forward(request,response)

 

 

 

B:

javax.servlet.http.HttpServletResponse接口的sendRedirect方法

备注

重定向servlet

response.sendRedirect(request.getContextPath()+"/servlet/ServletB");

比较forward()sendRedirect()调用servletjsp的不同之处。

重定向jsp

response.sendRedirect(request.getContextPath()+"/login.jsp"),

如果为response.sendRedirect("login.jsp"),则会从当前servlet url路径下找login.jsp eg: http://10.1.18.8:8081/dms/servlet/ServletAà
http://10.1.18.8:8081/dms/servlet/login.jsp
如果为response.sendRedirect("/login.jsp")则会从当前服务器路径下查找url:http://10.1.18.8:8081/login.jsp

实际login.jsp 路径为:http://10.1.18.8:8081/dms/login.jsp

 

如果login.jspWEB-INF/jsp/目录下则response.sendRedirect(request.getContextPath()+"/WEB-INF/jsp/login.jsp"),找不到路径

传递参数

request.setAttribute(“param1”,”This is a request setAttribute param1”); 此方法实效。Jsp request.getAttribute(“param1”);null.

通过链接传递参数eg:

response.sendRedirect

(request.getContextPath()+"/login.jsp?param1=a"),

response.sendRedirect(request.getContextPath()+"/servlet/ServletB?param1=a");

 

 

 
原创粉丝点击