Servlet中根目录重定向的问题

吴理歌 发布于 2014/08/03 21:03
阅读 1K+
收藏 0

第一次在社区发问题,

初学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那样,会根据登陆信息来实现访问根目录重定向到自己的主页上呢?


加载中
1
东胜神洲
东胜神洲

如果是使用 “/” 这种 拦截所有请求的 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谢谢!
返回顶部
顶部