1. 程式人生 > 實用技巧 >java web開發(四)Servlet

java web開發(四)Servlet

>>> hot3.png

一動態web技術

開發動態web的技術,常見的有ASP,PHP,JSP和Servlet。基於java的動態web開發,Sun公司提供了Servlet和JSP兩種技術。

二 Servlet生命週期

1.初始化階段

當客戶端向Servlet容器發出HTTP請求要求訪問Servlet時,Servlet容器首先會解析請求,檢查記憶體中是否已經有了該Servlet物件,如果有直接使用該Servlet物件,如果沒有就建立Servlet例項物件,然後通過呼叫init()方法實現Servlet的初始化工作。在Servlet的整個生命週期內,init()方法只被呼叫一次。

2.執行階段

在這個階段,Servlet容器會為這個請求建立代表HTTP請求的ServletRequest物件和代表HTTP響應的ServletResponse物件,然後將他們作為引數傳遞給Servlet的service()方法。service()方法從ServletRequest物件中獲得客戶請求資訊並處理請求,通過ServletResponse物件生成響應結果。在Servlet的整個生命週期中,對於Servlet的每一次請求,Servlet容器都會呼叫一次Servlet的service方法,並且建立新的ServletRequest和ServletRequest物件。

3.銷燬階段

當伺服器關閉或web應用被移出容器時,Servlet隨著web應用的銷燬而銷燬,在銷燬Servlet之前,Servlet容器會呼叫Servlet的destroy()方法。

三 ServletConfig和ServletContext

1.ServletConfig

在web.xml檔案中可以使用<init-param>元素對一些配置引數進行設定。當Tomcat初始化一個Servlet時,會將該Servlet的配置資訊封裝到ServletConfig物件,並將這個物件作為引數傳遞給init()方法,ServletConfig提供了一系列獲取配置資訊的方法。

2.ServletContext

當Servlet容器啟動時,會為每一個Web應用建立一個唯一代表當前應用的ServletContext物件,該物件封裝了當前Web應用的所有資訊,而且實現多個Servlet之間資料的共享。

  • 獲取web.xml中配置的引數
  • 實現多個Servlet物件共享資料
  • 獲取Web應用下的資原始檔

四 IDEA開發Servlet

1.新建web工程

https://my.oschina.net/kun123/blog/761129

2.新建Servlet

114628_VlLJ_2832792.png

package com.cary.demo;

import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * Created by xi on 2017/5/29.
 */
public class HelloServlet extends GenericServlet {
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        PrintWriter writer = servletResponse.getWriter();
        writer.println("HelloServlet");
    }
}

3.web.xml中註冊Servlet

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>com.cary.demo.HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/HelloServlet</url-pattern>
    </servlet-mapping>
</web-app>

轉載於:https://my.oschina.net/kun123/blog/911610