Tomcat 7.0 servlet 标注配置

来源:互联网 发布:知世故而不世故原句 编辑:程序博客网 时间:2024/05/16 16:13


http://blog.csdn.net/zw_2011/article/details/7432839

在使用tomcat7.0+eclipse j2ee时,新建Dynamic Web Project时,会让选择是否生成web.xml.无论选择与否,此时新建一个servlet,可以不在web.xml中进行servlet的配置,只需在相应的servlet中进行标注配置即可,而且标注远远比配置web.xml简单。

新建一个Dynamic Web Project,取名servlet。如下图:



服务器选择Tomcat7.0,之后点击下一步两次进入到如下界面:



 

会发现生成web.xml选项默认为未选中,不理会之,继续。点击完成。生成的工程中已经没有了web.xml文件。



 

一、如何标注配置Servlet

1、新建一个Servlet,如下:



 

不做任何修改,点击完成。

以下是新生成的servlet完整类。

 

packagecn.onlylove.servlet;

importjava.io.IOException;

importjavax.servlet.ServletException;

importjavax.servlet.annotation.WebServlet;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

 

@WebServlet("/HelloWroldServlet")

publicclassHelloWroldServletextendsHttpServlet {

  privatestaticfinallongserialVersionUID= 1L;

  protectedvoiddoGet(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {

   }

  protectedvoiddoPost(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {

   }

}

 

可以发现,在Servlet类名前,已经存在如下标注:

@WebServlet("/HelloWroldServlet"),运行tomcat,在浏览器中输入http://localhost:8080/HelloWroldServlet.

可以发现,未报异常等错误信息。说明该servlet访问是正确的。

 

比较:相对于web.xml中的配置,需要如下:

<servlet>

   <servlet-name>HelloWorld</servlet-name>

   <servlet-class>cn.onlylove.servlet.HelloWroldServlet</servlet-class>

 </servlet>

 <servlet-mapping>

   <servlet-name>HelloWorld</servlet-name>

   <url-pattern>/HelloWroldServlet</url-pattern>

 </servlet-mapping>

对于web.xml中的配置,在标注中通通都有配置。上述配置通过标注可以改成如下:

@WebServlet(name="HelloWorld",value="HelloWroldServlet")

由于是在对应的类中配置的信息,因而则可以不用在标注中配置class了。

另一个问题,在web.xml中一个servlet可以配置多个servlet-mapping,只要在其中指定相同的servlet-name即可。而在标注中使用value只能指定一个。其实,标注也可以指定多个的,但不再用value,而是用urlPatterns数组。如下配置

@WebServlet(name="HelloWorld",urlPatterns={"/HelloWroldServlet","/HelloWorld"})。如此,通过

http://localhost:8080/servlet/HelloWroldServlet

http://localhost:8080/servlet/HelloWorld

两个都可以进入同一个servlet

当标注与web.xml同时配置时,标注无效。

 

 

2、如何配置初始化参数。

将标注改成:

@WebServlet(name="HelloWorld",urlPatterns={"/HelloWroldServlet","/HelloWorld"},initParams={@WebInitParam(name="id",value="yeh"),@WebInitParam(name="name",value="九天玄烨")})

注意initParams的配置,而后将doGet()方法改成:

 

response.setContentType("text/html;charset="UTF-8"");PrintWriter out=response.getWriter();

out.println(this.getInitParameter("id"));

out.println(this.getInitParameter("name"));

out.flush();

out.close();

 

再次访问该servlet 即可获得这两个参数的值。其它配置一致,无益为String型,没有什么变换的地方。此处仅为解释一下类型数组的配置。无它。

 

另看网上有人将WebServlet与WebInitParam分开来进行标注,如此而得到初始化参数,我没有成功。即类似如下:

 

@WebServlet(“hello”)

@WebInitParam(name=”id”,value=”yeh”)

Public class ……

 

此种方式我没有成功,看大家有没有什么建议。或者tomcat7.0的版本的细微差别。我的是tomcat7.0.12

WebFilter,WebListener配置类似。

0 0
原创粉丝点击