JSF1与JSF2的区别

阅读更多

很多年前用过JSF,当时还是1.2版本。现在JSF最新的版本是2.2.11

http://mvnrepository.com/artifact/com.sun.faces/jsf-impl

JSF1和JSF2在使用上有很大区别,JSF2做了很多改进,简化了开发人员的工作。

写这篇文档的目的是为那些维护legacy系统,想迁移到JSF2的同学提供参考。

 

1)现在大都使用maven作为编译和打包的工具,同时也是项目管理的工具。在pom.xml文件中,JSF2只需要jsf-api.jar和jsf-impl.jar两个jar包就够了。配置如下

 	
            com.sun.faces
            jsf-api
            2.2.11
            compile
        
        
            com.sun.faces
            jsf-impl
            2.2.11
            compile
        

而JSF1不仅需要这两个jar包,还需要jstl.jar和servlet-api.jar

              
		  javax.faces
		  jsf-api
		  1.2_14
		
		
		
		  javax.faces
		  jsf-impl
		  1.2_14
		
		
		
			javax.servlet
			jstl
			1.2
		

		
			javax.servlet
			servlet-api
			2.5
		

 这里要注意jsf jar包的groupId在JSF1和JSF2中是不同的。

JSF1.2

javax.faces

JSF2.2

com.sun.faces

 

2)JSF2支持annotation,而JSF1不支持,只能在faces-config.xml中配置manangedBean。

@ManagedBean

@SessionScoped

在faces-config.xml中,JSF1和JSF2也有不同:JSF1使用dtd来定义xml文件格式,而JSF2使用xsd来定义文件格式。





 




 

 




 

3) JSF1前端页面只支持jsp,并且使用标签,例如


<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>



JSF in Action - Hello, world!


	
		
		

 JSF2中支持xhtml,也就是说,前端页面只负责显示,没有任何java代码。例如




	Hello World
	
	
	


	
		


Hello, #{hello.name}!

 

4)在web.xml中JSF1和JSF2都可以这样配置

  
    faces
    javax.faces.webapp.FacesServlet
    1
  
  
    faces
    /faces/*
  

 JSF2还可以指定文件类型为xhtml,例如

	
		Faces Servlet
		javax.faces.webapp.FacesServlet
		1
	
	
		Faces Servlet
		*.xhtml
	

 

以上就是JSF1和JSF2使用过程中的主要区别。注意这些,可以帮助你在升级的过程中少走弯路。

 

推荐学习资源

http://www.coreservlets.com/JSF-Tutorial/jsf2/

http://www.tutorialspoint.com/jsf/

 

 

 

 

 

 

 

 

你可能感兴趣的:(JSF)