15158846557 在线咨询 在线咨询
15158846557 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > 2018-6-13 JSP_Web_MVC开发(29)-基于Annotation配置Servlet -利用注解替代web.xml

2018-6-13 JSP_Web_MVC开发(29)-基于Annotation配置Servlet -利用注解替代web.xml

时间:2023-05-25 04:06:01 | 来源:网站运营

时间:2023-05-25 04:06:01 来源:网站运营

2018-6-13 JSP_Web_MVC开发(29)-基于Annotation配置Servlet -利用注解替代web.xml:Servlet2.5之后对于Servlet的配置不再使用web.xml文件。为了简化程序开发,提供有Annotation支持,即,可以利用注解的方式来完成web.xml文件达到的功能。

如果因为开发工具原因导致注解无法使用,那么此时需要从Tomcat之中拷贝的开发包(servlet-api.jar)到WEB-INF/lib目录下。

1.配置基本Servlet

package cn.mytest.servlet;import java.io.IOException;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.annotation.WebInitParam;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * Servlet implementation class HelloServlet */@WebServlet(//配置WebServlet程序 name="helloServlet",//Servlet名称,与<servlet-name>相同,此名称内部起作用 urlPatterns= {"/hello","/demo/hello/*"}, //配置映射路径,与<url-mapping>相同,支持多个路径 initParams= {//初始化参数 @WebInitParam(value="Haha",name="p1"),//初始化参数的内容和名称 @WebInitParam(value="MySql",name="p2")}, loadOnStartup=1)//配置容器加载Servlet,当值大于0时候容器会在启动的时候就加载这个Servletpublic class HelloServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.getWriter().println("<h1>Hello World!</h1>"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } @Override public void init(ServletConfig config) throws ServletException { System.out.println("*** Servlet初始化:"+config.getInitParameter("p1")); System.out.println("*** Servlet初始化:"+config.getInitParameter("p2")); }}访问链接http://localhost/AWProject/demo/hello/fsdfds,或者http://localhost/AWProject/hello都可以看到页面显示"Hello World!"。




2.配置过滤器

package cn.mytest.filter;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.annotation.WebFilter;import javax.servlet.annotation.WebInitParam;@WebFilter(filterName="encodingFilter", urlPatterns="/*", initParams= {//初始化参数 @WebInitParam(value="UTF-8",name="charSet")//初始化参数的内容和名称 })public class EncodingFilter implements Filter { private String charSet; @Override public void destroy() { } @Override public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { System.out.println("*******************"); arg0.setCharacterEncoding(this.charSet); arg2.doFilter(arg0, arg1); } @Override public void init(FilterConfig arg0) throws ServletException { this.charSet=arg0.getInitParameter("charSet"); }}


3.配置监听器

package cn.mytest.listener;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import javax.servlet.annotation.WebListener;@WebListenerpublic class MyListener implements ServletContextListener { @Override public void contextDestroyed(ServletContextEvent arg0) { // TODO Auto-generated method stub } @Override public void contextInitialized(ServletContextEvent arg0) { System.out.println("**********上下文初始化************"); }}重启动Tomcat就可以看到效果。

随着时代的发展,很少再去编写web.xml配置了。如果是用户自己开发的程序代码,建议都采用Annotation的方式,这样可以减少代码开发的复杂度。

如果要想彻底理解Annotation必须通过开发的历史做一个回顾,历史上针对代码开发有过如下变化

  1. 最早编写代码,所有系统配置的信息都写在程序代码之中
  2. 随后产生了新的设计,使用一些配置文件保存用户的配置信息,通过程序读取。这种模式虽然方便了用户维护,但是开发麻烦。
  3. 将配置文件信息写回到程序之中,但是必须与原始程序做一个有效的区分,采用注解方式(编译的时候注解,运行的时候注解,类级注解)。

关键词:配置,利用,替代,注解

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭