@WebInitParam
可以使用@WebInitParam註解來制定Servlet或filter的初始參數。當然我們也可以使用@WebServlet或@WebFileter的initParam屬性來指定初始參數。下面是使用@WebInitParam的例子:
@WebServlet(name = "GetQuoteServlet", urlPatterns ={"/getquote"})@WebInitParam(name = "default_market", value = "NASDAQ")public class GetQuoteServlet extends HttpServlet {@Overrideprotected 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 {@Overrideprotected 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,ServletContextAttributeL
istener,ServletRequestListener,ServletRequestAttributeListener,HttpSessionListener和HttpSessionAttributeListener介面的類上。在下面的例子中,該類實現了ServletContextListener介面。
@WebListenerpublic class QuoteServletContextListener implementsServletContextListener {public void contextInitialized(ServletContextEvent sce) {ServletContext context = sce.getServletContext();context.setInitParameter(“default_market”, “NASDAQ”);}public void contextDestroyed(ServletContextEvent sce) {}}
@MultipartConfig
使用@MultipartConfig註解來指定Servlet要求的multipartMIME類型。這種類型的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,容器才會處理註解。