Servlet概述及接口

简介: Servlet概述及接口

一、Servlet概述


● Servlet是运行在web服务器端的应用程序,使用Java语言编写


● Servlet对象主要封装了对HTTP请求的处理,它的运行需要Servlet容器(如Tomcat)的支持


● Servlet由Servlet容器进行管理,Servlet容器将Servlet动态加载到服务器上,与HTTP协议相关的Servlet使用HTTP请求和HTTP响应与客户端进行交互


● 如下图,Servlet的请求首先会被HTTP服务器(如Apache)接收,HTTP服务器只负责静态HTML界面的解析,而Servlet的请求则转交给Servlet容器,Servlet容器会根据请求路径以及Servlet之间的映射关系,调用相应的Servlet,Servlet将处理的结果返回给Servlet容器,并通过HTTP服务器将响应传输给客户端



二、Servlet接口


Servlet就是实现了Servlet接口的类,它由Web服务器创建并调用,用于接收和响应用户的请求,在Servlet接口中定义了五个抽象方法


方法声明 说明
void init(ServletConfig config) Servlet实例化后,Servlet容器调用该方法完成Servlet的初始化工作
ServletConfig
getServletConfig()
获取Servlet对象的配置信息
String getServletInfo() 返回包含Servlet信息的字符串,如作者,版权等

void service(ServletRequest

req,ServletResponse

resp)

负责响应用户的请求,当容器接收到客户端访问Servlet对象的请求时就会调用此方法。容器会构造一个表示客户端请求信息的


ServletRequest对象和一个用于响应客户端的

ServletResponse对象作为参数传递给service()方法,在service()方法中可以通过ServletRequest对象得到客户端的相关信息和请求信息,在对请求进行处理后,调用ServletResponse


void destroy()

负责释放Servlet对象占用的资源,当服务器关闭或者Servlet对象被移除时会销毁Servlet对象,此时会调用此方法


编写的Servlet类必须实现Servlet接口或者继承Servlet接口的实现类,如GenericServlet和HttpServlet,这两个类都是抽象类并且HttpServlet继承了GenericServlet,其中GenericServlet有一个抽象方法service(),而HttpServlet没有抽象方法


总结三种方式编写Servlet类


1、实现Servlet接口,需要重写Servlet接口里边的所有方法


2、继承GenericServlet抽象类,必须重写service()方法,其他方法也可以重写


3、继承HttpServlet抽象类,不需要重写service()方法,因为HttpServlet在service()方法中调用了另一个重载的service()方法,这个重载的方法里边会根据参数选择相应的方法,如

doGet()方法或doPost()方法,所以我们编写时可以重写doGet()方法和doPost()方法来实现我们想要的功能


4、通常情况下使用继承HttpServlet抽象类的方式编写Servlet


5、实例:


public class ServletDemo02 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("方法执行了");}
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req,resp);
    }
}


Servlet线程安全问题:在实现Servlet的类中如果存在自定义的成员变量,并且在service()方法中操作这个变量时可能会出现线程安全问题,解决的办法是将成员变量改为定义在方法内部的局部变量,或者使用sychronized锁


HttpServlet常用方法:


方法 说明
protected void doGet(HttpServletRequest
req,HttpServletResponse resp)
用户处理GETl类型的
HTTP请求
protected void doPost(HttpServletRequest
req,HttpServletResponse resp)
用于处理POST类型的
HTTP请求
protected void doPut(HttpServletRequest
req,HttpServletResponse resp)
用于处理PUT类型的
HTTP请求
目录
相关文章
|
前端开发 Java 应用服务中间件
servlet中的Filter接口(过滤器接口)
servlet中的Filter接口(过滤器接口)
222 0
servlet中的Filter接口(过滤器接口)
|
存储 缓存 监控
servlet中的监听器接口
servlet中的监听器接口
124 0
servlet中的监听器接口
|
开发者
Servlet 之接口的介绍以及实现 Servlet 接口 | 学习笔记
快速学习 Servlet 之接口的介绍以及实现 Servlet 接口。
134 0
Servlet 之接口的介绍以及实现 Servlet 接口 | 学习笔记
|
应用服务中间件 开发者
Generic Servlet 概述 | 学习笔记
快速学习 Generic Servlet 概述。
126 0
Generic Servlet 概述 | 学习笔记
|
小程序 Java 应用服务中间件
Servlet概述
一.Servlet概念 servlet:server applet(运行在服务器端的小程序) 浏览器请求动态资源找我们写的Java类,这些Java类没有main方法,依赖于服务器(如tomcat)才能运行,因此这些类需要遵守一定的规则,才能被服务器(tomcat)识别 1.servlet就是一个接口,定义了Java类可以被浏览器访问到(tomcat识别)的规则 2.将来我们自定义一个类,实现Servlet接口,复写方法
114 0
Servlet概述
|
存储 资源调度 Java
Java Web——Servlet的数据共享方案:HttpSession接口(会话作用域对象)
Java Web——Servlet的数据共享方案:HttpSession接口(会话作用域对象)
Java Web——Servlet的数据共享方案:HttpSession接口(会话作用域对象)
|
Java 应用服务中间件
Java Web——Servlet的过滤器接口(Filter)
Java Web——Servlet的过滤器接口(Filter)
Java Web——Servlet的过滤器接口(Filter)
|
Java 应用服务中间件
Java Web——Servlet的监听器接口(ServletContextListener、ServletContextAttributeListener)
Java Web——Servlet的监听器接口(ServletContextListener、ServletContextAttributeListener)
Java Web——Servlet的监听器接口(ServletContextListener、ServletContextAttributeListener)
|
存储 Java
Java Web——Servlet的数据共享方案:HttpServletRequest接口(请求作用域对象)
Java Web——Servlet的数据共享方案:HttpServletRequest接口(请求作用域对象)
Java Web——Servlet的数据共享方案:HttpServletRequest接口(请求作用域对象)
|
Java 应用服务中间件
Java Web——Servlet的数据共享方案:ServletContext接口(全局作用域对象)
Java Web——Servlet的数据共享方案:ServletContext接口(全局作用域对象)
Java Web——Servlet的数据共享方案:ServletContext接口(全局作用域对象)