request作用域:+response对象
【1】由客户端向服务端发送请求
【2】携带参数的请求
【3】get&post区别:
【4】获取请求的参数API:request.getParameter(name) \ request.getParameterValues(name)
【5】中文乱码处理
-对于post类型: request.setCharacterEncoding("utf-8"); //必须放在取值之前进行设置编码格式
-对于get类型:
-更改server.xml : URIEncoding="utf-8"
-server.xml :对于postget都生效:useBodyEncodingForURI="true" + request.setCharacterEncoding("utf-8");
【6】属性存取:属性不支持参数存取
-存取方式:setAttribute getAttribute
-属性特性:
-只有作用域才可以存取属性
-属性是key value格式存在的
-不能用去属性的方式获取参数
-属性取得后,不是String类型,是Object类型
-属性是可以保存对象的
【7】转发和重定向
转发:安全,无法访问外部资源【URL为提交页面,页面为最终转发页面】【支持携带参数与属性】
-转发的这个行为,始终是在服务器内部进行跳转
-一次请求抵达,服务器内部跳转,所有业务处理完毕以后,一次响应。
重定向:可以访问认以服务器内外资源【所以URL跟对应重定向页面保持一致】 || 不携带参数与属性
-重定向这个行为,是在反复的重新请求服务器
-多次请求,多次响应,响应中会告诉浏览器你下一次请求的目标
Session作用域+对象
【1】一次会话当中会有若干次的请求以及响应
【2】浏览器关闭或者失效后,再次请求,就是一个新的会话
【3】每个session都有一个唯一的sessioid【当客户端第一次向服务器发起请求,是没有sessionid】--服务器没有收到sessionid,会认为是新的请求,通过response返回一个sessionid.
【4】session对于每一个客户端来说,都是独立的。【-弱国访问的用户越来越多,会不断侵占服务器资源】——如果访问用户量极为庞大,支持使用第三方缓存来替代session,如zookeeper eids…
【5】session. invalidate() ——清除服务器当中session的信息
【6】-web服务器集群:负载均衡情况下的sessionid:失效
-单web服务器的情况下,原本的sessionid还有用:主要是作为客户端访问的凭证;
【7】token的设计:
-需要一个用户的唯一标识
-需要一个加密凭证
-每次请求响应都需要把token携带,用于替代sessionId;
Application作用域:所有用户共享
【1】所有用户共享
【2】 只有服务器关闭以后才失效
pageContext:针对于jsp页面本身【很少用 】
page
config
exception
out
Cookie
【1】作用域的数据都是保存在服务器的,cookie的数据是保存在客户端的
【2】cookie在客户端是明文的
【3】cookie是可以被禁用的
【4】优点:存在时间长,一些不敏感的数据,可以直接用cookie保存
note:
-注意区别作用域与转发重定向使用的区别
-
-
=====================================EL & JST =========================================
【1】JSP的初:简化输出操作,能够使用最直观的html的方式编写代码,但是如果大量嵌入Java代码,则违背了初衷。
【2】EL表达式:【屏蔽一些常见的异常、实现简单的自动类型转换】
-取某个具体的值
-取对象的值
-取数组、集合的值
【3】对作用域的访问
-requestScope.test
-sessionScope.test
-applicationScope.test
-pageScope.test
【4】JSTL:jsp标准标签库
-依赖:jstl1.2 & standard1.1.2
-头:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>-if \ foreach
【5】Notes:
-el和JSTL只在本页面生效
-el表达式是可以写在页面中的js当中,但是建议用双引号引起来;在第三方文件当中不生效
-js当中,jstl是不生效的。【都是标签,不支持标签套标签】
-用js操作dom的方式操作jstl?不支持,因为js是在jsp之后由浏览器负责解析的
-掌握业务流程