Servlet3.0引入的新特性续

本文详细介绍了如何使用Web容器注解(如@WebInitParam、@WebServlet、@WebListener等)进行Servlet和过滤器的初始化配置,以及如何通过web.xml文件进行配置。同时解释了注解和web.xml文件的优先级以及元数据与通用注解的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@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,ServletContextAttributeL
<wbr>istener,ServletRequestListener,ServletRequestAttributeL<wbr>istener,HttpSessionListener和HttpSessionAttributeList<wbr>ener接口的类上。在下面的例子中,该类实现了ServletContextListener接口。<br><strong><br></strong><pre name="code" class="java">@WebListener public class QuoteServletContextListener implementsServletContextListener { public void contextInitialized(ServletContextEvent sce) { ServletContext context = sce.getServletContext(); context.setInitParameter(“default_market”, “NASDAQ”); } public void contextDestroyed(ServletContextEvent sce) { } }</pre> <br><br><br><br> @MultipartConfig<br> 使用@MultipartConfig注解来指定Servlet要求的multipartMIME类型。这种类型的MIME附件将从request对象中读取。<br><br> The Metadata and Common Annotations元数据与通用的注解<br> 除了以上的Servlet特定的注解之外,Servlet3.0还支持JSR175(Java元数据规范)和JSR250(Java平台通用注解)所规定的注解,包括:<br> * 安全相关的注解,如 @DeclareRoles 和 @RolesAllowed<br> * 使用EJB的注解,如 @EJB 和 @EJBs<br> * 资源注入相关的注解,如 @Resource 和 @Resources<br> * 使用JPA的注解,如 @PersistenceContext, @PersistenceContexts,@PersistenceUnit, 和 @PersistenceUnits<br> * 生命周期的注解,如 @PostConstruct和 @PreDestroy<br> * 提供WebService引用的注解,如 @WebServiceRef and @WebServiceRefs<br><br> 注解和web.xml哪个会生效<br> 注解的引入使得web.xml变成可选的了。但是,我们还是可以使用web.xml。容器会根据web.xml中的metadata-complete元素的值来决定使用web.xml还是使用注解。如果该元素的值是true,那么容器不处理注解,web.xml是所有信息的来源。如果该元素不存在或者其值不为true,容器才会处理注解。</wbr></wbr></wbr>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值