1.前言
Servlet(Server Applet)是Java Servlet的简称,Servlet是SpringMVC框架的核心,Servlet在Java Web定义了一组接口规范,为了扩展Java作为Web服务的功能,统一接口。Servlet是运行在服务器短的Java程序,可以对客户端发出的HTTP请求,调用其中的方法处理请求并将请求结果返回给服务器,最终发送到客户端。而我们今天使用的HttpServlet是Servlet的实现类,准确来说是Servlet子类GenericServlet实现了Servlet接口中的方法(init();destory();service()等方法),而HttpServlet继承了GenericServlet,不知道你有没有混乱,那就看下面图解(图1所示)吧!下面我们代码实现一个HttpServlet的小demo来深入了解一下HttpServlet。

2.HttpServlet类实现过程
项目搭建环境
开发工具:IDEA 2020.3.1
JDK版本:1.8.0
项目构建工具maven版本:3.6.3
2.1新建Java Web项目
你可以直接新建时选择Java Entreprise的java企业项目或者新建一个maven项目后再添加Web框架,此处我使用是新建maven项目再添加Web框架,构建流程如下图所示:图2是创建web项目;图3是为maven项目添加web框架

新建完maven项目后,右击项目 ->Add Framworks Support

2.2 pom.xml导入需要的依赖,并在项目的war包也添加全部依赖
1)项目的war包没有这些依赖,运行项目后会报错,需要手动添加依赖(如图4所示),需要依赖如下:
<dependency>
<groupId>org.example</groupId>
<artifactId>spring-mvc</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<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>
2)项目war包添加依赖,Ctrl+Shift+Alt+S快捷键打开项目结构,执行以下操作:

2.3 在包下新建class类继承HttpServlet类,重写doGet和doPost方法
public class HelloServlet 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/hello.jsp").forward(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
2.4 在web目录下的web.xml文件配置servlet映射
找到web/WEB-INF/web.xml,添加刚才新建HelloServlet类的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>hello</servlet-name>
<servlet-class>com.hebeu.servlet.HelloServlet</servlet-class>
</servlet>
<!-- 通过映射/hello访问真实servlet -->
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
2.5 在web/WEB-INF目录下新建jsp目录,new一个hello.jsp响应HelloServlet数据页面
web/WEB-INF/jsp下新建hello.jsp页面,具体代码如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%--解析HelloServlet中msg数据--%>
${msg}
</body>
</html>
注意:新建jsp页面要和转发页面名称路径一致(图5)

2.6 将web项目部署到Tomcat服务器上
图6是添加配置localTomcat服务器;图7是部署web项目war包到服务器;图8是部署后程序路径配置



2.7 浏览器访问
在浏览器地址栏输入http://localhost:8080/hello?method=add或http://localhost:8080/hello?method=delete,页面会出现以下内容那你就成功了


2.8 注意点
Web项目很容易出现问题,即使你一步步跟着教程敲,我是深有体会啊,404和乱码是经常会遇到的,需要注意以下几点:
1)导入某个类时可能有几个名称一样的,别导错了
2)编写代码时要认真注意,可能因为多打了个字母括号出错
3)遇到一直解决不了问题时,不要着急,从头把代码过一遍,自己复述一遍过程
4)404总的来说就是找不到资源文件,原因很多:地址路径不对;代码里的文件路径有误等等
5)乱码问题就是文件的编码和解码格式不一样,有的是UTF-8;有的是GBK
3.总结
web项目很容易出现奇奇怪怪的问题,自己解决问题的过程也是一种学习,可以把解决方法以博客记录下来,方便日后查找
本文通过一个简单的SpringMVC demo,详细介绍了如何使用HttpServlet实现URL解析并进行页面跳转。内容涵盖Java Web项目搭建、HttpServlet的继承与重写、web.xml配置、jsp页面创建以及Tomcat服务器部署,帮助读者理解Servlet在SpringMVC中的作用。
2万+

被折叠的 条评论
为什么被折叠?



