读书人

Servlet3.0引来的新特性介绍(2)

发布时间: 2012-12-24 10:43:14 作者: rapoo

Servlet3.0引入的新特性介绍(2)

@WebInitParam
可以使用@WebInitParam注解来制定Servlet或filter的初始参数。当然我们也可以使用@WebServlet或@WebFileter的initParam属性来指定初始参数。下面是使用@WebInitParam的例子:

@WebServlet(name = "GetQuoteServlet", urlPatterns = {"/getquote"})@WebInitParam(name = "default_market", value = "NASDAQ")public class GetQuoteServlet extends HttpServlet {    @Override    protected void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        response.setContentType("text/html;charset=UTF-8");        PrintWriter out = response.getWriter();        try {            String market = getInitParameter("default_market");            String symbol = request.getParameter("symbol");            out.println("<h1>Stock Price in " + market + " is</h1>" + StockQuoteBean.getPrice(symbol, market));        } finally {            out.close();        }    }}


下面是使用initParam属性的例子:
@WebServlet(name = "GetQuoteServlet",            urlPatterns = {"/getquote"},            initParams={@WebInitParam(name="default_market",  value="NASDAQ")}           )public class GetQuoteServlet extends HttpServlet {    @Override    protected void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        response.setContentType("text/html;charset=UTF-8");        PrintWriter out = response.getWriter();        try {            String market = getInitParameter("default_market");            String symbol = request.getParameter("symbol");            out.println("<h1>Stock Price in " + market + " is</h1>" + StockQuoteBean.getPrice(symbol, market));        } finally {            out.close();        }    }}


@WebListener
@WebListener注解被应用在作为listener监听web应用程序事件的类上,所以@WebListener能够被应用在实现了 ServletContextListener,ServletContextAttributeListener,ServletRequestListener,ServletRequestAttributeListener,HttpSessionListener 和HttpSessionAttributeListener接口的类上。在下面的例子中,该类实现了ServletContextListener接口。
@WebListenerpublic class QuoteServletContextListener implements ServletContextListener {   public void contextInitialized(ServletContextEvent sce) {   ServletContext context = sce.getServletContext();context.setInitParameter(“default_market”, “NASDAQ”);}public void contextDestroyed(ServletContextEvent sce) {}}


@MultipartConfig
使用@MultipartConfig注解来指定Servlet要求的multipart MIME类型。这种类型的MIME附件将从request对象中读取。

The Metadata and Common Annotations元数据与通用的注解
除了以上的Servlet特定的注解之外,Servlet3.0还支持JSR175(Java元数据规范)和JSR250(Java平台通用注解)所规定的注解,包括:
* 安全相关的注解,如 @DeclareRoles 和 @RolesAllowed
* 使用EJB的注解,如 @EJB 和 @EJBs
* 资源注入相关的注解,如 @Resource 和 @Resources
* 使用JPA的注解,如 @PersistenceContext, @PersistenceContexts, @PersistenceUnit, 和 @PersistenceUnits
* 生命周期的注解,如 @PostConstruct和 @PreDestroy
* 提供WebService引用的注解,如 @WebServiceRef and @WebServiceRefs

注解和web.xml哪个会生效
注解的引入使得web.xml变成可选的了。但是,我们还是可以使用web.xml。容器会根据web.xml中的metadata-complete元素的值来决定使用web.xml还是使用注解。如果该元素的值是true,那么容器不处理注解,web.xml是所有信息的来源。如果该元素不存在或者其值不为true,容器才会处理注解。



转载自 开发者的天空

读书人网 >编程

热点推荐