1 Servlet簡介
-
Servlet就是sun公司開發動態web的一門技術
-
Sun在這些API中提供一個介面叫做:Servlet。
-
開發一個Servlet程式,只需兩步:
- 編寫一個類,實現Servlet介面
- 把開發好的java類部署到web伺服器中。
實現了Servlet介面的java程式叫做:Servlet。
2 HelloServlet
實現了Servlet介面的預設有兩個類:HttpServlet、GenericServlet。
一般直接繼承HttpServlet,重寫doGet()和doPost()方法。
3 步驟
1、Maven依賴
主要是兩個包:
- servlet-api
- jsp-api
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet.jsp/jsp-api -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
2、寫一個類,繼承HttpServlet
-
重寫doGet()和doPost()方法。
-
由於get或者post只是請求的方式不同,業務邏輯一樣,可以互相呼叫。
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//獲取前端傳送引數
String method =req.getParameter("method");
if("add".equals(method)){
req.getSession().setAttribute("msg", "執行一個add方法~");
}
if("delete".equals(method)){
req.getSession().setAttribute("msg", "執行一個delete方法~~");
}
//進行業務處理
//轉發或重定向到檢視,此處為轉發到指定頁面
req.getRequestDispatcher("/WEB-INF/jsp/home.jsp").forward(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
3、編寫要轉發的頁面 home.jsp
- servlet處理完成後,轉發到 /WEB-INF/jsp/home.jsp頁面。
- 頁面正文展示${msg},表示servlet返回的msg欄位內容。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>zuka</title>
</head>
<body>
${msg}
</body>
</html>
4、編寫Servlet對映
為什麼需要對映:
- Servlet實現類是JAVA程式,是通過瀏覽器訪問,而瀏覽器需要連線web伺服器,所以我們需要在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_4_0.xsd"
version="4.0">
<!--註冊servlet-->
<servlet>
<servlet-name>hi</servlet-name>
<servlet-class>servlet.MyServlet</servlet-class>
</servlet>
<!--servlet請求路徑,斜槓/不能少,否則啟動Tomcat會報錯-->
<servlet-mapping>
<servlet-name>hi</servlet-name>
<url-pattern>/hi</url-pattern>
</servlet-mapping>
</web-app>
5、Tomcat配置
- 首先確保要測試的工程,至少有一個artifact,若一個都沒有,則點選+新增。
- 新增本地Tomcat測試例項。
6、啟動測試
- 首先進入http://localhost:8080/servlet_war/ ,展示預設頁面index.jsp。
- 加上servlet訪問路徑 /hi,並傳送引數 ?method=add,進入頁面 http://localhost:8080/servlet_war/hi?method=add 。
- 對映的servlet 根據前端傳送的引數method=add
- 返回msg內容 "執行了一個add方法~"。
MVC框架做了哪些事情
-
將URL對映到java類或java類的方法。
-
封裝使用者提交的資料。
-
處理請求--呼叫相關的業務處理--封裝響應資料。
-
將響應的資料進行渲染,jsp/html等表示層資料。