Servlet是什么?怎么使用?

简介: 服务器里面资源分为动态资源和静态资源动态资源:Servlet、Jsp静态资源:HTML、CSS、JS

服务器里面资源分为动态资源和静态资源


动态资源:Servlet、Jsp


静态资源:HTML、CSS、JS


一、概念


1.什么是servlet?


本质上是一个接口,提供了规范。是java提供的一门动态的web资源开发技术。


2.servlet体系结构


Servlet(体系根接口)👉GenericServlet(抽象实现类)👉HttpServlet(对Http协议封装的实现类,后期开发基本用这个)


3.servlet生命周期


servlet运行在Servlet容器(web服务器)中, 生命周期由容器来管理,分为四个阶段


1.加载实例化:默认情况下,当Servlet第一次被访问时,由容器创建servlet对象


2.初始化:当Servlet实例化后,容器将调用servlet的init方法去初始化这个对象,完成一些加载配置文件、创建连接等初始化的工作,该方法只调用一次。


3. 请求处理:每次请求处理时,servlet将调用service方法去处理这些请求


4.服务终止:当需要释放内存或者容器关闭时,容器就会调用destroy方法完成资源的释放。然后该实例就会被java的垃圾回收器回收。


二、完整访问过程


1.http(敲门和递名片)


敲门


浏览器去访问网页就是敲服务器家的门,有两种常见的敲门方法


(1)get方式:超链接访问和form提交,不指定method都默认为get方式


(2)post方式:form提交,指定method=post


两种请求方式的区别:


get向服务器获取信息post是提交信息(更安全)


get请求通过URL提交数据,数据可以在URL看到post请求放在请求体中


get请求提交的数据受限制(1kb左右)post请求不受限制


递名片


那敲门请求的时候,要提交名片,让服务器认识你是谁啊。这里就有三种名片


(1)请求行:包含http请求方式、请求资源名称、请求版本

(2)请求头:包含主机请求地址、客户端环境信息、键值对形式传递

(3)请求体:以键值对的post形式传递参数给服务器,服务器收到参数后再进行解析


2.servlet(管家)


作用 接收用户发来的请求---->调用其他程序来处理------->将处理结果返回到服务器里面


情景理解:


服务器收到请求名片后。服务器的管家是servlet。servlet管家给用户开门的。(接收用户发来的请求)


servlet管家问你要干什么啊?


用户:要来这里参观参观


好嘞。于是管家先让儿子init(初始化的方法)去把房子打扫一遍


然后管家又对用户说,你来这里想要吃什么或者干什么,直接叫我儿子service(servletRequest---请求,servletResponse---响应(文章超链接))去处理就好了


等到用户走后,管家又让儿子destroy(关闭的方法)去关门


servlet的5个儿子(方法)


1.init(初始化服务器配置)


2.getServletConfig(获取servlet本身信息的,了解就好)


3.service(逻辑操作)


4.getServletInfo(返回一个字符串信息,了解就好)


5.destroy(释放资源)


总结:servlet全程参与你的访问请求需求过程,但是有什么事情它直接叫儿子(方法)去干就好了。      


三、升级版管家httpservlet(后续开发都用这个)


解释:就是封装http协议并实现了servlet这个接口,根据接收过来的请求类型判断是get还是post,然后去使用对应的get或者post方法去完成对方的请求。后面使用这个servlet管家主要就是使用继承这个httpservlet,去重写实现他的两个儿子方法,分别是doget和dopost。


至于原来的servlet五个儿子方法都已经被封装到里面了,我们看不见而已,但是还是存在的


四、怎么调用自己写的类?


注意点:这两个调用方式只能用一个,不能同时用,要不然会报错的。强烈推荐注解!!!,方便又简洁


被测试的类

package kk;
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("/one")//利用注解的方式调用
public class HttpServletTest extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("doGet");
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("doPost");
    }
}

(1)注解:在调用该类的开头写上注解@WebServlet("/任意自定义名字")


格式为:

@WebServlet("/任意自定义名字")


 如图所示:



浏览器访问方式:https:localhost:8080/maven_java_war/one


(2)在webapp-->WEB-INF---->web.xm这里面配置


格式为:

<servlet>
    <servlet-name>HttpServletTest</servlet-name>
    <servlet-class>kk.HttpServletTest</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>HttpServletTest</servlet-name>
    <url-pattern>/one</url-pattern>
</servlet-mapping>

如图所示:



 浏览器访问方式:https:localhost:8080/maven_java_war/one

目录
相关文章
|
3月前
|
存储 小程序 Java
servlet知识点总结
总结Servlet知识点,包括实现、工作流程、生命周期、HttpRequest和HttpServletResponse对象、Cookie和HttpSession的使用,以及ServletContext对象和Servlet的三大域对象。
servlet知识点总结
|
7月前
Servlet 教程 之 Servlet 编写过滤器 5
在Servlet教程中,了解如何编写过滤器。示例展示了定义两个过滤器:AuthenFilter和LogFilter。每个过滤器有自己的映射和初始化参数。LogFilter和AuthenFilter都匹配所有URL(/*),按照声明顺序执行。
26 3
|
7月前
|
Java
Servlet 教程 之 Servlet 编写过滤器 3
`LogFilter` 是一个 Servlet 过滤器示例,它打印网站名称并传递请求至过滤链。当与 `DisplayHeader` Servlet(显示 HTTP 头信息)配合使用时,提供基础过滤器概念的理解。过滤器在请求处理前可添加额外功能或修改输入,而 `doGet` 方法则用于响应 GET 请求,展示请求头信息。
27 2
|
7月前
|
XML 数据格式
Servlet 教程 之 Servlet 编写过滤器 4
在Servlet教程中,学习如何编写过滤器。在`web.xml`配置文件中,创建一个名为`LogFilter`的过滤器,类为`com.baidu.test.LogFilter`,设置初始化参数`Site`为`百度`。将过滤器映射到`/*`,确保所有请求都会经过此过滤器。同时定义了一个名为`DisplayHeader`的Servlet,映射到`/TomcatTest/DisplayHeader`路径。
29 1
|
7月前
|
XML Java 数据安全/隐私保护
Servlet 教程 之 Servlet 编写过滤器 1
Servlet过滤器用于动态拦截请求和响应,实现如身份验证、数据压缩、日志记录等多种功能。它们可附加于Servlet、JSP或HTML,按web.xml中配置的顺序执行。Web容器启动时会根据部署描述符创建过滤器实例。
39 2
|
7月前
|
容器
Servlet 教程 之 Servlet 编写过滤器 7
Servlet教程讲解如何编写过滤器。在`web.xml`中,`&lt;filter&gt;`定义过滤器,`&lt;filter-name&gt;`和`&lt;filter-class&gt;`分别设定名称和类。`&lt;init-param&gt;`配置初始化参数。`&lt;filter-mapping&gt;`指定过滤器作用的资源,可通过`&lt;servlet-name&gt;`或`&lt;url-pattern&gt;`定义。`&lt;dispatcher&gt;`定义过滤器触发时机,如REQUEST、INCLUDE、FORWARD和ERROR,控制过滤器何时拦截资源调用。
37 0
|
7月前
Servlet 教程 之 Servlet 编写过滤器 2
Servlet教程讲解如何编写过滤器。在Filter的`init`方法中,通过FilterConfig对象获取配置信息。例如,web.xml定义一个名为LogFilter的过滤器,关联参数Site为&quot;百度&quot;。在`init`方法内,可以使用`config.getInitParameter(&quot;Site&quot;)`获取到&quot;网站名称:百度&quot;,实现过滤器的初始化设置。
23 0
|
7月前
|
安全 小程序 Java
Servlet相关知识点
Servlet相关知识点
QGS
|
Java
浅谈入门Servlet注解式开发
servlet3.0版本之后,推出了Servlet基于注解式开发。 优点:开发效率高,直接在java类上使用注解进行标注
QGS
97 0
|
小程序 Java 应用服务中间件
Servlet入门案例(一)认识Servlet
Servlet入门案例(一)认识Servlet
152 0
Servlet入门案例(一)认识Servlet
下一篇
DataWorks