Servlet学习笔记06——什么是转发,路径,状态管理?
1.include指令
(1)作用:
告诉容器,在将jsp转换成Servlet时,将
某个文件的内容插入到该指令所在的位置。
(2)语法:
<%@ include file=""%>
file属性用于指定被包含的文件。
2.比较重定向和转发
(1)能否共享request和response
转发可以,重定向不行。
注:
request和response的生存时间是
一次请求和响应期间存在。
(2)浏览器地址栏的地址有无变化
转发没有变化,重定向有变化。
(3)目的地有无限制
转发有限制(同一个应用),重定向没有。
3.路径问题
链接地址,表单提交,重定向,转发
<a href="">
<form action="">
response.sendRedirect("")
request.getRequestDispatcher("")
(1)什么是相对路径?
不以"/"开头的路径。
(2)什么是绝对路径?
以"/"开头的路径。
(3)如何写绝对路径?
链接地址,表单提交,重定向从应用名开始写,
而转发从应用名之后开始写。
注意:
不要将应用名直接写在路径里面,而应该
使用以下方法来获得实际部署时的应用名。
String request.getContextPath()
建议使用绝对路径,易写,易维护。
4.状态管理
(1)什么是状态管理?
将浏览器与服务器之间多次交互当做一个整体来
看待,并且将多次交互所涉及的数据(即状态)保存
下来。
(2)如何进行状态管理?
1)将状态保存在浏览器端(Cookie)
2)将状态保存在服务器端(Session)
(3)Cookie (小甜饼)
1)什么是Cookie?
服务器临时存放在浏览器端的少量数据。
2)工作原理
当浏览器第一次访问服务器时,服务器会将少量数据以
set-cookie消息头的形式发送给浏览器,浏览器会将这些数据保存下来;
当浏览器再次访问服务器时,会将这些数据以cookie消息头的形式发送给服务器。



3)如何添加Cookie?
Cookie c = new Cookie(String name,
String value);
注: name称之为cookie的名称,value
称之为cookie的值。
response.addCookie(c);
4)如何读取cookie?
注:读取浏览器发送过来的cookie
Cookie[] request.getCookies();
注: 该方法有可能返回null!
String cookie.getName();
String cookie.getValue();
5)cookie的编码问题
a.什么是cookie的编码问题?
cookie只能存放合法的ascii字符,中文需要
转换成ascii字符的形式来存放。
b.如何处理?
step1.在添加cookie时,使用encode方法。
String URLEncoder.encode(String str,
String charset);
step2.在读取cookie时,使用decode方法。
String URLDecoder.decode(String str,
String charset);
c.建议:添加cookie时,最好统一使用encode
方法编码。
6)cookie生存时间问题
a. 浏览器默认情况下,会将cookie保存在内存里面。
注:
浏览器只要不关闭,cookie就会一直存在,
关了,则cookie会被销毁。
b. 可以调用以下方法来设置生存时间
cookie.setMaxAge(int seconds)
注:
b1. 单位是秒。
cookie.setMaxAge(365 * 24 * 60 * 60);
b2. seconds可以大于0,等于0和小于0
大于0: 浏览器会把cookie保存在硬盘上,超过指定时间,浏览器会删除该cookie。
小于0:(缺省值),即把cookie存放到内存里面。
等于0:浏览器会立即删除该cookie。
比如,要删除名称为uid的cookie:
Cookie c = new Cookie("uid","");
c.setMaxAge(0);
response.addCookie(c);
Servlet学习笔记06——什么是转发,路径,状态管理?的更多相关文章
- Linux学习笔记06—系统用户及用户组的管理
一.认识/etc/passwd和/etc/shadow 1./etc/passwd 由 ‘:’ 分割成7个字段,每个字段的具体含义是: 用户名 存放账号的口令:现在存放在/etc/shadow下,在这 ...
- Servlet学习笔记(三)
目录 Servlet学习笔记(三) 一.HTTP协议 1.请求:客户端发送欸服务器端的数据 2.响应:服务器端发送给客户端的数据 3.响应状态码 二.Response对象 1.Response设置响应 ...
- Servlet学习笔记(二)
目录 Servlet学习笔记(二) Request对象 1.request和response对象: 2.request对象继承体系结构: 3.什么是HttpServletRequest ? 4.Htt ...
- Servlet学习笔记(四)
目录 Servlet学习笔记(四) 一.会话技术Cookie.session 1. 什么是会话技术? 2. 会话技术有什么用? 3. Cookie 3.1 什么是Cookie? 3.2 使用Cooki ...
- 机器学习实战(Machine Learning in Action)学习笔记————06.k-均值聚类算法(kMeans)学习笔记
机器学习实战(Machine Learning in Action)学习笔记————06.k-均值聚类算法(kMeans)学习笔记 关键字:k-均值.kMeans.聚类.非监督学习作者:米仓山下时间: ...
- iOS学习笔记06—Category和Extension
iOS学习笔记06—Category和Extension 一.概述 类别是一种为现有的类添加新方法的方式. 利用Objective-C的动态运行时分配机制,Category提供了一种比继承(inher ...
- # jsp及servlet学习笔记
目录 jsp及servlet学习笔记 JSP(Java Server Page Java服务端网页) 指令和动作: servlet(小服务程序) jsp及servlet学习笔记 JSP(Java Se ...
- Bash脚本编程学习笔记06:条件结构体
简介 在bash脚本编程中,条件结构体使用if语句和case语句两种句式. if语句 单分支if语句 if TEST; then CMD fi TEST:条件判断,多数情况下可使用test命令来实现, ...
- 【PMP学习笔记】第4章 项目整合管理
[PMP学习笔记]第4章 项目整合管理 一.项目整合管理 什么是项目整合管理? 项目整合管理由项目经理负责.虽然其他知识领域可以由相关专家(如成本分析专家.进度规划专家.风险管理专家)管理,但是项目整 ...
随机推荐
- Kudu的性能测试
不多说,直接上干货! Kudu的性能测试 1. kudu和parquet的比较 上图是官方给出的用Impala跑TPC-H的测试,对比Parquet和Kudu的计算速度.从图中我们可以发现,Ku ...
- apache配置多端口对应多个虚拟目录
经常需要在本地调试网站,却又不喜欢在http://localhost/网站的文件夹名 且几个比较重要的项目我想直接用端口号以示区分,想达到的效果如下: http://localhost/ 默认80端口 ...
- Mvc内建功能(DefaultModelBinder)自动绑定。
在做Asp.Net MVC项目中,都知道View负责页面展示数据或者提供页面收集数据,而所展示的数据或者收集的数据都是从Controller的Action中获取或提交到Controller的Actio ...
- elasticsearch映射及分析-----3
首先我们看下不同的索引方式相同的字段指定字段类型与不指定字段类型es会怎么处理 1.不指定类型,直接创建索引及类型文档 我们看下他默认的索引映射 2.创建索引和类型时指定字段类型 这里创建了一个索引为 ...
- Swift中as as! as?的区别
as :类型一致或者子类 仅当一个值的类型在运行时(runtime)和as模式右边的指定类型一致 - 或者是该类型的子类 - 的情况下,才会匹配这个值.如果匹配成功,被匹配的值的类型被转换成as模 ...
- python--json和pickle序列化
字符串存储 一般需要有信息需要记录的都写到文件上面,把要记录的信息转成字符串,然后在写入到文件中.这算是一种记录方式. 比如有一组用户信息需要存起来.数据定义好之后就可以写文件. info = { ' ...
- mybatis由JDBC的演化过程分析
我们知道,mybatis是对JDBC的封装,那么他是如何演变过来的呢? 摘自传智传媒Java培训资料 关于mybatis的演化原理,我们先看看我们最熟悉也是最基础的通过JDBC查询数据库数据,一般需要 ...
- TP5.1:模板赋值与变量输出
模板赋值:assign() 模板渲染:fetch() 前提准备: 1.在app/index/controller下建立一个控制器,名为Templates.php,里面有test1和test2方法,并且 ...
- nodejs一个函数实现消息队列中间件
消息队列中间件(Message Queue)相信大家不会陌生,如Kafka.RabbitMQ.RocketMQ等,已经非常成熟,在大大小小的公司和项目中也已经广泛使用. 有些项目中,如果是只使用初步的 ...
- 关于vim、nvim的折腾
1 from a view of enc ·nvim必须set enc=utf8,很多基于python的插件也默认了此,这对于中文这些并不友好,然而,vim支持多字节就好的多. 因为很多项目,大家可能 ...