【问题标题】:JSF Custom Servlet Mapping To a FileJSF 自定义 Servlet 映射到文件
【发布时间】:2013-11-29 20:03:27
【问题描述】:
下面的代码用于将带有 /photos 模式的 url 映射到 /photos.jsp,因为 <jsp-file> 标签在 jsf 中无效,那么如何使用 jsf 进行这种映射?
我需要这个有两个原因:
1- 至少从肉眼中隐藏我的底层结构
2-简化网址
<servlet>
<servlet-name>photos</servlet-name>
<jsp-file>/photos.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>photos</servlet-name>
<url-pattern>/photos</url-pattern>
</servlet-mapping>
谢谢
【问题讨论】:
标签:
java
jsp
jsf
servlets
jsf-2
【解决方案1】:
至少对肉眼隐藏我的底层结构
WEB-INF 文件夹中的任何内容都无法从您的服务器外部访问。
简化网址
在您的faces-config.xml 中插入以下代码,它会将所有内容从/photo* 重定向到/photo.jsp。
<navigation-rule>
<from-view-id>/photo*</from-view-id>
<navigation-case>
<to-view-id>/photo.jsp</to-view-id>
</navigation-case>
</navigation-rule>
【解决方案2】:
Urls 应该映射到 JSF 控制器组件(servlet 或过滤器),而不是问题中表达的 jsp 文件。下面描述photos.jsp和/photo下的url映射到自定义servletPhoto.java:
<servlet>
<servlet-name>photos</servlet-name>
<servlet-class>package.Photos</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>photos</servlet-name>
<url-pattern>/photos.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>photos</servlet-name>
<url-pattern>/photos/*</url-pattern>
</servlet-mapping>