学习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 简介及其执行流程