考完研代码知识都忘了,因为要复习springmvc,所以重新复习一下servlet,可能有的地方不对,当时就没学明白,望指正。
首先新建一个Maven工程,
file->new->project,然后啥也不选直接点击next
修改一下工程Name和GroupID,然后点击finish
新建后的maven工程是这样的:
要将maven工程变为一个web工程,在工程名称上右键,如下图
然后该工程就变为了一个web工程(也可以手动添加web包)
添加完成后的项目结构
在pom.xml文件中添加依赖(因为要用到servlet和jsp)
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
</dependency>
</dependencies>
添加后的pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.tanjiu</groupId>
<artifactId>servlet-01</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>15</maven.compiler.source>
<maven.compiler.target>15</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
</dependency>
</dependencies>
</project>
在java包下面新建一个com.tanjiu.servlet包(自己看着建)
然后新建一个HelloServlet类
代码内容(因为是给自己看的,代码内容自己都理解,主要是步骤,所以在此不再详述):
/**
* @Description:
* @Author: 叹久
* @date 2021/1/18 15:01
*/
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 1、获取参数
String method=req.getParameter("method");
System.out.println(method);
if(method.equals("add")){
req.getSession().setAttribute("msg","执行了add方法");
}
if(method.equals("delete")){
req.getSession().setAttribute("msg","执行了delete方法");
}
// 2、调用业务层接口
// 3、视图转发或者重定向(注意:WEB-INF是大写,小写找不到路径)
req.getRequestDispatcher("/WEB-INF/jsp/test.jsp").forward(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
}
然后在WEB-INF包下新建一个jsp文件夹,然后新建form.jsp和test.jsp(实际本文讲解还没用到form.jsp)
test.jsp的内容
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
${msg}
</body>
</html>
然后配置web.xml,配置servlet映射(url-pattern:当发送/hello请求时,servlet会执行HelloServlet类,进行相应的处理,然后进行转发或者重定向,本人理解)
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.tanjiu.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>index.jsp</welcome-file>
</welcome-file-list>
配置tomcat
把下图中圈出来的地方只留一个/,作为默认的访问路径,然后点击apply,再点ok
到此,就配置完成了
启动tomcat服务器,在地址栏输入
http://localhost:8080/hello?method=add
得到下图结果
相当于向后端发送了/hello请求,携带的参数是method=add,然后后端通过web.xml中的servlet映射来执行HelloServlet类中的代码,在代码最后会携带信息进行视图转发或重定向到test.jsp,test.jsp中的${msg}会读取msg所对应的信息显示在页面上
可以看到,前端发送的请求首先是被servlet所获取,然后转发到对应的处理类中进行处理,然后再通过servlet转发会前端。
个人见解,如有错误请指正