java web開發(四)Servlet
一動態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
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