使用@WebServlet
在開始使用@WebServlet之前有個先決條件,那就是要有一個Servlet程式。如果沒有的朋友請到『第一個Servlet程式』這裡有範例程式提供參考。準備好Servlet,接下來就要告訴Web
Container這個Servlet的一些資訊。在這當中有兩種方法:
- 使用web.xml定義
- 使用@WebServlet (Servlet 3.0以上才支援)
使用web.xml
要使用web.xml需要在Web應用程式中的WEB-INF目錄建立一個web.xml檔案定義Servlet的資訊,相關內容如下:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>com.learn.servlet.HelloServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/helloUser.view</url-pattern> </servlet-mapping> </web-app>
這樣的檔案稱為部署描述檔(Deployment Descriptor)。使用web.xml定義會比較麻煩,但web.xml中的設定會覆蓋Servlet中的Annotation設定(也就是第二種方法)。那現在透過這個web.xml是如何定義Servlet的資訊。舉例,若有client發出/helloUser.view的請求,那將會由HelloServlet這個Servlet處理,這分別是由<servlet-mapping>中的<url-pattern>與<servlet-name>定義。
使用@WebServlet
在 Servlet 3.0 中,已經可以使用 Annotation 告知容器哪些 Servlet 會提供服務。例如在一個 Servlet 中:
@WebServlet("/hello.view") public class HelloServlet extends HttpServlet { ...... }
只要 Servlet 有設定 @WebServlet 屬性,容器就能自動讀取當中的資訊。以上面的例子為例,@WebServlet 告訴容器,如果URL是 /hello.view , 就由 HelloServlet 的實例提供服務。
參考資料
- Servlet&JSP 教學手冊
沒有留言:
張貼留言