在花了一些时间用于servlet和JSP之后,我正在尝试学习一些关于JSF的东西.我已经学习了基础知识,做了几个简单的例子,有一个基本的"工作流程"概念,但我仍然无法理解javax.faces.webapp.FacesServlet的用途.
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
我知道"Faces Servlet"它只是一个"内部"名称,仅用于XML并且它与一个类绑定,在这种情况下:javax.faces.webapp.FacesServlet.但是这个班级到底在哪里?!我正在使用Eclipse,创建了一个新的动态项目,GlassFish 4.0作为服务器,JSF 2.0作为配置(选择了没有库),我也没有导入任何jar.它怎么样?当我尝试用JBoss运行相同的东西时,我必须导入一个javax.faces-2.2.2.jar文件.
好吧,该库可能已经包含在GlassFish中,因为它可以工作但是......如果我尝试在另一台服务器上部署我的应用程序,我会遇到任何问题吗?像JBoss或Websphere.
简而言之:使用JSF技术时的先决条件是什么:)
谢谢.
javax.faces.webapp.FacesServlet
是一个实现Servlet
接口的类.为了在您的应用程序中识别,您应该将其作为一个文件添加到web.xml中<servlet>
.这基本上是在这个配置中完成的:
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
Run Code Online (Sandbox Code Playgroud)
现在,我们可以使用Faces Servlet名称在web.xml文件中引用此类.接下来要做的是定义将由此servlet处理的URL.这在以下配置中完成:
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
因此,对此应用程序服务器的以jsf后缀结尾的任何GET或POST请求都将由Faces Servlet处理.您可以使用其他URL模式进行servlet映射.这里有更好的解释:JSF Facelets:有时我看到URL是.jsf,有时是.xhtml.为什么?
如果我尝试在另一台服务器上部署我的应用程序,我会遇到任何问题吗?像JBoss或Websphere?
如果应用程序服务器是符合Java EE 5的服务器,那么您将通过使用JSF 1.2形式的Mojarra实现来访问此servlet.对于符合Java EE 6的服务器,这将是针对JSF 2.x的Mojarra实现(请查看应用程序服务器的注释以了解确切的版本).目前,使用GlassFish 4,您可以获得Mojarra for JSF 2.2.
如果应用程序服务器不是Java EE兼容服务器(例如Tomcat),则必须在Web应用程序的WEB-INF/lib文件夹中手动添加库.要添加哪些库?取决于JSF版本及其要求(进一步阅读).
使用JSF技术时的先决条件是什么?
这在StackOverflow JSF wiki中有所介绍.从那里采取:
最低要求
- JSF 1.0和1.1至少需要Servlet 2.4/JSP 2.0和Java 1.4.
- JSF 1.2适用于Servlet 2.4,但需要最少的JSP/EL 2.1,它与Servlet 2.5密切相关,因此它毕竟需要Servlet 2.5.如果您将Facelets 1.x中的JSP 2.1替换为默认视图技术,那么您可以在Servlet 2.4上使用JSF 1.2.它至少需要Java 1.5.
- 默认情况下使用的JSF 2.0 Facelets 2.x需要最少的EL 2.1,它与Servlet 2.5密切相关,因此它需要在所有Servlet 2.5之后.如果您提供自己的EL 2.1 API/impl,那么理论上您可以在Servlet 2.4上运行JSF 2.0.它至少需要Java 1.5.
- JSF 2.1使用一些Servlet 3.0特定功能,但向后兼容Servlet 2.5.那些Servlet 3.0功能是可选的.
- JSF 2.2至少需要Servlet 3.0,因为新的文件上传组件在内部使用标准的Servlet 3.0 API,而不需要第三方库.它至少需要Java 1.6.
Servlet 2.4容器的示例是Tomcat 5.5.x,JBoss AS 4.x和Sun Java Application Server.
Servlet 2.5容器的示例是Tomcat 6.0.x,JBoss AS 5.x和GlassFish 2.x.
Servlet 3.0容器的示例是Tomcat 7.0.x,JBoss AS 6.x和7.x以及GlassFish 3.x.
Servlet 3.1容器的示例是Tomcat 8.0.x,WildFly 8.x和GlassFish 4.x.
归档时间: |
|
查看次数: |
2047 次 |
最近记录: |