【JavaWeb】(6)Servlet

1. Servlet基礎

Servlet是在服務器上運行的小程序。一個Servlet就是一個Java類,並且可以通過“請求-響應”辯稱模型來訪問這個駐留在服務器內存裏的Servlet程序。


2. Tomcat容器等級

Tomcat容器分爲四個等級,Servlet的容器管理Context容器,一個Context對應一個Web工程。



3. 創建Servlet

Servlet接口有3個方法:init()、Service()、destroy(),GenericServlet是一個與協議無關的抽象類,HttpServlet是一個實現了http協議的抽象類,我們自定義Servlet一般要重寫doGet()和doPost()方法

(1). 創建一個類繼承HttpServlet類

(2). 重寫doGet()或者doPost()方法(也可以覆蓋其他方法)

(3). 在web.xml中註冊Servlet

例如:

public class FirstSerlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		System.out.println("get請求------");
		resp.setContentType("text/html;charset:UTF-8");
		PrintWriter pw = resp.getWriter();
		pw.print("<h1>hello---get</h1>");
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		System.out.println("post請求------");
		PrintWriter pw = resp.getWriter();
		pw.print("<h1>hello---post</h1>");
	}
}
web.xml中配置:

	<servlet>
		<servlet-name>FirstServlet</servlet-name>
		<servlet-class>com.thr.servlet.FirstSerlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>FirstServlet</servlet-name>
		<url-pattern>/servlet/FirstServlet</url-pattern>
	</servlet-mapping>
JSP文件:

	<a href="servlet/EclipseServlet">get方式跳轉Servlet</a>
	<form action="servlet/EclipseServlet" method="post">
		<input type="submit" value="post方式跳轉Servlet">
	</form>

Servlet中如果遇到中文亂碼顯示問題,可以在doPost()或者doGet()中開頭加入以下語句即可解決:

		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=utf-8");


4. Servlet生命週期

(1). 初始化階段,調用init()方法。

(2). 響應客戶請求階段,調用service()方法。由service()方法根據提交方式選擇執行doGet()或者doPost()方法。

(3). 終止階段,調用destroy()方法。


5. Tomcat裝載Servlet的三種情況

(1). Servlet容器啓動時自動裝載某些Servlet,實現它只需要在web.xml文件中的<Servlet></Servlet>之間添加如下代碼:<loadon-startup>1</loadon-startup>,數字越小表示優先級別越高。

(2). 在Servlet容器啓動後,客戶首次向Servlet發送請求。

(3). Servlet類文件被更新後,重新裝載Servlet。

一個Servlet的方法執行順序:構造方法--->init()方法--->doGet()方法或者doPost()方法--->停止服務器執行destroy()方法。


6. Servlet與九大內置對象



7. Servlet路徑跳轉

絕對路徑:放之四海而皆準的路徑
相對路徑:相對與當前資源的路徑

(1). 超鏈接和表單跳轉

當使用超鏈接訪問地址時,如:

<span style="white-space:pre">	</span><a href="/servlet/HelloServlet">訪問HelloServlet</a>
那麼,它會直接訪問服務器下的路徑:http://localhost:8080/servlet/Helloworld。

當修改爲:

	<a href="servlet/HelloServlet">訪問HelloServlet</a>
訪問就變成了:http://localhost:8080/應用名/servlet/Helloworld。

使用絕對路徑訪問可以使用path變量:

<%
	String path = request.getContextPath();
%>
	<a href="<%=path%>/servlet/訪問HelloServlet">訪問HelloServlet</a>

也是可以達到相同目的的。這個path表示的是項目的根目錄。

表單中action的URL地址寫法,和超鏈接是完全一致的。

(2). web.xml的設置

web.xml中的<url-pattern>標籤中,記住要使用"/"開頭,這裏的"/"表示的是項目的根目錄

(3). Servlet的跳轉

請求重定向的方式:

使用request.getContextPath()獲取上下文對象。

<span style="white-space:pre">	</span>response.sendRedirect(request.getContextPath() + "/test.jsp");

服務器內部跳轉:

記得前面加上"/",表示的是項目根目錄。

	request.getRequestDispatcher("/text.jsp").forward(request, response);
或者使用

	request.getRequestDispatcher("../text.jsp").forward(request, response);


8. 獲取初始化參數

web.xml中配置Servlet時,可以配置一些初始化參數。而在Servlet中可以通過ServletConfig接口提供的方法來取得這些參數。

在<Servlet>標籤內配置:

<span style="font-family:Microsoft YaHei;">		<init-param>
			<param-name>item</param-name>
			<param-value>NBA</param-value>
		</init-param></span>
然後在需要取得初始化參數的Servlet中的init()方法中使用:

<span style="font-family:Microsoft YaHei;">		String item = getInitParameter("item");</span>
即可取得我們設定的NBA。

9. MVC

MVC模式:MVC(Model、View、Controller),是軟件開發過程中比較流行的設計思想。旨在分離模型、控制、視圖。是一種分層思想的體現。



10. Model2

JavaWeb的Model2開發模型就是MVC思想的體現。



發佈了80 篇原創文章 · 獲贊 0 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章