02-【servlet】
1、什么是Servlet
Servlet是JavaWeb的三大组件之一[Servlet,Filter,Listener],它属于动态资源。Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通常需要:
a. 接收请求数据;
b. 处理请求;
c .完成响应。
例如客户端发出登录请求,或者输出注册请求,这些请求都应该由Servlet来完成处理!Servlet需要我们自己来编写,每个Servlet必须实现javax.servlet.Servlet接口。
2、实现Servlet的方式(由我们自己来写!)
实现Servlet有三种方式:
l 实现javax.servlet.Servlet接口;
l 继承javax.servlet.GenericServlet类;
l 继承javax.servlet.http.HttpServlet类;
* 通常我们会去继承HttpServlet类来完成我们的Servlet,但学习Servlet还要从javax.servlet.Servlet接口开始
①servlet元素对应一个servlet;一个servlet标签元素和servlet-mapping是一组servlet
②一个servlet可以对应多个 url-pattern;一个url-pattern 只能对应一个servlet
③ url -pattern 的几种配置方式:
1.访问某个url:
<!--第一种:也是常用的一种访问方式 -->
<url-pattern>/TestServlet</url-pattern>
访问方式:http://localhost:8080/servlet01/TestServlet
<!--第二种:常用访问方式扩展 -->
<url-pattern>/TestServlet.boom</url-pattern>
访问方式:http://localhost:8080/servlet01/TestServlet.boom
2.所有请求都可以访问某个servlet;
<!-- 匹配所有的字符 -->
<url-pattern>/*</url-pattern>
访问方式:http://localhost:8080/servlet01/fdsafdsaf 【/后面随便跟什么字母】
<!-- 框架使用 (一般不用) -->
<url-pattern>/user/*</url-pattern>
访问方式:http://localhost:8080/servlet01/user/fdasfasd 【/uesr/任意字母】
3.匹配以某些字符结尾的请求
<!-- 匹配以某些字符结尾的请求 -->
<url-pattern>*.boom</url-pattern>
访问方式:http://localhost:8080/servlet01/fdsafsda.boom
4.根据不同的功能模块 ,servlet请求进行分组
<!-- 根据不同的功能模块 ,servlet请求进行分组 -->
<url-pattern>/user/adduser.boom</url-pattern>
<url-pattern>/user/*</url-pattern>
图解url-pattern
④ 注意:servlet名称和url区分大小写
手写servlet配置,浏览访问servlet【了解,后期用servlet模板自动生成】

用servlet模板生成servlet:
web.xml里代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>TextServlet</servlet-name>
<display-name>This is the display name of my J2EE component</display-name>
<description>This is the description of my J2EE component</description>
<servlet-class>boom.servlet.test01.TextServlet</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>TextServlet</servlet-name>
<url-pattern>/TextServlet</url-pattern>
</servlet-mapping> </web-app>
图解servlet模板与之对应的web.xml文件图解
3、servlet的生命周期
servlet生命周期:所谓servlet的生命周期,就是说servlet的出生、服务,以及死亡。
与Servlet的生命周期相关的方法有:
1、void init(ServletConfig);(服务启动后一次)
2、void service(ServletRequest,ServletResponse);(每次刷新都会被执行)
3、void destroy();(关闭服务器一次)
特性:
a.单例,一个类只有一个对象;当然可能存在多个Servlet类!
b.多线程的 , servlet不要使用全局变量
c.线程不安全的,所以它的效率是高的
整个生命周期的过程:
① 加载servlet
部署 web项目
② servlet的初始化【两中方式】
2.1 tomcat启动的时候 初始化 servlet执行init方法
在 web.xml中配置
<servlet>
<load-on-startup>1<load-on-startup>
</servlet>
tomcat 服务器启动的时候,初始化 servlet 调用 init方法。数值 0 正整数 1 2 3【从小到大加载 】如果是负值 , 在第一次访问servlet的时候初始化servlet
2.2 在第一次请求的时候,调用init方法进行初始化 【init方法只初始化一次 】
servlet是单例的 , 可以加快请求的效率(在web应用中只有一个servlet实例) ,不能在servlet中添加全局变量
调用servlet是多线程调用,每次请求是一个线程,全局变量会出现安全问题,尽量使用局部变量。
tomcat启动的时候 初始化 servlet执行init()方法
在第一次请求的时候,调用init()方法进行初始化;init()方法只初始化一次
③ 当每次发请求的时候,会执行service方法,去处理请求和响应
接收请求的数据 ,响应数据到客户端
可以设定响应数据的格式 ,告诉浏览器如何解析数据
设置编码集
④ servlet的销毁
tomcat关闭的时候 销毁servlet,执行destroy方法
注:Servlet类由我们来写,但对象由服务器来创建,并且由服务器来调用相应的方法。
4、servlet周期详解:【有个印象即可】
servlet的出生
服务器会在Servlet第一次被访问时创建Servlet,或者是在服务器(Tomcat)启动时创建Servlet。如果服务器启动时就创建Servlet,那么还需要在web.xml文件中配置。也就是说默认情况下,Servlet是在第一次被访问时由服务器创建的。而且一个Servlet类型,服务器只创建一个实例对象,例如在我们首次访问http://localhost:8080/helloservlet/helloworld时,服务器通过“/helloworld”找到了绑定的Servlet名称为cn.itcast.servlet.HelloServlet,然后服务器查看这个类型的Servlet是否已经创建过,如果没有创建过,那么服务器才会通过反射来创建HelloServlet的实例。当我们再次访问http://localhost:8080/helloservlet/helloworld时,服务器就不会再次创建HelloServlet实例了,而是直接使用上次创建的实例。在Servlet被创建后,服务器会马上调用Servlet的void init(ServletConfig)方法。请记住, Servlet出生后马上就会调用init()方法,而且一个Servlet的一生,只会被调用一次。我们可以把一些对Servlet的初始化工作放到init方法中!
servlet服务
当服务器每次接收到请求时,都会去调用Servlet的service()方法来处理请求。服务器接收到一次请求,就会调用service() 方法一次,所以service()方法是会被调用多次的。正因为如此,所以我们才需要把处理请求的代码写到service()方法中!
servlet离开
Servlet是不会轻易离去的,通常都是在服务器关闭时Servlet才会离去!在服务器被关闭时,服务器会去销毁Servlet,在销毁Servlet之前服务器会先去调用Servlet的destroy()方法,我们可以把Servlet的临终遗言放到destroy()方法中,例如对某些资源的释放等代码放到destroy()方法中。
02-【servlet】的更多相关文章
- 【Servlet】(1)Servlet简介、Servlet底层原理、Servlet实现方式、Servlet生命周期
一.Servlet简介 1.Servlet定义: Servlet(Server Applet)是Java Servlet的简称,是为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交 ...
- 【Servlet】把文件写到Respond输出流里面供用户下载
本文区分于<[Jsp]把Java写到Respond输出流里面供用户下载>(点击打开链接)把原本该打印到控制台的内容,直接打印到一个文本文件txt中给用户下载. 实际上是<[Strut ...
- 【Servlet】Servlet监听器
一.Servlet监听器的概念 Servlet监听器是Servlet规范中定义的一种特殊类,用于监听ServletContext.HttpSession和ServletRequest等域对象的创建与销 ...
- 【Servlet】doGet()与doPost()的区别
doGet与doPost的区别 .Servlet接口只定义了一个服务方法--service .当发出客户端请求时,调用service方法并传递一个请求和响应对象 .使用时经常在doPost()中调用d ...
- 【Servlet】Servlet应用的get、post访问及和JSP的配合使用
Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面. 它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用 ...
- 【Servlet】Filter过滤器的编写和配置
Servlet的Filter介绍 在Servlet作为过滤器使用时,它可以对客户的请求进行过滤处理,当它处理完成后,它会交给下一个过滤器处理,就这样,客户的请求在过滤链里一个个处理,直到请求发送到目标 ...
- 【servlet】客户端是否可以访问到WEB-INF下的jsp文件
一般情况下(不考虑出现安全问题被入侵,那样啥都能访问到),WEB-INF下的jsp文件单凭浏览器端请求时访问不到的. 想访问的话需要通过服务端servlet的转发. 下面通过转发和重定向的尝试来观察访 ...
- 【servlet】 过滤器模板
EncodingFilter.java package Filter; import java.io.IOException; import javax.servlet.Filter; import ...
- 【servlet】 第一个servlet
简单打印haha Helloyt.java package day01; import java.io.IOException; import javax.servlet.ServletConfig; ...
- 【Servlet】1、Servlet监听器及相关接口
Servlet监听器用于监听一些重要事件的发生,监听器对象可以在事情发生前.发生后可以做一些必要的处理. 接口: 目前Servlet2.4和JSP2.0总共有8个监听器接口和6个Event类,其中Ht ...
随机推荐
- delphi数据集查找不定位
procedure TForm1.Button2Click(Sender: TObject); var R: Variant; begin R := MemTableEh1.Lookup('Name' ...
- 深入理解JVM(二)JVM内存模型
一.前言 上文讲过了虚拟机的内存划分,即,我们将内存分为线程共享和线程私有. 线程共享的即java堆,和方法区.java堆大家可能都不会陌生:而方法区中包含了常量池,他也被称为永久代.通常方法区也会被 ...
- vue2.0 子组件props接受父组件传递的值,能不能修改的问题整理
父组件代码: <!-- --> <template> <div class=''> <el-link type="danger">传 ...
- nRF5 SDK Bootloader and DFU moudles(3)
DFU控制点特性用于控制DFU过程的状态. 通过写入该特征来请求所有DFU程序. 标记过程结束的响应将作为通知收到. BLE传输 Transfer of an init packet DFU控制器首先 ...
- Centos修改时间
1. 普通用户 a. 获取超级用户root权限 命令:su或者su -或者su - root b. passwd 用户名 2. 超级用户 a. 打开system-auth文件 命令:vi /etc/p ...
- 洛谷P1603 斯诺登的密码(水题
不知道什么时候打开的,随手做掉了,没什么用...大概又熟悉了一下map吧...大概........一开始还因为没读清题没把非正规的英文表示数字存进去wa了...orz最近状态不行 题目描述 题目描述 ...
- X86逆向5:破解程序的自效验
在软件的破解过程中,经常会遇到程序的自效验问题,什么是自效验?当文件大小发生变化,或者MD5特征变化的时候就会触发自效验暗装,有些暗装是直接退出,而有些则是格盘蓝屏等,所以在调试这样的程序的时候尽量在 ...
- 22 Years of KDE
22 Years of KDEhttps://timeline.kde.org/ http://www.kdedevelopers.org/
- 关于win10安卓真机调试无法找到设备的问题
之前在win10系统上调试安卓设备,usb接好了,结果居然没有找到设备. 一般出现这种情况可能是电脑的驱动没装好. 于是找了驱动人生大佬来诊断,确实是少了安卓usb驱动. 正常来说用驱动人生装个usb ...
- DVWA之SQL注入演练(low)
1.设置 把安全等级先调整为low,让自己获得点信心,免得一来就被打脸. 2.测试和分析页面的功能 这里有一个输入框 根据上面的提示,输入用户的id.然后我们输入之后,发现它返回了关于这个 ...