第一次在社区发问题,
初学Servlet,碰到一个有关更目录重定向的问题:
1.配置web.xml
<servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>com.servlet.LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/</url-pattern>
</servlet-mapping>
2 在LoginServlet的doGet方法中,重定向到/blog/blog.html
resp.sendRedirect("/blogStudy/blog/blog.html"); return;
【通过以上1,2步,浏览器会提示网站有“重定向循环”的错误】
要如何实现像weibo.com那样,会根据登陆信息来实现访问根目录重定向到自己的主页上呢?
如果是使用 “/” 这种 拦截所有请求的 Servlet ,就必须:
1)自己处理类似 *.html, *.jsp ... 等等所有请求
2)在 web.xml 的 servlet 配置中,添加参数 <load-on-startup>1</load-on-startup> 。将 *.html, *.jsp ..等等静态文件交由 Tomcat 的 DefaultServlet 处理。
如果你不想自己手动处理静态文件。。就要添加<load-on-startup>1</load-on-startup>
例如 web.xml 这样配置:
<servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>com.servlet.LoginServlet</servlet-class>
<load-on-startup>1</load-on-startup> </servlet>
多个 servlet 对同一个 URL 映射时,Tomcat 会根据 servlet 的先后顺序来处理,将你自己的 servlet 的顺序设置为 1 ,那么 tomcat 在接收到例如 *.html, *.jsp 等之类的映射时,会先分派给 DefaultServlet (优先级就会比你的 Servlet 高)处理。当然,如果你自己有一套 *.html等的处理机制,就不必加 load-on-startup,自己进行处理。
######O(∩_∩)O谢谢!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。