JavaEE
2021-02-23 00:33:18 0 举报
AI智能生成
登录查看完整内容
为你推荐
查看更多
JavaEE开发的基础知识
作者其他创作
大纲/内容
JavaEE
web开发引入
HTML
超文本标记语言
css
CSS 指层叠样式表 (Cascading Style Sheets) 用于美化页面显示效果
HTTP 超文本传输协议
解决的问题:
为了实训HTML文件的共享的一套规范
内容:HTTP的报文特征分为
请求报文
请求行
请求的协议版本
URL资源位置
请求方法
常用的一般风格方法
GET
明文传输 数据?之后以key=name&的方式追加
提交的数据最多不能超过1024byte
POST
加密传输
数据在form表单中
数据大小理论上没有限制
业内新流行RestfulAPI风格
GET
GET(SELECT):从服务器取出资源(一项或多项)。
POST
POST(CREATE):在服务器新建一个资源。
PUT
PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)
PATCH
PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
DELETE
DELETE(DELETE):从服务器删除资源。
请求头 一般常用的
通用头部:是客户端和服务器都可以使用的头部,可以在客户端、服务器和其他应用程序之间提供一些非常有用的通用功能,如Date头部。
请求头部:是请求报文特有的,它们为服务器提供了一些额外信息,比如客户端希望接收什么类型的数据,如Accept头部。
参数说明
Accept
Accept-Charset
浏览器可以接受的字符编码集。
Accept-Encoding
指定浏览器可以支持的web服务器返回内容压缩编码类型。如GZIP 等
Accept-Language
浏览器可接受的语言
Authorization
HTTP授权的授权证书
Cache-Control
指定请求和响应遵循的缓存机制
Connection
表示是否需要持久连接。(HTTP 1.1默认进行持久连接)
Cookie
HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。
Date
请求发送的日期和时间
Host
指定请求的服务器的域名和端口号
Referer
Content-Length
请求的内容长度
Content-Type
请求的与实体对应的MIME信息
请求体
对应的需要传输的数据
响应报文
响应行
协议版本 1.0 1.1 ...
状态码
HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:
1**
信息,服务器收到请求,需要请求者继续执行操作
2**
\t成功,操作被成功接收并处理
3**
重定向,需要进一步的操作以完成请求
4**
\t客户端错误,请求包含语法错误或无法完成请求
5**
服务器错误,服务器在处理请求的过程中发生了错误
一般常用的状态码大全合集1.0版本
HTTP状态码表(版本1) 此表含状态码英文名称状态码\t状态码英文名称\t中文描述1开头的状态码100\tContinue\t继续。客户端应继续其请求101\tSwitching Protocols\t切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议2开头的状态码200\tOK\t请求成功。一般用于GET与POST请求201\tCreated\t已创建。成功请求并创建了新的资源202\tAccepted\t已接受。已经接受请求,但未处理完成203\tNon-Authoritative Information\t非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本204\tNo Content\t无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档205\tReset Content\t重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域206\tPartial Content\t部分内容。服务器成功处理了部分GET请求3开头的状态码300\tMultiple Choices\t多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择301\tMoved Permanently\t永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替302\tFound\t临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI303\tSee Other\t查看其它地址。与301类似。使用GET和POST请求查看304\tNot Modified\t未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源305\tUse Proxy\t使用代理。所请求的资源必须通过代理访问306\tUnused\t已经被废弃的HTTP状态码307\tTemporary Redirect\t临时重定向。与302类似。使用GET请求重定向4开头的状态码400\tBad Request\t客户端请求的语法错误,服务器无法理解401\tUnauthorized\t请求要求用户的身份认证402\tPayment Required\t保留,将来使用403\tForbidden\t服务器理解请求客户端的请求,但是拒绝执行此请求404\tNot Found\t服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置\"您所请求的资源无法找到\"的个性页面405\tMethod Not Allowed\t客户端请求中的方法被禁止406\tNot Acceptable\t服务器无法根据客户端请求的内容特性完成请求407\tProxy Authentication Required\t请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权408\tRequest Time-out\t服务器等待客户端发送的请求时间过长,超时409\tConflict\t服务器完成客户端的PUT请求是可能返回此代码,服务器处理请求时发生了冲突410\tGone\t客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置411\tLength Required\t服务器无法处理客户端发送的不带Content-Length的请求信息412\tPrecondition Failed\t客户端请求信息的先决条件错误413\tRequest Entity Too Large\t由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息414\tRequest-URI Too Large\t请求的URI过长(URI通常为网址),服务器无法处理415\tUnsupported Media Type\t服务器无法处理请求附带的媒体格式416\tRequested range not satisfiable\t客户端请求的范围无效417\tExpectation Failed\t服务器无法满足Expect的请求头信息5开头的状态码500\tInternal Server Error\t服务器内部错误,无法完成请求501\tNot Implemented\t服务器不支持请求的功能,无法完成请求502\tBad Gateway\t充当网关或代理的服务器,从远端服务器接收到了一个无效的请求503\tService Unavailable\t由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中504\tGateway Time-out\t充当网关或代理的服务器,未及时从远端服务器获取请求505\tHTTP Version not supported\t服务器不支持请求的HTTP协议的版本,无法完成处理
响应状态码描述信息
响应头
Accept-Ranges
表明服务器是否支持指定范围请求及哪种类型的分段请求
Allow
对某网络资源的有效的请求行为,不允许则返回405
告诉所有的缓存机制是否可以缓存及哪种类型
Content-Encoding
web服务器支持的返回内容压缩编码类型。
Content-Language
\t响应体的语言
响应体的长度
Content-MD5
返回资源的MD5校验值
返回内容的MIME类型
常用的如:Content-Type: text/html; charset=utf-8
原始服务器消息发出的时间
Set-Cookie
设置Http Cookie
Location
用来重定向接收方到非请求URL的位置来完成请求或标识新的资源
Transfer-Encoding
文件传输编码
Last-Modified
请求资源的最后修改时间
Expires
\t响应过期的日期和时间
响应体
响应的数据
特征:
默认 port 80
应答式
明文传输
无状态
URL URI 统一资源定位系统
web 基于HTML/HTTP /TCP等协议的数据传输系统 基于万维网
服务器知识
Web服务器是向外部发布web资源的软件(非硬件直接接入情况下)她实训了JavaEE企业级开发规范(Tomcat)
服务器的本质
在Java中 socket程序+IO流+基于网络的传输技术+HTTP协议等
常见的服务器
Tomcat
支持短连接
weblogic
WebSphere
JBoos
jettry
支持长连接
Nginx -主流
作用
1:接受请求
对请求数据进行加工
2:响应请求
对返回的数据进行加工
实现了J2EE(Java 2 Platform Enterprise Edition)开发规范的一个程序
接收请求
响应数据
调用application 程序
根据访问URL 查找对应的程序
解析请求参数
调用service方法
将相关数据进行IO和网络传输
加工数据
遵循HTTP协议
servlet
server app服务小程序 相当于非常小的一个服务器
每一个servlet 本质都可以相当于一个小的服务器
获取请求
响应请求
使用方式
1 定义类实现Servlet接口,重写方法注册servlet --比较麻烦不推荐
2 继承HttpServlet 在web.xml中进行声明和注册
3 使用注解:@WebServlet
servlet的生命周期
1.init 方法是初始化servlet的方法,默认第一次访问时初始化,且只会执行一次
Servlet相关API(重点)
请求 HttPServletRequest
获取参数
getParameter(name) : 根据参数名称 获取对应的参数值
getParameterValues(name) : 根据参数名称 获取对应的数组值
getParameterNames() : 获取所有的请求参数的 name 的集合
getParameterMap() : 获取由请求参数和对应的值 组成的map
设置编码
req.setCharacterEncoding(\"UTF-8\");
获取网络信息
获取 网络请求的请求方法 req.getMethod();//GET POST DELETE PUT 等等
获取请求协议 req.getProtocol();
获取请求的URL req.getRequestURL();// 获取请求的URL
获取请求的端口 req.getLocalPort();
获取请求的资源路径 req.getRequestURI();
请求头信息
//内置的方法 String contentType = req.getContentType(); System.out.println(\"contentType : \"+ contentType);
根据指定的头的key 获取对应的值
//获取所有的请求头name值 Enumeration<String> headerNames = req.getHeaderNames();
相关作用域对象
request HttpServletRquest 一次请求
seesion HttpServletSeesion 一次会话
application servletContext 整个应用程序
在JSP中存在四个作用域对象:pageContext / request /session /application在Servlet中只有3个作用域对象: request /session /application。PageContext是JSP特有的。
servlet怎么被访问到的
Servlet信息会被放在一个map容器中,map容器中存储了2个关键信息:key是servlet的暴露的地址value是servlet类的全路径 ---> 根据反射实例化对象 ---> 根据对象调用service
内部转发
内部转发是Servlet实现跳转的一种方式,并且会将请求对象传递到下一个地址(即可以跳转JSP、也可以跳转Servlet)
转发 是把req resp 在应用程序的内部转发到下一个 位置 完成处理后会原路返回
特征: 一次请求一次响应
示范:req.getRequestDispatcher(\"servlet02.do\
属性相关操作
getAttribute(name) : 从作用域中获取属性值
getAttributeNames() : 获取作用域中所有属性的name的集合
removeAttribute(name) : 从作用域中删除属性值
HttpServletRequest/HttpSession/ServletContext三个对象的属性的API是一样。
响应 HTTPServletResponse
设置响应数据编码
//此时指定的是按照 UTF-8编码 指定将字符转化为字节的编码格式 resp.setCharacterEncoding(\"UTF-8\");
//数据时 html的字符串 按照 UTF-8的编码 resp.setContentType(\"text/html;charset=UTF-8\"); // tomcat 默认编码 ISO-8859-1 //文件是 : UTF-8编码
setCharacterEncoding 是设置响应给浏览器的数据的编码格式
setContentType 是设置响应文件类型 MIME的多媒体标记类型 text 是大类型文本类型 html 是text下面的子类型 还可以有json 等.... charset 是响应的文件类型是以什么编码格式去解析
获取响应流信息
在Servlet响应流信息主要分为2类:字节流 : 多用于文件的下载,处理一些非字符串数据。字符流 : 多用于处理文本,主要与ajax结合使用
resp.getOutputStream();// 获取字节网络输出流
resp.getWriter();// 获取字符网络输出流
设置响应头
Servlet支持通过API自定义响应头,一般响应头不涉及中文。
resp.addHeader(\"zhangsan\
addHeadder 是增加原本不存在的响应头 还有一个setHeadder 也可以设置响应头 是用来设置存在的响应头 如果add里的key与预留的发生了重合会覆盖原有的内容
重定向
重定向也是Servlet使用页面跳转的一种方式。重定向的原理,是基于HTTP协议的。重定向会向浏览器返回一个特殊的响应码:302.响应头里面:Location : 地址。浏览器解析数据时,解析响应头。在解析响应头时,发现响应码是 302浏览器会从响应头中获取Location 对应的值然后,浏览器自主请求这个Location 对应的地址
特征: 两次请求 两次响应
jsp
概念
为什么使用JSP
2,与纯 Servlet 相比:JSP 可以很方便的编写或者修改 HTML 网页而不用去面对大量的 println 语句。
3,与 JavaScript 相比:虽然 JavaScript 可以在客户端动态生成 HTML,但是必须使用 AJAX 与服务器交互,因此不能提供复杂的服务,比如访问数据库和图像处理等等。
4,与静态 HTML 相比:静态 HTML 不包含动态信息。
JSP 处理过程
1.浏览器访问服务器上的一个 jsp 文件
2.Web 服务器接收到对 JSP 网页的请求后将该请求传递给 JSP 引擎。JSP 引擎从磁盘中载入 JSP 文件,然后将它转化为对应的Java文件(翻译)。这种转化是将所有 html 代码用 println()语句输出,并将所有的 JSP 元素转化成 Java 代码。Jsp 文件转化为 Servlet 的过程又叫翻译。此时xxx.jsp文件就变成了xxx_jsp.java
3.JSP 引擎将 Java文件编译成可执行的字节码文件(.class 文件)
4.Web 服务器调用 servlet 引擎,servlet 引擎载入并执行字节码文件,通过 println()生成 HTML 字符串发给浏览器
5.浏览器去解析 HTML 代码,显示给用户简单描述以上过程:
第一次访问 index.jsp ----> 翻译成 index_jsp.java---->编译运行 index_jsp.class 会被加载到JVM内存中进行调用PS:被翻译后的 servlet 在 Tomcat 的 work 目录中可以找到
JSP 指令
JSP 中的三种指令标签:
page指令
Page 指令为容器提供当前页面的使用说明。一个 JSP 页面可以包含多个 page 指令。
相关的属性
buffer
指定 out 对象使用缓冲区的大小
autoFlush
控制 out 对象的缓存区
contentType
指定当前 JSP 页面的 MIME 类型和字符编码
errorPage
指定当 JSP 页面发生异常时需要转向的错误处理页面
isErrorPage
指定当前页面是否可以作为另一个 JSP 页面的错误处理页面
extends
指定 servlet 从哪一个类继承
import
导入要使用的 Java 类
info
定义 JSP 页面的描述信息
isThreadSafe
指定对 JSP 页面的访问是否为线程安全
language
定义 JSP 页面所用的脚本语言,默认是 Java
session
指定 JSP 页面是否使用 session
isELIgnored
指定是否执行 EL 表达式
isScriptingEnabled
确定脚本元素能否被使用
include指令
通过 include 指令来包含其他文件。被包含的文件可以是 JSP 文件、HTML 文件或文本文件。包含的文件就好像是该 JSP 文件的一部分,会被同时编译执行。 注意 这里是文件只要执行就会同时编译包含进来
<%@ include file=\"文件相对url\" %>
taglib指令
Taglib 指令引入一个标签库的定义,包括标签库路径、标签库前缀。
aglib 指令的语法:<%@ taglib uri=\"uri\" prefix=\"prefixOfTag\" %>
uri 属性确定标签库的位置,prefix 属性指定标签库的前缀。如下是导入 JSTL 的标签库:<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\" %>
JSP 动作
与 JSP 指令元素不同的是,JSP 动作元素在请求处理阶段起作用。JSP 动作元素是用 XML 语法写成的。
利用 JSP 动作可以动态地插入文件、重用 JavaBean 组件、把用户重定向到其它的页面、为 Java 插件生成 HTML 代码。动作元素只有一种语法,如下:<jsp:action_name attribute=\"value\" />
语法\t描述jsp:include\t在页面被请求的时候引入一个文件。 这个动作是在请求执行时才引入jsp:useBean\t寻找或者实例化一个 JavaBean。jsp:setProperty\t设置 JavaBean 的属性。jsp:getProperty\t输出某个 JavaBean 的属性。jsp:forward\t把请求转发到一个新的资源。jsp:plugin\t根据浏览器类型为 Java 插件生成 OBJECT 或 EMBED 标记。jsp:element\t定义动态 XML 元素jsp:attribute\t设置动态定义的 XML 元素属性。jsp:text\t在 JSP 页面和文档中使用写入文本的模板
include指令和include动作有什么区别
<jsp:forward>动作
jsp:forward 动作把请求转发到其它的资源。jsp:forward 标记只有一个属性 page。语法格式如下所示:<jsp:forward page=\"URL 地址\" />
page 属性包含的是一个相对 URL。page 的值既可以直接给出,也可以在请求的时候动态计算,可以是一个 JSP 页面或者一个 Java Servlet.
JSP 9大隐式对象(9大内置对象)
JSP 本质上是一个servlet 实际上这九大内置对象就是 在servlet里 注入了这么9个全局范围的内置对象
request
response
out
JspWriter 类的实例,用于把结果输出至网页上
application
ServletContext 类的实例,与应用上下文有关.全局容器
config
优先级:pageContext > request > session > application
pageContext
page
代表页面本身,类似于 Java 类中的 this 关键字
exception
Throwable 类的对象,代表发生错误的 JSP 页面中对应的异常对象
6.四大作用域
pageContext : 当前页面
request : 一次请求
session : 一次会话
application : 当前应用
作用的范围从小到大:pageContext < request < session < application
重定向与内部转发
EL表达式
EL表达式只能从四大作用中取值,并且优先级为:pageContext 、 request 、 session 、application。EL表示默认是按照从小作用域到大作用域的范围去值,且一旦查找到了对应的值,则终止取值行为,返回值。如果四个作用域都没有查找到值,则返回空字符串。
EL表达式各种取值
简单数据类型取值
request.setAttribute(\"name\
对象属性取值
${key.属性名} 最常用
EL表达式去使用属性名取值的本质是调用 get方法
示范:
Map取值
${key.map中key}
示范
数组取值
${key[index]}
由于el表达式中没有循环,所以单使用el表示从数组中取值一般不使用。
EL表达式运算符
算术运算符 + - * / %
逻辑运算符
EL表达式也支持逻辑运算符&& \tand|| \t\tor! \t\tnot
代码示范
关系运算符
> gt>= ge< lt<= le== eq!= ne
三元运算符
表达式?值1:值2如果表达式最终运算结果为true 则返回值1,否则返回值2
empty运算符
empty运算符,表示数据为空。如果数据是字符串,那么字符串为null 或者空字符串则empty返回true如果数据是数组,那么数组为null或者空数组empty返回true
EL表达式内置对象
EL表达式语言中定义了11个隐含对象,使用这些隐含对象可以很方便地获取web开发中的一些常见对象,并读取这些对象的数据。语法:${隐含对象名称}
序号\t隐含对象名称 描 述1\tpageContext 对应于JSP页面中的pageContext对象(注意:取的是pageContext对象)2\tpageScope 代表page域中用于保存属性的Map对象3\trequestScope 代表request域中用于保存属性的Map对象4\tsessionScope 代表session域中用于保存属性的Map对象5\tapplicationScope 代表application域中用于保存属性的Map对象6\tparam 表示一个保存了所有请求参数的Map对象7\tparamValues 表示一个保存了所有请求参数的Map对象,它对于某个请求参数,返回的是一个string[]8\theader 表示一个保存了所有http请求头字段的Map对象9\theaderValues 同上,返回string[]数组。注意:如果头里面有“-” ,例Accept-Encoding,则要headerValues[“Accept-Encoding”]10\tcookie 表示一个保存了所有cookie的Map对象11\tinitParam 表示一个保存了所有web应用初始化参数的map对象
扩展提示
1.EL表达式默认是从小作用域到大作用域获取值。如果作用域值的key就是同名,默认只能取到小作用域中值,此时可以使用el表达式,获取作用域对应的隐藏对象,然后根据key获取值。 可以指定作用域来取值
JSTL
介绍
JSTL的使用
1导入相关jar包 jstl-1.2.jarstandard-1.1.2.jar
2在页面引入标签库 <%@taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>
JSTL常用标签
if条件分支标签
语法:<c:if test=\"表达式\"> 内容</c:if>如果表达式为true,则执行内容部分,否则不执行
choose...when...多条件分支标签
语法:<c:choose> <c:when test=\"表达式1\">内容1</c:when> <c:when test=\"表达式n\">内容n</c:when> <c:otherwise>内容n+1</c:otherwise></c:choose>自上而下执行表达式,如果表达式为true 则执行相应的内容,且终止判断如果所有when表达式都为false,则执行otherwise后面的内容
forEach循环标签
forEach标签属性: items : 待遍历数据容器 var : 数据容器中每次循环时元素的别名 varStatus :每次遍历的状态信息别名 \tindex : 遍历下标索引 \tfirst : 是否第一个元素 \tlast : 是否是最后一个元素count : 第几次循环 begin : 开始循环的索引 end : 终止循环的索引 step : 步长 每次循环索引增长的基数 默认是1
格式化标签
格式化标签,是将数据按照要求进行一个格式化显示。常见格式化,有时间格式化和数组格式化
<%@taglib prefix=\"fmt\" uri=\"http://java.sun.com/jsp/jstl/fmt\" %>
时间格式化 <fmt:formatDate value=\"${date}\" pattern=\"yyyy-MM-dd HH:mm:ss\" var=\"nowDate\" ></fmt:formatDate>
数字格式化 <fmt:formatNumber value=\"${money}\" type=\"CURRENCY\" pattern=\
会话技术
Javaweb的会话技术是为了弥补HTTP通信协议的不足。
1.明文传输
2.应答式协议 只有有了请求,服务器才能做出响应
3.无状态 服务器不会记录客户端信息 如果客户端重复请求,服务器是不知道的。
解决无状态的生活案列对比解释
由于HTTP协议是无状态的协议,不记录客户端信息的协议,如果客户端的请求希望使用历史数据,无法获取之前的访问信息数据。基于这样的情况,JavaWeb这块,提供了2种解决方案,这两种解决方案就是JavaWeb的会话技术。 生活中例子: 逛超市1.将物品寄存,号码牌,根据号码牌换物品 ---- seesion2.自己把自己物品背着 ------ cookieJavaWeb的解决方案与生活场景解决方案是类似的。
解决方案
方案一
程序将数据存储在服务器中,并且存储数据的格式key-value(key是服务器生成一个唯一标识),服务器会将这个key给客户端,每次客户端再次访问服务器会将key带给服务器,然后如果想要获取存储数据就是用这个key去服务器存储区域获取。这种方案的技术叫session.服务器给客户的key是session的ID。
方案二
服务器将数据存储在客户端,客户端每次请求时默认将这个数据带给服务器。若需要使用,则在指定客户端存储数据的区域获取数据,从而进行使用。这个技术叫做cookie.
方案一是基于方案二。session基于cookie技术
font color=\"#c41230\
客户端缓存技术
不安全 可以被一些手段读取
但是很多公司的恶心之处就在于此基本上把cookie设置到了几十年后过期 如抖音....
seesion
seesion 是基于cookie的技术
seesion的应用场景
2.将登录时验证码存放在session中,将用户输入的验证码和session中存储的验证码进行对比。
seesion的不足
Jsessionid只是tomcat的对sessionid的叫法,其实就是sessionid;在其它的容器也许就不叫jsessionid了。
服务器端Java -相关API
cookie
resp.addCookie(cookie) ; //将Cookie放在响应头
getName( ) : 获取cookie的name值
getValue( ) : 获取cookie的value
setDomain( 域名 ) : 设置cookie生效的域名 分布式涉及
setPath( 路径 ) : 设置cookie生效的路径 分布式涉及 默认是对当前项目生效
setHttpOnly(boolean) : 设置cookie能否被JS访问
setMaxAge(times) : 设置cookie的有效时间 单位 秒 若是0 则是删除cookie 如果设置有效期,浏览器将会将cookie进行持久化
req.getCookies( ); 获取请求中所有的cookie
getId( ) : 获取session的id
setMaxInactiveInterval(time) : 设置session存活时间 默认是30分钟,单位秒 如果设置为0或者负数 ,session不会失效
getMaxInactiveInterval( ) : 获取session的存活时间
invalidate( ) : 解除session的绑定 使session失效
getAttribute(name) : 从session作用域获取值
getAttributeNames( ) : 获取session作用域中所有属性的name值的集合
removeAttribute( name) : 从session作用域中移除属性值
getServletContext( ) : 获取当前ServletContext对象
过滤器
1.1什么是过滤器
它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理。使用Filter的完整流程:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理。
1.2过滤器如何实现功能
1在HttpServletRequest到达 Servlet 之前,拦截客户的HttpServletRequest 。根据需要检查HttpServletRequest,也可以修改HttpServletRequest 头和数据。
2在HttpServletResponse到达客户端之前,拦截HttpServletResponse 。根据需要检查HttpServletResponse,也可以修改HttpServletResponse头和数据。
1.3过滤器如何使用
使用web.xml方式配置Filter
2开发Filter
3在web.xml中配置Filter拦截哪些资源
filterChain.doFilter -- 过滤链 -- 进入下一个过滤器
使用注解实现Filter
1.自定义类实现Filter接口
2.重写相关方法
3.在类上使用@WebFilter注解
过滤器的生命周期
初始化方法:
init(FilterConfig filterConfig); Filter的创建和销毁由WEB服务器负责
拦截请求方法
doFilter 这个方法完成实际的过滤操作。当客户请求访问与过滤器关联的URL的时候,Servlet过滤器将先执行doFilter方法。FilterChain参数用于访问后续过滤器。
销毁方法:
destroy();Filter对象创建后会驻留在内存,当web应用移除或服务器停止时才销毁。在Web容器卸载 Filter 对象之前被调用。该方法在Filter的生命周期中仅执行一次。在这个方法中,可以释放过滤器使用的资源。
Filter配置参数
来设置编码格式的过滤设置
1.7过滤器链的使用
监听器
什么是监听器?
就是对 servlet 中 request seesion servletContext 的监听
@WebListener 可以使用注解@WebListener代替xml的配置
监听器的分类
生命周期监听
ServletRequestListener :监听每个HttpServletRequest对象的
HttpSessionListener : 监听HttpSession的生命周期
ServletContextListener : 监听ServletContext的生命周期
属性变化监听
ServletRequestAttributeListener : 监听HttpServletRequest的属性变化
HttpSessionAttributeListener : 监听HttpSession的属性变化
ServletContextAttributeListener : 监听ServletContext属性变化
认识监听器
认识Requet域监听器
认识Session域监听器
认识ServletContext域监听器
示范作业
Ajax
背景
可能会破坏浏览器的后退行为
降低了浏览器和服务器的操作负荷
什么是同步操作
什么是异步操作
AJAX介绍
Ajax 是一种综合技术
Ajax本质是利用js 来调用浏览器提供的通信技术与多线程技术来实现异步操作一种复合技术
实现方案
原生Ajax
老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象:
兼容其他老ie的Ajax对象
步骤
1 创建通信对象
2 监听通信状态
3 创建请求
4 发送请求
XMLHttpRequest
核心方法
new XMLHttpRequest()\t创建新的 XMLHttpRequest 对象
abort()\t取消当前请求
getAllResponseHeaders()\t返回头部信息
getResponseHeader()\t返回特定的头部信息
规定请求的类型、URL 以及是否异步处理请求。method:请求的类型;GET 或 POSTurl:文件在服务器上的位置async:true(异步)或 false(同步)
send(string)\t
\t将请求发送到服务器。string:仅用于 POST 请求
核心属性
onreadystatechange\t定义当 readyState 属性发生变化时被调用的函数(事件属性)
readyState
存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。0: 请求未初始化1: 服务器连接已建立2: 请求已接收3: 请求处理中4: 请求已完成,且响应已就绪
status
返回请求的状态号?200: \"OK\"?403: \"Forbidden\"?404: \"Not Found\"如需完整列表请访问?Http 消息参考手册
statusText
返回状态文本(比如 \"OK\" 或 \"Not Found\")
responseText\t以字符串返回响应数据
responseXML\t以 XML 数据返回响应数据
当 readyState 等于 4 且status状态为 200 时,表示响应已就绪:
jQuery中Ajax的实现
$.ajax(option)属性详解
url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址。
type: 要求为String类型的参数,请求方式(post或get)默认为get。注意其他http请求方法,例如put和delete也可以使用,但仅部分浏览器支持。
timeout: 要求为Number类型的参数,设置请求超时时间(毫秒)。此设置将覆盖$.ajaxSetup()方法的全局设置。
async : 是否异步要求为Boolean类型的参数,默认设置为true,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为false。注意,同步请求将锁住浏览器,用户其他操作必须等待请求完成才可以执行。
什么时候使用 async false 当 清理的数据需要参与到当前ajax之外的运算时使用同步
data
要求为Object或String类型的参数,发送到服务器的数据。如果已经不是字符串,将自动转换为字符串格式。get请求中将附加在url后。防止这种自动转换,可以查看 processData选项。对象必须为key/value格式,例如{foo1:\"bar1\
dataType
要求为String类型的参数,预期服务器返回的数据类型。如果不指定,JQuery将自动根据http包mime信息返回responseXML或responseText,并作为回调函数参数传递。可用的类型如下:xml:返回XML文档,可用JQuery处理。html:返回纯文本HTML信息;包含的script标签会在插入DOM时执行。script:返回纯文本JavaScript代码。不会自动缓存结果。除非设置了cache参数。注意在远程请求时(不在同一个域下),所有post请求都将转为get请求。json:返回JSON数据。jsonp:JSONP格式。使用JSONP形式调用函数时,例如myurl?callback=?,JQuery将自动替换后一个“?”为正确的函数名,以执行回调函数。text:返回纯文本字符串。
要求为String类型的参数,当发送信息至服务器时,内容编码类型默认为\"application/x-www-form-urlencoded\"。该默认值适合大多数应用场合。
beforeSend
要求为Function类型的参数,发送请求前可以修改XMLHttpRequest对象的函数,例如添加自定义HTTP头。在beforeSend中如果返回false可以取消本次ajax请求。
success
要求为Function类型的参数,请求成功后调用的回调函数,有两个参数。(1)由服务器返回,并根据dataType参数进行处理后的数据。(2)描述状态的字符串。
error
要求为Function类型的参数,请求失败时被调用的函数。该函数有3个参数,即XMLHttpRequest对象、错误信息、捕获的错误对象(可选)。
complete
要求为Function类型的参数,请求完成后调用的回调函数(请求成功或失败时均调用)。参数:XMLHttpRequest对象和一个描述成功请求类型的字符串。
success与error都是一种完成 不管成功还是失败都会调用该方法 且在最后调用
$.load()
url: URL地址data:待发送参数。callback:载入成功时回调函数。
$.get()
get 与 post getjson 都是基于ajax定制化的请求 固定了一些参数 只能是异步请求无法设置同步 如果要定制化的话必须使用$.ajax
$.post()
$.getJSON()
.AJAX数据格式处理
支持XML
JSON 现在的主流
{ } 对象 [] 数组
什么是跨域
本地路径地址:http://127.0.0.1:8080/sxt/index.jsphttps://127.0.0.1:8080/sxt/index.jsp 协议不一样http://192.168.24.11:8080/sxt/index.jsp IP不一致http://127.0.0.1:8888/sxt/index.jsp 端口不一致http://localhost:8080/sxt/index.jsp IP不一致
同源
相同的协议 protocol
相同的主机 host |域名
相同的端口 port
EL表达式虽然能够相对方便的获取到作用域的值,但是EL表达式没有循环,导致获取数组数据可用性不高,并且EL表达式没有条件分支控制,导致多条件的场景,EL表达式适用性不高。 这些不足,JavaWeb提供了标签弥补-JSTL(Java server pages standarded tag library),由于JSTL最长用到的标签库,前缀一般使用c表示,所以也被称之为c标签。
三者相同时就证明是同源的URL
0 条评论
回复 删除
下一页