學習SpringMVC, 今天又複習了一下Servlet
簡單寫一下體會吧
首先, 導入依賴
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
注意: javax.servlet-api 3.0以上可以使用@WebServlet("/XXX")形式, 以前的就需要配置web.xml
寫頁面form.jsp來發送表單請求
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="hello" method="get">
<input type="text" name="method"/>
<input type="submit">
</form>
</body>
</html>
請求方式, get 即發送的內容可以看到. 跳到/hello
編寫servlet之前, 先配置web.xml,
<?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-name>hello</servlet-name>
<servlet-class>top.clearlight.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>-->
<!--超時時間-->
<!--<session-config>
<session-timeout>15</session-timeout>
</session-config>-->
<!--歡迎頁,項目首先打開的頁面-->
<welcome-file-list>
<welcome-file>form.jsp</welcome-file>
</welcome-file-list>
</web-app>
這裏 把servlet和servlet-mapping註釋了, 用的註解形式
然後,書寫servlet來接受請求
package top.clearlight.servlet;
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;
/**
* @author <a href="mail to: [email protected]" rel="nofollow">lxy</a>
* @date 2020/3/26 21:39
*/
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 取得前端參數
String method = req.getParameter("method");
if (method.equals("add")) {
req.getSession().setAttribute("msg", "執行了add方法");
}
if (method.equals("delete")) {
req.getSession().setAttribute("msg", "執行了delete方法");
}
// 2. 調用業務層
// 3. 視圖轉發或者重定向
req.getRequestDispatcher("/WEB-INF/jsp/test.jsp").forward(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
服務器內部進行轉發到 test.jsp
注意: 由於test.jsp放在web的WEB-INF文件夾下, 客戶端是訪問不到的!
test.jsp的內容
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
${msg}
</body>
</html>
圖片來源:Servlet 簡介及其執行流程