IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Servlet规范 -> 正文阅读

[Java知识库]Servlet规范

一、Servlet规范介绍:

1,servlet规范来自于JavaEE规范中的一种

2,作用

1)在Servlet规范中,指定【动态资源文件】开发步骤(给人看的)

2)在Servlet规范中,指定Http服务器调用动态资源文件规则

3)在Servlet规范中,指定Http服务器管理动态资源文件实例对象规则

二、Servlet接口实现类:

1,Servlet接口来自于Servlet规范下一个接口,这个接口存在Http服务器提供jar包

2,Tomcat服务器下lib文件有一个servlet-api.jar存放Servlet接口(javax.servlet.Servlet接口)

3,Servlet规范中认为,Http服务器能调用的【动态资源文件】必须是一个Servlet接口实现类

三、Servlet接口实现类开发步骤

1,第一步:创建一个Java类继承HttpServlet父类,使之成为一个servlet接口实现类

2,第二步:重写HttpServlet父类两个方法。doGet或者doPost。

3,第三步:将Servlet接口实现类信息【注册】到Tomcat服务器

【网站】--->【web】--->【WEB-INF】---> web.xml

<!--将Servlet接口实现类类路径地址交给Tomecat-->
<Servlet>
 ? ?<!--声明一个变量存储servlet接口实现类类路径-->
    <servlet-name>test</servlet-name>
 ? ?<!--声明servlet接口实现类类路径-->
 ? ?<servlet-class>com.yth.controller.OneServlet</servlet-class>
</Servlet>
<!--需要设置简短请求别名,方便访问-->
<servlet-mapping>
 ? ?<!--这里的变量名要与上边一致,表示给上述变量起别名-->
    <servlet-name>test</servlet-name>
 ? ?<!--设置别名-->
 ? ?<url-pattern>/one</url-pattern>
</servlet-mapping>

四、Servlet对象生命周期:

1,网站中所有的Servlet接口实现类的实例对象,只能由Http服务器负责创建。开发人员不能手动创建Servlet接口实现类的实例对象

2,在默认的情况下,Http服务器接收到对于当前Servlet接口实现类第一次请求时,自动创建这个Servlet接口实现类的实例对象

在手动配置情况下,要求Http服务器在启动时自动创建某个Servlet接口实现类的实例对象

<servlet>
    <servlet-name>test</servlet-name>
 ? ?<setvlet-class>com.yth.controller.OneServlet</setvlet-class>
 ? ?<!--填写一个大于0的整数即可-->
 ? ?<load-on-startup>30</load-on-startup>
</servlet>

3,在Http服务器运行期间,一个Servlet接口实现类只能创建出一个实例对象

4,在Http服务器关闭时刻,自动将网站中所有的Servlet对象进行销毁

五、HttpServletResponse接口

1,介绍:

1):HttpServletResponse接口来自于Servlet规范中,在Tomcat中存在servlet-api.jar

2):HttpServletResponse接口实现类由Http服务器负责提供

3):HttpServletResponse接口负责将doGet / doPost执行结果写入到响应体中交给浏览器

4):开发人员习惯将HttpServletResponse接口修饰的对象称为【响应对象】

2,主要功能:

1):将执行结果以二进制形式写入到【响应体】

PrintWriter out = response.getWriter();
out.print(result)

2):设置响应头中[content-type]属性值,从而控制浏览器使用对应编译器将响应体二进制数据编 译为【文字,图片,视频,命令】

response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");

3):设置响应头中【location】属性,将一个请求地址赋值给location,从而控制浏览器向指定服 务器发送请求

String result = "http://www.baidu.com";
response.sendRedirect(result);

六、HttpServletRequest接口

1,介绍

1):HttpServletRequest接口来自于Servlet规范中,在Tomcat中存在servlet-api.jar

2):HttpServletRequest接口实现类由Http服务器负责提供

3):HttpServletRequest接口负责在doGet / doPost方法运行时读取Http请求协议包中信息

4):开发人员习惯于将HttpServletRequest接口修饰的对象称为【请求对象】

2,作用

1):可以读取Http请求协议包中【请求行】信息

String url = request.getRequestURL().toString();
?
String method = request.getMethod();

2):可以读取保存在Http请求协议包中【请求头】或者【请求体】中请求参数信息

(浏览器以GET方式发送请求,请求参数保留在【请求头】,在Http请求协议包到达Http服务器之后,第一件事就是进行解码,请求头二进制内容由Tomcat负责解码,Tomcat默认使用【UTF-8】)

(浏览器以POST方式发送请求,请求参数保留在【请求体】,在Http请求协议包到达Http服务器之后,第一件事就是进行解码,请求头二进制内容由request负责解码,request默认使用【ISO-8859-1】)

@Override
 ? ?protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
 ? ? ? ?//通知请求对象,使用utf-8字符集进行解码
 ? ? ? ?req.setCharacterEncoding("utf-8");
 ? ? ? ?//通过请求对象获得【请求体】中【所有请求参数名】
 ? ? ? ?String value = req.getParameter("username");
 ? ? ? ?System.out.println("从请求体中得到的参数值:" + value);
 ?  }
?
 ? ?@Override
 ? ?protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 ? ? ? ?//通过请求对象获得【请求头】中【所有请求参数名】
 ? ? ? ?String userName = request.getParameter("username");
 ? ? ? ?System.out.println("从请求头得到的参数值:" + userName);
 ?  }

3):可以代替浏览器向Http服务器申请资源文件调用

七、请求对象和响应对象生命周期

1,在Http服务器接收到浏览器发送的【Http请求协议包】之后,自动为当前的【Http请求协议包】生成一个【请求对象】和一个【响应对象】

2,在Http服务器调用doGet / doPost方法时,负责将【请求对象】和【响应对象】作为实参传递到方法,确保doGet / doPost正确执行

3,在Http服务器准备推送Http响应协议包之前,负责将本次请求关联的【请求对象】和【响应对象】销毁

【请求对象】和【响应对象】的生命周期贯穿一次请求的处理过程中

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-20 14:57:12  更:2021-08-20 14:59:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 5:17:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码