【IT168 文档】在之前的一系列Java EE 6的文章中,已经介绍了诸如CDI和Bean验证等新技术,以及Web分片,Facelets,无接口视图,以及标准API等支持,通过这些特性可以更容易地开发企业或Web应用程序。此外,Java EE 6平台许多地方的安全性也得到了极大的增强,特别是注解现在可以用在更多类型的Java EE组件中了,用于依赖性注入的注解现在也标准化了,使可注入类具有更好的跨框架迁移特性。
注解支持更多类型的Java EE组件
Java EE 5引入了最简单的基于注解的编程模型,在新版本中得到了扩展,可以支持更多类型的Java EE组件,如Servlet和JSF组件。例如,在Web应用程序中再也不用部署描述符定义Servlet了,你需要做的就是使用@WebServlet注解标记一个类,如:
public class CalculatorServlet extends HttpServlet{
public void doGet(HttpServletRequest req, HttpServletResponse res) {
...
}
...
}
@WebServlet注解是Servlet 3.0提供的注解之一,下面是Servlet 3.0中提供的其它注解:
@WebFilter:在Web应用程序中定义Servlet过滤器;
@WebInitParam:指定所有必须传给Servlet或Servlet过滤器的init参数;
@WebListener:注解一个监听器,在特定Web应用程序上下文中获得各种不同操作事件;
@MultipartConfig:在一个Servlet上指定时,表示Servlet的MIME类型是multipart/*。
JSF 2.0中注解支持的一个好处是简化了配置托管Bean的方法,不再需要在JSF配置文件faces-config.xml中通过配置注册一个托管Bean,现在你只需要使用@ManagedBean注解标记托管Bean,并使用RequestScope注解设置其范围即可,如:
public class UserBean {
private String name;
public String getName() {
return name;
}
public void setName(String name) { this.name = name;
}
public UserBean(){}
}
JSF 2.0还提供了其它一些注解,如:
@ManagedProperty:将Bean的属性标记为托管属性;
@ResourceDependency:声明组件将要使用的资源;
@ListenFor:允许组件将特定事件作为一个监听器订阅到组件;
@FacesConverter:将类注册为一个Converter,也就是说,这个类可以执行Object到String,和String到Object的转换;
@FacesValidator:将类注册为一个Validator,也就是说,这个类可以执行验证。
如果你想让一个注解得到处理,无论是Servlet 3.0注解还是JSF 2.0注解,你需要将使用这些注解标记的类放到Web应用程序的WEB-INF/classes目录下,也可以将这些类打包到一个jar文件,然后放到程序的WEB-INF/lib目录下。
在Web分片的例子中,我们在web.xml文件中使用
随着对注解和新方法ServletContext的支持,web.xml对Servlet 3.0来说显得可有可无,也就是说,在应用程序war文件中不再需要包括一个web.xml文件。