技术开发 频道

Java EE 6开发总结:注解支持与Profile

  【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注解标记一个类,如:

@WebServlet(name="CalculatorServlet", urlPatterns={"/calc", "/getVal"})
    
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注解设置其范围即可,如:

import javax.faces.bean.ManagedBean; 
    import javax.faces.bean.RequestScoped; 
     @ManagedBean(name="userBean"
    @RequestScoped
    
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文件中使用元素通知Web容器是否要寻找注解,如果你将设为false,或者在文件中不指定元素,那么在部署期间,容器必须扫描注解和Web分片,为Web应用程序构建有效的元数据。如果将设为true,将由部署描述符为Web应用程序提供所有的配置信息。在这个例子中,Web容器不会搜索注解和Web分片。

  随着对注解和新方法ServletContext的支持,web.xml对Servlet 3.0来说显得可有可无,也就是说,在应用程序war文件中不再需要包括一个web.xml文件。

0