为Servlet设置JSP位置

时间:2010-11-24 15:45:47

标签: java jsp servlets

我有基于JSP的简单Web应用程序。应用程序的根看起来像这样:

|
|--META-INF
|--WEB-INF
|  `--web.xml
|--img
|--css
|--index.jsp
|--some1.jsp
|--some2.jsp
|--some3.jsp

其中web.xml包含以下行:

<servlet>
    <servlet-name>servlet-jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>servlet-jsp</servlet-name>
    <url-pattern>/*.jsp</url-pattern>
</servlet-mapping>

现在我想要更改项目的文件结构 - 将所有* .jsp文件移动到特殊目录:

|
|--META-INF
|--WEB-INF
|  `--web.xml
|--img
|--css
|--jsp
   |--index.jsp
   |--some1.jsp
   |--some2.jsp
   |--some3.jsp

当“/some1.jsp”url请求时,是否可以配置“servlet-jsp”来处理jsp / some1.jsp?

3 个答案:

答案 0 :(得分:3)

我认为很多(所有?)容器已经将*.jsp(在任何目录中)映射到JSP servlet,因此只有在想要为JSP使用自定义文件扩展名时才需要编写这样的显式servlet映射。 。更直接地说明:您可以删除您编写的servlet映射。

最好通过定义filter mapping来完成//jsp中对JSP文件的转发请求。您还需要编写自己的过滤器类。过滤器有点像Servlets,但它们不像JSP或Servlet那样生成内容,而是更像是一个流量控制器,[重新]引导请求。

答案 1 :(得分:1)

您可以使用/jsp/

创建映射到request.getRequestDispatcer(targetJsp).forward()的servlet,然后在servlet映射之后解析路径并转发到JSP

答案 2 :(得分:0)

<servlet-mapping>
    <servlet-name>servlet-jsp</servlet-name>
    <url-pattern>/jsp/*.jsp</url-pattern>
</servlet-mapping>

我认为这应该可以解决问题。