文章目錄
- 1.Servlet的作用
- 2.1 idea中搭建,部署,運行一個web專案
- 3.開發步驟
- 3.1 xml配置:web.xml中配置Servlet
- 3.2注解方式
- 4.Tomcat 與Servlet的關系
- 5.Servlet相關的API
- 5.1 HttpServletRequest
- 5.2 HttpServletResponse
1.Servlet的作用
為什么要學習Servlet呢?

服務資源:
(1)tomcat部署的專案目錄中,根目錄下,除了WEB-INF檔案夾外的,當作前端資源(靜態資源)
(2)Servlet后端代碼代碼提供的動態資源(所謂的動態資源是以代碼的方式,決議http請求),回傳回應(可以提供動態的body字串)),
2.1 idea中搭建,部署,運行一個web專案
在web.xml檔案中配置Servlet.
(1)首先創建一個Maven專案,然后給pom.xml配置一些引數,
<packaging>war</packaging> //設定為web專案
<dependencies>
<dependency> //web后端開發的Servlet依賴包
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
(2)設定web專案開發結構需要的web資源檔案夾,把webapp檔案夾復制粘貼到src下面的main,

(3)打開Maven面板進行重繪,讓web專案設定生效,
(4)配置tomcat,部署專案(和前面部署一樣)https://blog.csdn.net/qq_52206533/article/details/115755048
idea中部署web專案,運行tomcat,不需要打包這個步驟,(應用背景關系路徑是自己指定的),
(5)啟動tomcat
(6)訪問資源(輸入url訪問資源),驗證配置是否成功,web專案是否正確,tomcat是否運行正確,
3.開發步驟
3.1 xml配置: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"
metadata-complete="true">
<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
3.2注解方式
Servlet開發的步驟:
- 1.使用@WebServlet("/服務資源路徑")
- 2.繼承HttpServlet
- 3.重寫XXX的方法,表示提供XXX的服務方法(請求方法)
package org.example.servelt;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/**
* Servlet的作用:
* 決議http請求,回傳http回應,以帶碼的方式提供服務資源(動態資源)
*
* 重寫的方法,包含兩個物件,request response
* 一般是通過request方法來獲取http請求的部分資訊
* 現在雖然已經有response,但是還沒有回傳回應的http資料
*我們自己的程式:設定response物件的內容
* tomcat:通程序式方法回傳,通過response物件組裝成http回應
*
* 注意事項:
* 1.服務路徑必須以/開頭
* 2.多個Servlet服務路徑不能重復
*/
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//所有的Servlet重寫的方法都有比較固定的處理
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/html");
//模擬回應動態的網頁,從其他地方獲取(如資料庫)
String name="張三";
//通過response物件獲取輸出流,輸出流輸出的字串為body內容
PrintWriter pw=resp.getWriter();
pw.println("<h2>歡迎您 "+name+"</h2>");
}
}
4.Tomcat 與Servlet的關系
Tomcat是一個web服務器,也是一個Servlet容器,作為servlet容器,管理Servlet物件的生命周期(實體化物件,方法呼叫)
Tomcat是一個java程式,tomcat提供的是基于java開發的,開發時并不知道要實體化哪個Servlet物件,基于反射來實體化Servlet物件,
掃描專案類加載路徑(WEB-INF/classes),使用了Servlet注解的類,再基于反射實體物件,

1.tomcat自動的決議http協議的資料
2.根據請求的應用背景關系路徑,查找應用
3.根據服務路徑,找Servlet
4.找到Servlet,讓Servlet處理http請求,回傳回應,呼叫Servlet物件的的service方法,
5.Servlet相關的API
5.1 HttpServletRequest
(1)設定請求編碼的方法:
req.setCharacterEncoding("UTF-8");
(2)通過請求頭的鍵來獲取值
getHeader(String name)
(3)獲取請求方法
getMethod()
(4)獲取請求資料:通過鍵來獲取值
String getParameter(String name)
這個方法能獲取到的資料:
1.獲取queryString中的資料
2.Content-Type為application/x-www-form-urlencoded body的格式和queryString 的格式一樣可以獲取到,
5.2 HttpServletResponse
(1)設定請求編碼的方法:
resp.setCharacterEncoding("UTF-8");
(2)添加回應頭
addHeader(String name,String value)
(3)設定狀態碼
setStatus(int sc)
不設定是回傳200狀態碼,
(4)設定資料型別
resp.setContentType("text/html");
回應有body,一定要設定資料型別
(5)通過response物件獲取輸出流,輸出流輸出的字串為body內容
PrintWriter pw=resp.getWriter();
pw.println("<h2>歡迎您 "+name+"</h2>");
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/278069.html
標籤:java
上一篇:實操記錄,帶步驟|使用Spring Boot + MyBatis + FreeMarker + Ehcache進行web開發
