设置 Servlet 的 JSP 位置
我有一个基于 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
我可以配置“servlet-jsp”来处理 jsp/some1.jsp 时请求“/some1.jsp”url?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我认为许多(全部?)容器已经将
*.jsp
(在任何目录中)映射到 JSP servlet,因此只有当您想使用自定义文件扩展名时才需要编写这样的显式 servlet 映射你的 JSP。更直接地说:您可能可以删除您编写的 servlet 映射。将
/
中的 JSP 文件请求转发到/jsp
最好通过定义 过滤器映射。您还需要编写自己的过滤器类。过滤器有点像 Servlet,但它们不像 JSP 或 Servlet 那样生成内容,而是更像流量控制器,[重新]定向请求。I think many (all?) containers already map
*.jsp
(in any directory) to the JSP servlet, so writing such an explicit servlet-mapping is only necessary if you want to use custom file extensions for your JSPs. To state it more directly: you can probably just remove the servlet-mapping you have written.Forwarding requests for JSP files in
/
to/jsp
might best be accomplished by defining a filter mapping. You will also need to write your own filter class. Filters are a little like Servlets, but instead of generating content like a JSP or Servlet would, they are a bit more like a traffic controller, [re]directing requests.您可以创建一个映射到
/jsp/
的 servlet,然后使用request.getRequestDispatcer(targetJsp).forward()
You can create a servlet that is mapped to
/jsp/
then parse the path after the servlet mapping and forward to the JSP, usingrequest.getRequestDispatcer(targetJsp).forward()
我认为这应该可以解决问题。
I think this should do the trick.