一.首先,Servlet是什么?
🍹参考博文:servlet介绍 🎇参考视频:servlet原理 🍀参考网站:servlet教程
下图的web容器可以理解为tomcat服务器,servlet就是用来处理web服务器中的请求和响应的,是tomcat的一部分。
二.如何在IDEA中使用Servlet类?
1.首先,我们需要借助一个工具:maven
什么是maven?👉maven简介和配置(文本),maven的环境搭建(视频)
简单来说,借助maven,我们就可以轻松导入Servlet有关类包,各种依赖jar包。
2.在Idea中创建一个项目。
参考视频:HelloServlet的创建
1)创建一个Maven项目,选择Webapp模板
有关maven的设置
tomcat有关配置
点击加号
选择tomcat server->local,点击Deployment,选择Artifacts
部署好之后,页面如下
点击server,会看到URL这一栏变了,再把JRE这一栏选择自己电脑上的JDK版本。
点击Debug,跳出Hello World.页面
2)检查框架
在main文件夹下建立一个java子文件夹,标记为蓝色
3.新建一个java类MyHelloservlet。
MyHelloServlet.java
// 导入必需的 java 库
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
// 扩展 HttpServlet 类
public class MyHelloServlet extends HttpServlet {
private String message;
public void init() throws ServletException
{
// 执行必需的初始化
message = "Hello Servlet";
}
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
// 设置响应内容类型
response.setContentType("text/html");
// 实际的逻辑是在这里
PrintWriter out = response.getWriter();
out.println("<h1>" + message + "</h1>");
}
public void destroy()
{
// 什么也不做
}
}
要想实现Servlet接口,要下载相关依赖,我们上网搜,maven中Servlet的依赖。
依赖:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
粘粘上面提供的依赖语句放进pom.xml中。
注意:只能有一个<dependencies></dependencies>标签,且<dependency></dependency>标签要写在<dependencies></dependencies>标签里面。
如下图操作,下载依赖
在webapp的web.xml中的<web-app></web-app>标签中插入以下代码
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>MyHelloServlet</servlet-name>
<servlet-class>MyHelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyHelloServlet</servlet-name>
<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>
注意:<servlet-class></servlet-class>中的类名要和自己写继承HttpServlet的类的类名一致。
<servlet></servlet>标签中的<servlet-name></servlet-name>标签中的名字要和<servlet-mapping></servletmapping>标签中的一致。
然后就可以运行啦,运行成功,界面如下:
补充:
🍒<servlet-class>的作用
servlet-class元素在Servlet配置中用于指定实现Servlet接口的类名。
在Web应用程序中,Servlet是Java Servlet API的一部分,用于处理客户端请求并生成响应。Servlet接口定义了处理HTTP请求的方法,如doGet()、doPost()等,这些方法用于处理不同类型的HTTP请求。然而,直接实现Servlet接口的类并不多见,通常的做法是通过继承HttpServlet类来实现具体的Servlet程序。HttpServlet类已经实现了Servlet接口中的大部分方法,并且提供了对HTTP请求方法的默认处理,如GET和POST请求。
在Servlet的配置中,
<servlet-class>
元素用于声明实现Servlet接口的类的全名。这个类应该包含重写或实现HttpServlet类中未实现的方法,以提供特定的业务逻辑。通过这种方式,当Web容器(如Tomcat)启动时,它会加载并实例化这个类,以便能够处理传入的HTTP请求。此外,Servlet还可以通过web.xml文件进行配置,包括设置初始化参数、加载顺序等。初始化参数可以通过
:ml-search[init-param]
元素在<servlet>
标签内部进行配置,这些参数可以在Servlet的初始化过程中被访问和使用。总的来说,
:ml-search[servlet-class]
元素的作用是指定一个Java类来实现Servlet接口或继承HttpServlet类,以处理HTTP请求并生成响应,同时允许开发者通过配置文件提供初始化和业务相关的配置信息
🥦<servlet-mapping>的作用
<servlet-mapping>的主要作用是定义Servlet与URL之间的映射关系,使得用户可以通过特定的URL访问到对应的Servlet处理逻辑。
具体来说,《servlet-mapping》的工作原理和匹配规则如下:
- 精确路径匹配:例如,如果ServletA的url-pattern定义为
/test
,那么当用户访问http://localhost/test
时,ServletA会被调用处理该请求。- 最长路径匹配:例如,如果ServletB的url-pattern定义为
/*
,它会匹配所有未被其他Servlet匹配的URL。- 后缀匹配:例如,如果url-pattern定义为
*.do
,那么所有以.do
结尾的URL请求都会由对应的Servlet处理。此外,《servlet-mapping》还有一些相关的配置和使用场景:
- 在Spring MVC项目中,可以通过配置《servlet-mapping》来映射Controller层的处理方法,从而实现Web请求的处理。
- 在Web应用中,可以通过《servlet-mapping》配置首页或其他静态资源的访问路径。
通过这些配置,可以灵活地控制Web请求的处理逻辑,实现Web应用的定制化需求