JavaWeb 02_servlet基础
1. servlet是什么?作用?
1) Servlet 是Sun公司制定的一套技术标准,包含与Web应用相关的一系列接口,是Web应用实现方式的宏观解决方案I而具体的Servlet容器负责提供标准的实现。
2] Servlet 作为服务器端的一个组件, 它的本意是“服务器端的小程序”。Servlet 的实例对象由Servlet容器负责创建; Servlet的方法由容器在特定情况下调用; Servlet容器会在Web应用卸载时销毁Servlet 对象的实例。
3)简单可以理解为 Servlet 就是用来处理客户端的请求的.。
<!--配置LoginServlet :配置LoginServlet与处理的请求的映射.
客户端请求匹配的过程:
与<ser1vet-mapping>中的< ur1- pattern>进行匹配,匹配到以后, 再找到< serv1et -mapping>
中的<servlet-name>的值,再拿上该值到sservlet >节点中匹配相同的<servlet - name>,进而
找到<servlet-class>.
Tomcat通过反射的方式创建LoginServlet的实例,根据具体的请求方式调用对应的doGet或者是doPost方法.
-->
是一个运行在服务器端(web容器)中的一个类,要web容器调用(规定servlet必须提供一个service方法)如何规定servlet有service方法?servlet必须实现servlet接口,所继承的HttpServlet类实现servlet接口。
实现一个servlet可以基础自HttpServlet这个类,也可以直接实现servlet接口。提倡用继承的方式更简化编码。
@WebServlet(name = "helloServlet", value = "/hello-servlet")
这个注解是帮助把URL地址解析成对应的servlet的
HttpServletRequest: 代表客户端请求数据对象 为ServletRequest的子集
HttpServletResponse: 代表服务端的响应数据对象 为ServletResponse的子集
resp.setContentType("text/html");
1] HttpServletRequest
①该接口是ServletRequest接口的子接口,封装了HTTP请求的相关信息,由Servlet容器创建其实现类对象并传入service(ServletRequest reg, ServletResponse res)方法中。以下我们所说的HtpServletRequest. 对象指的是容器提供的HttpServletRequest.实现类对象。
②HttpServletRequest 对象的主要功能有
获取请求参数
在请求域中绑定数据
将请求转发给另外一个URL地址[转发]。
2] [ HittpServletResponse]
①该接口是ServletResponse接口的子接口,封装了HTTP响应的相关信息,由Servlet容器创建其实现类对象并传入service(ServletRequest reg, ServletResponse res)方法中。以下我们所说的HttpServletResponse. 对象指的是容器提供的
HttpSservletResponse.实现类对象
②主要功能
使用PrintWriter,对象向浏览器输出数据
实现请求的重定向重定向
2. 乱码
字符存储时以二进制格式表示,字符和二进制的对应关系就是编码。不同的文字有不同的编码。
由于现在的request属于接收客户端的参数,所以必然有其默认的语言编码,主要是由于在解析过程中默认
使用的编码方式为ISO-8859-1(此编码不支持中文),所以解析时一定会出现乱码。要想解决这种乱码问题,需要设
置request中的编码方式,告诉服务器以何种方式来解析数据。或者在接收到乱码数据以后,再通过相应的编码
格式还原。
3. 判断用户是已经登录的用户?
web协议是无连接协议(请求--- 建立连接----响应---关闭连接)
每个用户建立一个会员信息 Session
Request.getSession(); 如果已经有会员了,就返回会员信息,没有则新建一个会员信息
Session.serAttribute(); 登记会员信息
Session.getAttribute(); 读取会员信息
4.加密
数据密码字段不能存明码,要加密
非对称加密/对称加密
对称加密:加密秘钥和解密秘钥是一样的
5. Servlet的生命周期
Servlet没有main(方法,不能独立运行,它的运行完全由Servlet引擎来控制和调度。所谓生命周期,指的
是servlet容器何时创建servlet实例、何时调用其方法进行请求的处理、何时并销毁其实例的整个过程。
●实例和初始化时机
当请求到达容器时,容器查找该servlet对象是否存在,如果不存在,则会创建实例并进行初始化。
●就绪/调用/服务阶段
有请求到达容器,容器调用servlet对象的service()方法,处理请求的方法在整个生命周期中可以被多次调用;
HttpServlet的service()方法,会依据请求方式来调用doGet)或者doPost()方法。但是,这两个do方法默
认情况下,会抛出异常,需要子类去override.
●销毁时机
当容器关闭时(应用程序停止时),会将程序中的Servlet实例进行销毁。
上述的生命周期可以通过Servlet中的生命周期方法来观察。在Servlet中有三个生命周期方法,不由用户手
动调用,而是在特定的时机有容器自动调用,观察这三个生命周期方法即可观察到Servlet的生命周期。
init方法,在Servlet实例创建之后执行(证明该Servlet有实例创建了)
初始化方法
系统方法,服务器自动调用
当请求到这Servlet容器时,ServLet 容器会判断该Servlet对象是否存在,如果不存在,则创建实例并初始化
方法只会执行一次
service方法,每次有请求到达某个Servlet方法时执行,用来处理请求(证明该Servlet 进行服务了)
就绪/服务方法(处理请求数据)
系统方法,服务器自动调用
当有请求到达Servlet时,就会调用该方法
方法可以被多次调用
destroy方法,Servlet 实例销毁时执行(证明该Servlet的实例被销毁了)
系统方法,服务器自动调用
当服务器关闭或应用程序停止时,调用该方法
方法只会执行一次
Servlet的生命周期,简单的概括这就分为四步: servlet 类加载-->实例化-->服务-->销毁。
下面我们描述一下 Tomcat与Servlet是如何工作的,看看下面的时序图:
1. Web Client向Servlet容器(Tomcat) 发出Http请求
2. Servlet容器接收Web Client的请求
3. Servlet 容器创建一个HttpServletRequest 对象,将Web Client请求的信息封装到这个对象中
4. Servlet容器创建一个HttpServletResponse对象
5. Servlet容器调HttpServlet对象service方法,把Request与Response作为参数,传给HttpServlet
6. HttpServlet调用HttpServletRequest 对象的有关方法,获取Http请求信息
6. HttpServletRequest对象
HttpServletRequest对象:主要作用是用来接收客户端发送过来的请求信息,例如:请求的参数,发送的头
信息等都属于客户端发来的信息,service()方法中形 参接收的是HttpServletRequest接口的实例化对象,表示该
对象主要应用在TTP协议上,该对象是由Tomcat封装好传递过来。
HttpServletRequest是ServletRequest的子接口, ServletRequest 只有一个子接口, 就是HttpServletRequest。既然只有一个子接口为什么不将两个接口合并为-一个?
从长远.上讲:现在主要用的协议是HTTP协议,但以后可能出现更多新的协议。若以后想要支持这种新协
议,只需要直接继承ServletRequest接口就行了。
在HttpServletRequest接口中,定义的方法很多,但都是围绕接收客户端参数的。但是怎么拿到该对象呢?
不需要,直接在Service方法中由容器传入过来,而我们需要做的就是取出对象中的数据,进行分析、处理。
6.1.接收请求
6.1.1.常用方法
1.方法
getRequestURL() 获取客户端发出请求时的完整URL
getRequestURI) 获取请求行中的资源名称部分(项目名称开始)
getQuerytring() 获取请求行中的参数部分
getMethod() 获取客户端请求方式
getProtocol() 获取HTTP版本号
getContextPath() 获取webapp名字
6.1.2.获取请求参数
1.方法
getParameter(name)
获取指定名称的参数
getParameterValues(String name)
获取指定名称参数的所有值
2.示例
//获取指定名称的参数,返回字符串
String uname = request . getParameter("uname");
System. out. print1n("uname的参数值: " + uname) ;
//获取指定名称参数的所有参数值,返回数组
string[] hobbys = request. getParametervalues("hobby");
Sys tem. out. print1n("获取指定名称参数的所有参数值: " + Arrays . tostring(hobbys))
JavaWeb 02_servlet基础的更多相关文章
- JavaWeb:JavaBean基础
JavaBean基础 JavaBean简介: 1.JavaBean是一种可以重复使用的类,可以没有用户界面,主要负责业务数据或者处理事物(数据运算.操作数据库) 2.与JSP配合,可以简化JSP代码. ...
- 最详细的JavaWeb开发基础之java环境搭建(Windows版)
阅读文本大概需要 3 分钟. 首先欢迎大家来学习JavaWeb,在这里会给你比较详细的教程,从最基本的开始,循序渐进的深入.会让初学者的你少踩很多坑(大实话),如果你已经掌握了JavaWeb开发的基础 ...
- JavaWeb零基础入门-01 基础概念说明
一.序言 从学校出来到实习,发现学校学的东西太过基础,难于直接运用于工作中.而且工作中,现在都以web开发为主,学校开了web开发相关课程.自己学的不够深入,所以本人自学JavaWeb开发,介于学习巩 ...
- JavaWeb之基础(1) —— 文件、目录结构和创建项目
1. JavaWeb应用 JavaWeb应用从大类上分为静态和动态两种. 静态应用就是传统的HTML文件+素材资源构造的静态网页,不需要特殊的配置.JavaWeb也不是专门用来做静态网站的. 动态应用 ...
- JavaWeb零基础入门-02 开发环境安装
大家好!我又来了,上一篇我们讲了一些基础概念:Html.Web服务器.数据库.Http和JavaWeb三大组件,它们是什么,有什么作用,都有了初步的了解.接下来我们进入学习JavaWeb的第一步,开发 ...
- JavaWeb之基础(2) —— HTTP协议
1. 粗讲什么是HTTP协议 HTTP协议的全程是Hyper Text Transfer Protocol,超文本传输协议,见名知意,这是个用来控制传输超文本的协议.下面就来简单说说什么是HTTP协议 ...
- JavaWeb——MySQL基础
内容索引 数据库的基本概念 MySQL数据库软件 安装 卸载 配置 SQL 数据库的基本概念 1. 数据库的英文单词: DataBase 简称 : DB 2. 什么数据库? * 用于存储和管理数据的仓 ...
- JavaWeb前端基础复习笔记系列 二
课程:孔浩前端视频教程(JavaScript系列:1~5讲) <html> <head> <title></title> <!--html只负责显 ...
- JavaWeb前端基础复习笔记系列 一
课程:孔浩前端视频教程(CMS内容管理系统case) 1.背景知识 ASPCMS,是一个基于asp的CMS.类似于Jeecms是基于Java的.aspcms:http://www.aspcms.com ...
随机推荐
- Lesson10——NumPy 迭代数组
NumPy 教程目录 NumPy 迭代数组 NumPy 迭代器对象 numpy.nditer 提供了一种灵活访问一个或者多个数组元素的方式. 迭代器最基本的任务的可以完成对数组元素的访问. Exa ...
- 4G无线全网通太阳能水文设备电源监测系统BMS110
钡铼技术BMS110模块可实现4路电池电压.2路模拟量.2路数字量和1路温度测量,支持Modbus RTU over TCP和MQTT通讯协议,DC9-36V电源供电.BMS110可应用于各种有使用蓄 ...
- Lesson11——NumPy 位运算
NumPy 教程目录 Lesson11--NumPy 位运算 NumPy "bitwise_" 开头的函数是位运算函数. NumPy 位运算包括以下几个函数: 函数 描述 bitw ...
- 08python语法入门--基本数据类型及内置方法
数字类型int与float 定义 类型转换 使用 字符串 定义 类型转换 使用 优先掌握的操作 需要掌握的操作 了解操作 列表 定义 类型转化 使用 优先掌握的操作 需要掌握的操作 了解操作 元组 作 ...
- 5道面试题,拿捏String底层原理!
原创:微信公众号 码农参上,欢迎分享,转载请保留出处. String字符串是我们日常工作中常用的一个类,在面试中也是高频考点,这里Hydra精心总结了一波常见但也有点烧脑的String面试题,一共5道 ...
- IDEA配置scala
IDEA中配置scala 准备:先下好IDEA和scala安装包,配置好jdk环境 scala不想去官网下载的可以直接去百度网盘下载 链接: 链接:https://pan.baidu.com/s/17 ...
- nginx 配置ssl证书
1.443端口配置 server { listen 443 ssl; server_name www.test.com; ssl_certificate /usr/local/nginx/cert/t ...
- Web渗透测试入门之SQL注入(上篇)
题记: 本来今天想把白天刷的攻防世界Web进阶的做个总结,结果估计服务器抽疯环境老报错,然后想了下今天用到了SQL注入,文件上传等等,写写心得.相信很多朋友都一直想学好渗透,然后看到各种入门视频,入门 ...
- python数据分析与挖掘实战第二版pdf-------详细代码与实现
[书名]:PYTHON数据分析与挖掘实战 第2版[作者]:张良均,谭立云,刘名军,江建明著[出版社]:北京:机械工业出版社[时间]:2020[页数]:340[isbn]:9787111640028 学 ...
- 传统式BI工具和自助式BI工具到底有什么区别
相信很多人都听说过BI工具,但是你听说过自助BI工具吗?自助式BI工具面向没有IT背景的业务分析师,比传统的BI工具灵活易用,在一定程度上摆脱了对IT部门的大幅度依赖,使数据产品链更加大众化,更加理解 ...