javaweb_servlet篇_01(代码片段)

葡萄籽-June 葡萄籽-June     2022-12-28     235

关键词:

Servlet-01篇

通过前段时间得JavaWeb基础学习后,对于之前学习总结的,做一下简单的梳理。本篇主要梳理相关Servlet的知识点。



一、Servlet基础概念

Servlet 是JavaWeb 三大组件之一。

三大组件分别是:Servlet 程序、Filter 过滤器、Listener 监听器

事实上,Servlet是JavaEE的规范(接口)之一。它具有接收客户端发送过来的请求,并响应数据给客户端的作用。
(运行在服务器的一个java程序)


二、Servlet 的生命周期

1、装载Servlet。

此操作一般为动态执行,有些服务器提供相应的管理功能,可在启动的时候就装载Servlet并能够初始化特定的Servlet。

2、执行Servlet 构造器方法

创建一个Servlet实例。

3、执行init 初始化方法

调用Servlet的init()方法。

4、服务

若容器接收到对此Servlet的请求,那么会调用Servlet的service 方法并执行。

5、销毁

执行destroy 销毁方法。

【注】第一、二、三步,是在第一次访问的时候创建Servlet 程序就会调用。
【注】 第四步,每次访问都会调用。
【注】第五步,在web 工程停止的时候调用。

三、Servlet重要函数

1、init()方法

1)在整个Servlet生命周期中,只执行一次。
2)它是在服务器装入Servlet时执行,可以配置服务器,以便于在启动服务器或客户机首次访问时装入Servlet。
3)默认的init()方法一般均符合要求,但也可以自定义init()覆盖它。例如服务器端资源的管理,初始化数据库连接等。重要的是,所有覆盖init()方法的Servlet应调用 super.init() 以确保执行这些任务。

2、service()方法

1)是Servlet的核心。
2)每当一个客户请求一个HttpServlet对象,该对象的service()方法就要被调用,而且传递给这个方法一个“请求”对象和一个“响应”对象作为参数。
3)其默认的服务功能是调用HTTP请求的方法中对应的do功能(doPost /doGet)。

Servlet的响应类型
【1】一个输出流。浏览器根据它的内容类型(MIME)进行解析
【2】一个HTTP错误响应。重定向到另一个URL、Servlet、JSP

3、destroy()方法

1)仅执行一次。在服务器停止且卸载Servlet程序时执行该方法。
2)默认的destory()方法通常符合要求,但也可以覆盖它。例如管理服务器的资源,关闭数据库的资源连接。
3)当服务器卸载Servlet时,将所有的service()方法调用完成后,或咋i指定的时间间隔后调用destory()方法。(当在调用destory()方法之前,需要确认相关线程均已终止或者完成。)

4、getServletConfig()方法

1)其返回一个ServletConfig对象,该对象可以用来返回初始化参数和ServletContext。
2)其中,ServletContext提供有关的Servlet的环境信息。

5、getServletInfo()方法

1)其是一个可选的一个方法。它提供有关Servlet的信息,如作者、版本、版权等。
2)当服务器调用Servlet的service()、doGet()、doPost()这三个方法时,均需要“请求”和“响应”对象作为参数。
3)“请求”对象提供有关请求的信息;“响应”对象提供一个将响应信息返回给浏览器的通信途径。

【补充】

Servlet能通过“请求”对象的方法获知客户机的环境,服务器环境信息和所有由客户机提供的信息。
Servlet可以调用“响应”对象的方法发送响应,该响应是准备发回给客户机的。


四、手动实现简单的Servlet程序

大致步骤:

1、编写一个类去实现Servlet 接口;
2、实现service 方法,处理请求,并响应数据 ;
3、到web.xml 中去配置servlet程序的访问地址。

Servlet 程序的示例代码:

public class HelloServlet implements Servlet 
	/**
	* service 方法是专门用来处理请求和响应的
	* @param servletRequest
	* @param servletResponse
	* @throws ServletException
	* @throws IOException
	*/
	@Override
	public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException 
	System.out.println("Hello!Servlet 被访问了。");
	

web.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 标签给Tomcat 配置Servlet 程序-->
	<servlet>
		<!--servlet-name 标签Servlet 程序起一个别名(一般是类名) -->
		<servlet-name>HelloServlet</servlet-name>
		<!--servlet-class 是Servlet 程序的全类名-->
		<servlet-class>com.atguigu.servlet.HelloServlet</servlet-class>
	</servlet>
	<!--servlet-mapping 标签给servlet 程序配置访问地址-->
	<servlet-mapping>
		<!--servlet-name 标签的作用是告诉服务器,我当前配置的地址给哪个Servlet 程序使用-->
		<servlet-name>HelloServlet</servlet-name>
		<!--url-pattern 标签配置访问地址<br/>
		/ 斜杠在服务器解析的时候,表示地址为:http://ip:port/工程路径<br/>
		/hello 表示地址为:http://ip:port/工程路径/hello <br/>
-->
		<url-pattern>/hello</url-pattern>
	</servlet-mapping>
</web-app>

javaweb_servlet_02篇(代码片段)

Servlet_之_HttpServletRequest_HttpServletResponse本篇文章主要是总结HttpServletRequest、HttpServletResponse的作用、用法等。文章目录Servlet_之_HttpServletRequest_HttpServletResponse前言HTTP协议HTTP协议的请求格式常见的GET请求、POST请求HTTP协议的响应格式 查看详情

javaweb_servlet篇_01(代码片段)

Servlet-01篇通过前段时间得JavaWeb基础学习后,对于之前学习总结的,做一下简单的梳理。本篇主要梳理相关Servlet的知识点。文章目录Servlet-01篇一、Servlet基础概念二、Servlet的生命周期三、Servlet重要函数四、手动实现简单... 查看详情

javaweb_servlet_02篇(代码片段)

Servlet_之_HttpServletRequest_HttpServletResponse本篇文章主要是总结HttpServletRequest、HttpServletResponse的作用、用法等。文章目录Servlet_之_HttpServletRequest_HttpServletResponse前言HTTP协议HTTP协议的请求格式常见的GET请求、POST请求HTTP协议的响应格式... 查看详情

javaweb_servlet_02篇(代码片段)

Servlet_之_HttpServletRequest_HttpServletResponse本篇文章主要是总结HttpServletRequest、HttpServletResponse的作用、用法等。文章目录Servlet_之_HttpServletRequest_HttpServletResponse前言HTTP协议HTTP协议的请求格式常见的GET请求、POST请求HTTP协议的响应格式... 查看详情

elasticsearch常用操作:文档篇(代码片段)

[TOC]1新建文档1.1指定idPUTmy_blog/article/1"id":1,"title":"elasticsearch","posttime":"2017-05-01","content":"elasticsearchishelpfull!"返回:"_index":"my_blog","_type":"article","_id":"1","_version":1,"resul 查看详情

hbase_学习_01_hbase环境搭建(单机)(代码片段)

一、前言本文承接上一篇:hadoop_学习_02_Hadoop环境搭建(单机) ,主要是搭建HBase的单机环境 二、环境准备在虚拟机中:操作系统:linuxCentOS6.8jdk:1.7hadoop:2.8.3hbase:1.4.2 三、hbase下载1.hbase下载地址http://mirror.bit.edu.cn/apache/hbas... 查看详情

bzoj2133切割(树形dp,树上背包)大概是本题全网第一篇题解>_<bzoj修复工程(代码片段)

整理的算法模板合集:ACM模板点我看算法全家桶系列!!!实际上是一个全新的精炼模板整合计划BZOJ2133切割这道题全网搜不到任何一篇题解>_<看评测记录也没有几个人AC…不过其实很简单就是了,可能是... 查看详情

bzoj2133切割(树形dp,树上背包)大概是本题全网第一篇题解>_<bzoj修复工程(代码片段)

整理的算法模板合集:ACM模板点我看算法全家桶系列!!!实际上是一个全新的精炼模板整合计划BZOJ2133切割这道题全网搜不到任何一篇题解>_<看评测记录也没有几个人AC…不过其实很简单就是了,可能是... 查看详情

jvm_01内存结构篇(代码片段)

JVM(JavaVirtualMachine)一、前言1、什么是JVM?1、定义:JavaVirtualMachine,Java程序的运行环境(Java二进制字节码的运行环境)。2、好处:一次编译,处处执行自动的内存管理,垃圾回收机制数... 查看详情

第一篇随笔(代码片段)

1#元类2classmyType(type):3def__init__(self,obj_name,base_tuple,attr_dict):4print(self,obj_name,base_tuple,attr_dict,sep=‘‘)56def__call__(self,*args,**kwargs):7print(self,args,kwargs,sep=‘‘)8#<cla 查看详情

python基础篇_006_面向对象(代码片段)

面向对象1.初识类:#定义一个函数,我们使用关键字def"""def函数名(参数):‘‘‘函数说明‘‘‘函数体return返回值"""deffunc():print("funcexecute...")#定义一个类使用关键字class"""class类名:‘‘‘类说明‘‘‘类体"""classC:passclassPerson:role... 查看详情

leetcode解题笔记数组篇(代码片段)

文章目录一、基础篇26.删除排序数组中的重复--2022/01/16122.买卖股票的最佳时机II--2022/01/17189.轮转数组--2022/01/18217.存在重复元素--2022/01/19136.只出现一次的数字--2021/12/14350.两个数组的交集II--2022/01/1266.加一--2022/01/201.两数之和(... 查看详情

leetcode解题笔记数组篇(代码片段)

文章目录一、基础篇26.删除排序数组中的重复--2022/01/16122.买卖股票的最佳时机II--2022/01/17189.轮转数组--2022/01/18217.存在重复元素--2022/01/19136.只出现一次的数字--2021/12/14350.两个数组的交集II--2022/01/1266.加一--2022/01/201.两数之和(... 查看详情

ctfshowsql注入篇(211-230)(代码片段)

文章目录211212213214215216217218219220221222223224225-230225226227228|229|230211在上题的基础上加了个空格过滤,再稍微改改刚才的脚本fromlib.core.compatimportxrangefromlib.core.enumsimportPRIORITYimportbase64__priority__= 查看详情

算法_二叉树遍历篇(代码片段)

Java二叉树遍历篇通过二叉树的前序、中序、后序遍历以及层序遍历等方式,理解二叉树的结构思想。文章目录Java二叉树遍历篇二叉树定义一、前序遍历二、中序遍历三、后序遍历四、层序遍历二叉树定义publicclassTreeNode/**根... 查看详情

算法_二叉树遍历篇(代码片段)

Java二叉树遍历篇通过二叉树的前序、中序、后序遍历以及层序遍历等方式,理解二叉树的结构思想。文章目录Java二叉树遍历篇二叉树定义一、前序遍历二、中序遍历三、后序遍历四、层序遍历二叉树定义publicclassTreeNode/**根... 查看详情

python-初见-高级篇(代码片段)

目录正则表达式CGIMySQLPyMySQL网络编程多线程线程同步线程优先级JSON推荐阅读:https://www.cnblogs.com/zwtblog/tag/Python/正则表达式主要是re模块:#publicsymbols__all__=["match","fullmatch","search","sub","subn","split","findall","finditer","co 查看详情

算法_贪心算法篇(代码片段)

LeetCode_跳跃游戏本文通过跳跃游戏的几个算法例题总结一下相关贪心算法,开始学习的阶段,借鉴好的算法思路并学习,也巩固一下最近学习的算法。(后续遇到贪心算法会续更~~)文章目录LeetCode_跳跃游戏前... 查看详情