Tomcat 7.0 servlet 標註配置

來源:互聯網
上載者:User

在使用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配置類似。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.