一.HttpServletResponse 与 RequestDispatcher
HttpServletResponse.sendRedirect(Sting url) Servlet 向该方法传递一个URL参数,以便客户端转发到另外一个URL,改方法设置了HTTP响应代码TEMPORARY_REDIRECT,而且还包含目标URL,客户端向指示的URL发送另一个HTTP请求,并得到响应。 代码示例
public void service(HttpServletRequest req,HttpServletResponse rep) throws Exception{
rep.sendRedirect("http://http://tristan-wang.iteye.com/")
}
上面的方法称之为URL重定向,可以看出它要求客户端发送两个完整的HTTP请求,所以这种方法不是搞笑的,并且在下面可以看出,这种方法对参数的传递还有一定的限制。
如果重定向的目标在同一个Server示例内,那么 RequestDispatcher会提供更好的解决方案。它使用的机制对客户端是完全透明的,并且只需要一个HTTP请求。
有三种构造方法:
1.RequestDispatcher rd = request.getRequstDispatcher(Sting URL);
2.RequestDispatcher rd = ServletContext.getRequstDispatcher(Sting URL);
3.RequestDispatcher rd = ServletContext.getNamedDispatcher(Sting URL);
具体区别有待于研究
方法一的用法:
request.setAttribute("photoList",photoList);
.....
RequestDispatcher rd=request.getRequestDispatcher("/front/FrontIndex.jsp");
rd.forward(request,response);
二.JSP和Servlet之间的参数传递
1.JSP到SERVLET
可以使用隐藏表单域的方法:
jSP: <form type="hidden" name="" value="">
servlet: String ps=request.getParameter("");
String[] ps = request.getParameterValues("");
2.servlet传递参数给JSP
方法1. 可以使用request.setAttribute("name","value")来传递参数,使用request.getAttribute("name","value")来接受参数,但是此方式只能使用于跳转,而不适用于重定向
方法2. session会话:实质上就是一片内存空间,而这个空间不在你自已的电脑上,她在服务器上,所以你只要把你想要共享的数据放到这个空间里去就可以达到共享数据的目的.
发送端:
HttpSession session=request.getSession();
session.setAttribute("artTypeList",artTypeList);
接收端:
ArrayList typelist=(ArrayList)session.getAttribute("artTypeList");
方法3:cookie