Java Servlet 3.0新特性例子

jopen 10年前發布 | 33K 次閱讀 Servlet Java開發

Servlet3.0  特性:

1.Servlet、Filter、Listener無需在web.xml中進行配置,可以通過Annotation進行配置;

2.模塊化編程,即將各個Servlet模塊化,將配置文件也分開配置。

3.Servlet異步處理,應對復雜業務處理;

4.異步Listener,對于異步處理的創建、完成等進行監聽;

5. 文件上傳API簡化;


備注:tomcat7.0 以上才支持servlet3.0 


servlet 3.0 目的:

1:簡化了開發

2:模塊化的結構更易于部署

特性1---------------------------------------------------------------------------------------------------------

有了Annotation 就大大簡化了web.xml ,一個servlet 的定義無需在web.xml寫入任何代碼:

原來定義servlet 的方式:

<servlet>    
    <servlet-name></servlet-name>
    <servler-class></servlet-class>
    <load-on-startup></load-on-startup>
    <init-param>
         <param-name></param-name>
         <param-value></param-value>
    </init-param>
</servlet>
<servlet-mapping>
     <servlet-name></servlet-name>
      <url-pattern></url-pattern>
</servlet-mapping>

而現在主需要:


import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;

/*
 * 解釋:
 name :當前Servlet 的名稱
 urlPatterns :當前Servlet 請求url
 loadOnStartup: tomcat 啟動時就初始化改Servlet
 initParam:初始化參數(可以是多個)
 name:參數名
 value :參數值
 */
@WebServlet(name = "MyServlet", urlPatterns = { "/myServlet" }, loadOnStartup = 1, initParams = { @WebInitParam(name = "name", value = "java developer"), @WebInitParam(name = "age", value = "20") })
public class MyServlet3 extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // TODO Auto-generated method stub
        System.out.println("調用do get 方法; ");
        String name = getInitParameter("name");
        System.out.println("獲取初始化參數:" + name);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }

    public void init(ServletConfig config) throws ServletException {
        System.out.println("Servlet  初始化");
        super.init(config);
    }
}


這樣就完成了一個servlet 的定義,通過瀏覽器訪問該servlet 看效果吧。


同理 filter  和 listener 的定義 也可以通過注釋來完成。

注釋方式:

Filter  :

@WebFilter(filterName="",urlPattern={"/"});

Listener:


@WebListener


-------------------------------------------------------------------------

另外補一下servlet 中  doget、dopost、service  方法區別


當servlet 中重寫了父類的 service 后,即聲明了當前servlet  用來處理業務而非跳轉,此時goget、dopost 方法失效。


大白話:

需要servlet 跳轉的 就用 doget、dopost ,此時別重寫父類的service 方法。


需要servlet 處理業務不進行跳轉的 就重新父類的service方法。


 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!