文章目录
1 什么是Servlet
Servlet是Java Web开发的基石,与平台无关的服务器组件,它是运行在Servlet容器/Web应用服务/Tomcat,负责与客户端进行通信
2 Servlet的功能
1.创建并返回基于客户请求的动态HTML页面
2.与数据库进行通信
3 如何使用Servlet
Servlet 本身是一组接口,自定义一个类,并且实现 Servlet 接口,这个类就具备了接受客户端请求以及 做出响应的功能。
在src下建立MyServlet类实现Servlet接口


package com.company.cc;
import javax.servlet.*;
import java.io.IOException;
public class MyServlet implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
String id = servletRequest.getParameter("id");
System.out.println("我是Servlet,我已经接收到了客户端发来的请求,参数是"+id);
servletResponse.setContentType("text/html;charset=UTF-8");
servletResponse.getWriter().write("客户端你好,我已接收到你的请求");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
3.1 映射间接访问Servlet
浏览器不能直接访问 Servlet 文件,只能通过映射的方式来间接访问 Servlet,映射需要开发者手动配 置,有两种配置方式。
1.基于 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>com.company.cc.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/demo</url-pattern>
</servlet-mapping>
</web-app>
2.基于注解的方式。
@WebServlet("/demo2")
public class HelloServlet implements Servlet {
}
在客户端进行访问

程序端的结果显示



上述两种配置方式结果完全一致,将 Demo与 MyServlet 进行映射,即在浏览器地址栏中直接访问 Demo 就可以映射到 MyServlet。
4. Servlet 的生命周期
1、当浏览器访问 Servlet 的时候,Tomcat 会查询当前 Servlet 的实例化对象是否存在,如果不存在,
则通过反射机制动态创建对象,如果存在,直接执行第 3 步。
2、调用 init 方法完成初始化操作。
3、调用 service 方法完成业务逻辑操作。
4、关闭 Tomcat 时,会调用 destory 方法,释放当前对象所占用的资源。
Servlet 的生命周期方法:无参构造函数、init、service、destroy
1、无参构造函数只调用一次,创建对象。
2、init 只调用一次,初始化对象。
3、service 调用 N 次,执行业务方法。
4、destroy 只调用一次,卸载对象。
5. ServletConfig
该接口是用来描述 Servlet 的基本信息的。
-
getServletName() 返回 Servlet 的名称,全类名(带着包名的类名)
-
getInitParameter(String key) 获取 init 参数的值(web.xml)
-
getInitParameterNames() 返回所有的 initParamter 的 name 值,一般用作遍历初始化参数
-
getServletContext() 返回 ServletContext 对象,它是 Servlet 的上下文,整个 Servlet 的管理者。 ServletConfig 和 ServletContext 的区别:
-
ServletConfig 作用于某个 Servlet 实例,每个 Servlet 都有对应的 ServletConfig,
-
ServletContext 作用 于整个 Web 应用,一个 Web 应用对应一个 ServletContext,多个 Servlet 实例对应一个 ServletContext。
一个是局部对象,一个是全局对象。
6.Servlet的层次结构
Servlet---->GenericServlet---->HttpServlet
Http请求有很多种类型,常用的有四种:
get:读取
post:保存
put:修改
delete:删除
-
GenericServlet 实现 Servlet 接口,同时为它的子类屏蔽了不常用的方法,子类只需要重写 service 方 法即可。
-
HttpServlet 继承 GenericServlet,根据请求类型进行分发处理,GET 进入 doGET 方法,POST 进入 doPOST 方法。
适配器模式:由父类对接口进行空参实现,这样继承的子类就可以只选择需要的方法进行重写 -
开发者自定义的 Servlet 类只需要继承 HttpServlet 即可,重新 doGET 和 doPOST。
package com.southwind.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;
@WebServlet("/test")
public class TestServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.getWriter().write("GET"); }
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.getWriter().write("POST"); }
}
本文详细介绍了Servlet的概念、功能及使用方法,包括映射配置、生命周期、ServletConfig与ServletContext的区别,以及Servlet的层次结构,深入探讨了HttpServlet类的使用。
13万+

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



