1
回答
Servlet中根目录重定向的问题

第一次在社区发问题,

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


<无标签>
举报
吴理歌
发帖于4年前 1回/1K+阅
共有1个答案 最后回答: 4年前

如果是使用 “/” 这种 拦截所有请求的 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,自己进行处理。


--- 共有 1 条评论 ---
吴理歌O(∩_∩)O谢谢! 4年前 回复
顶部