在servlet里面接收到一个请求以后,处理完毕,根据需要可以有几种选择:
1.直接提交response,比如response.getWriter().println();
这个比较简单,而且不怎么使用,毕竟动态生成html不是很好的选择
2.将请求转给其它的资源(比如:forward到jsp,html,servlet)
这个有两种方法可以选择,但是无论哪种方法,都是转发到当前context(web应用)下面:
(1)ServletRequest#getRequestDispatcher(String path)方法
request.getRequestDispatcher("/login.html").forward(request,response);
path如果以/开头,那么path相对于当前context的根目录
比如:当前context path是/test,那么"/login.html"相当于/test/login.html
如果path不以/开头,那么属于相对目录,path相对于当前的url目录
比如:当前url为/test/action/a/b,那么"login.html"相当于/test/action/a/login.html
(2)ServletContext#getRequestDispatcher(String path)方法
getServletContext().getRequestDispatcher("/login.html").forward(request,response);
path必须以/开头,并且path是相对于当前context的根目录
比如:当前context path是/test,那么"/login.html"相当于/test/login.html
3.重定向到其它资源(比如:redirect到jsp,html,servlet)
重定向是临时返回当前请求,然后浏览器收到响应后,自动再向redirect指定的url发起一个新的request,
这时在浏览器的地址栏中可以看到一个新的url地址。
HttpServletResponse#sendRedirect(String location)方法
(1)location前面有/,这时location是相对于当前host root
response.sendRedirect("/test/login.html");
得到的绝对url是http://localhost:8080/test/login.html
(2)location前面没有/,这时是相对于当前url目录,属于相对目录
response.sendRedirect("login.html");
如果当前url是:/test/action/a/b,那么得到的url是:/test/action/a/login.html
重定向临时返回的response和正常返回的response有什么区别呢?
(1)response的http 返回码不同
redirect:
HTTP/1.1 302 Moved Temporarily
Location: http://localhost:8080/test/action/a/login.html
正常返回的response(没有Location):
HTTP/1.1 200 OK
(2)
redirect需要两次请求,一次返回302,接着再向Location发起一次新的request
正常返回的response,只需要一次请求
分享到:
相关推荐
tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-...
tomcat-redis-session-manager源码
开发工具 apache-tomcat-8.0.41-windows-x86开发工具 apache-tomcat-8.0.41-windows-x86开发工具 apache-tomcat-8.0.41-windows-x86开发工具 apache-tomcat-8.0.41-windows-x86开发工具 apache-tomcat-8.0.41-...
旦容器初始化已经结束,调时就会出现异常:2022/2/23 下午8:40Tomcat 源代码调试笔记 - 看不见的 Shell我看了下这个 if 之后的语句,并
Tomcat8亲测可用 tomcat-redis-session-manager的jar包 修改了tomcat-redis-session-manager源码进行的编译生成的jar包
tomcat-redis-session-manager-1.2-tomcat-7.jar 和tomcat的context.xml配置文件。 2.7.2版包含 commons-pool2-2.4.1.jar jedis-2.7.2.jar tomcat-redis-session.jar 和tomcat的context.xml配置文件
Tomcat7下载(apache-tomcat-7.0.85)Tomcat7下载(apache-tomcat-7.0.85)Tomcat7下载(apache-tomcat-7.0.85)Tomcat7下载(apache-tomcat-7.0.85)
基于tomcat-redis-session-manager源码进行的编译生成的jar包,压缩包中包含Tomcat7和Tomcat8打好的jar包。
因tomcat7使用redis共享session,其他的包存在问题,自己编译后处理通过。 该包是在https://github.com/jcoleman/tomcat-redis-session-manager 将源码编译后的包。
apache-tomcat-9.0.45-windows-x64apache-tomcat-9.0.45-windows-x64apache-tomcat-9.0.45-windows-x64apache-tomcat-9.0.45-windows-x64apache-tomcat-9.0.45-windows-x64apache-tomcat-9.0.45-windows-x64apache-...
文件名写错了,此压缩文件支持tomcat8.5。是否支持8.0请自行测试,本人只测试了8.5,可以使用。压缩文件包括tomcat-redis-session-manager-...apache-tomcat-8.5.33.tar.gz,nginx-1.6.2.tar.gz也打包进去,一步到位。
用于配置 tomcat-redis-session-manager
使用tomcat-redis-session-manager进行统一session管理所需jar包,包括tomcat6-jdk6、tomcat7-jdk7、tomcat8-jdk8
包括commons-pool-1.6.jar,jedis-2.0.0.jar,tomcat-redis-session-manager-1.2-tomcat-6&7.jar
tomcat-redis-session-manager的jar包,适用tomcat7版本。jar构建来自GitHub上开源项目打包
tomcat-redis-session-manager-1.2.jar redis+tomcat session共享需要的jar包,包括tomcat6和tomcat7
tomcat 7 最新版本 apache-tomcat-7.0.109
tomcat-connectors-1.2.32-src.tar.gz 在linux下,进行apache和tomcat整合时要用的源码安装文件
apache-tomcat-7.0.92-windows-x64.zip windows64位系统版本的Tomcat7服务器 官网正版