day06 乱码+重定向转发+Cookie
来源:互联网 发布:window10装mac系统 编辑:程序博客网 时间:2024/06/05 00:53
1、常用表单输入域的使用
radio:如果用户没有选择,服务器端接收到null;选择了,接收到选中的value的值
checkbox:(已婚)如果用户没有选择,服务器接收到null;选择了:界面上指定了value 属性,得到value的值,没有指定value,得到on。
2、客户端提交的中文数据编码问题
1.客户端当前使用什么编码,就以什么编码给你传递数据。
2.而Servlet请求默认使用ISO-8859-1编码 ,这样很可能会产生乱码问题。
解决办法:告诉服务器程序,客户端使用什么编码方式。
request.setCharacterEncoding("UTF-8"):只对POST请求有效
解决办法:拿到原始字节码(ISO-8859-1),重新编码
newString(name.getBytes("ISO-8859-1"),"UTF-8");
3、请求转发和重定向:RequestDispatcher
请求重定向:
特点:
1.浏览器行为
2.发出了2次请求
3.地址栏会变
4.不共享请求和响应对象
代码:
response.setStatus(302);
response.setHeader("Location","/day06/servlet/RequestDemo3");
或者
response.sendRedirect("/day06/servlet/RequestDemo3");//等同以上2句
转发:
特点:
1.服务端行为
2.发出了1次请求
3.地址栏不会变
4.共享请求和响应对象
5.不能转发给不同应用的组件
代码:
RequestDispatcher rd = request.getRequestDispatcher("/servlet/RequestDemo3");
rd.forward(request, response);
转发注意事项:
源组件à目标组件转发
转发给目标组件前,容器会清空response对象的所有的输出正文部分。(源组件向 response中写入的所有正文数据都无效)
转发前请不要刷新response的缓存或关闭输出流。
代码:
request.getRequestDispatcher(String path):path必须以"/"(代表当前应用)开头,表
示绝对路径。
ServletContext.getRequestDispatcher(Stringpath):如果以"/"开头,表示绝对路径;如
果不以"/"开头,表示相对路径
Tip:
各种路径的写法
服务器:用/代表当前应用。
客户端:用/day6(需要加应用名)
例子:
转发的路径:/就代表当前应用
重定向的路径:客户端用的/day6
<a href/> 客户端用的/day6
<script src=""/> 客户端用的/day6
<img src=""/> 客户端用的/day6
<link type="text/css"href=""/> 客户端用的/day6
<form action=""/> 客户端用的/day6
示意图:
4、包含:
RequestDispatcherinclude(ServletRequest request,ServletResponse response)动态包含
源组件包含目标组件
目标组件设置的头无效。
5、request域对象
因为request为局部变量,存活时间只发生在转发的时候,方法调用完之后这个局部变量就会被释放掉。
存放的内容与request对象的生命周期有关。
6、会话概述
用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话。
7、Cookie技术
1.Cookie深入了解:
javax.servlet.http.Cookie
Cookie是一段小数据,可以由服务器写给浏览器,浏览器将此数据存放在自己的
缓存中。要想传中文,必须编码后才能存(BASE64Encoder)
浏览器再次访问服务器,会带着数据过去。
2.Cookie的属性:
name:Cookie的名称。必须有的属性
value:唯一的值。取值,必须有
path:路径。可选的。默认值:写Cookie的那个程序的主机名后的
路径。/day06/servlet
domain:域。可选的。默认值:写Cookie的那个程序的主机名。
http://localhost:8080
age:最大存活时间。可选的。默认是一次会话。
version:版本号。可选的。
comment:可选属性。注释
例子:setPath("/day06/servlet"):访问什么资源时会把Cookie带过来?
http://localhost:8080/day06/servlet/ServletDemo1(带)
http://localhost:8080/day06/ServletDemo2 (不带)
3.Cookie的方法
public Cookie(String name,String value)
setValue与getValue方法
setMaxAge与getMaxAge方法 (秒)
setPath与getPath方法
setDomain与getDomain方法
getName方法
4.向客户端写Cookie:
Cookiecookie = new Cookie();
response.addCookie(Cookie c)
相当于:response.setHeader("Set-Cookie","name=value");
浏览器对于一个网站最多支持20个Cookie。总共不能超过300个。且每个Cookie
的长度不能超过4KB
5.如何获取客户端带来的Cookie:
Request.getCookies()。domain+path+name才能定位。
- day06 乱码+重定向转发+Cookie
- 比较转发与重定向和Cookie
- Servlet乱码处理方式/转发重定向
- servlet请求转发与重定向及乱码问题
- 各种乱码、验证码、重定向和转发应用
- 转发、重定向、jsp指令以及中文乱码问题
- 转发和重定向
- 转发和重定向
- 重定向&转发
- 转发 与 重定向
- 重定向与转发
- 转发和重定向
- 重定向和转发
- request转发、重定向
- 重定向与转发
- 转发和重定向
- 请求转发 重定向
- 转发和重定向
- 一致性 hash 算法( consistent hashing )
- 什么时候应该使用 ==?什么时候应该使用 Equals?
- C++学习推荐书目
- 模拟工业场景:数据库的用户被删除掉了,表空间,数据文件都在的 能否恢复?
- poj1149-------网络流的题目,关键是构图,好题!!!
- day06 乱码+重定向转发+Cookie
- Windows Display Driver Model(WDDM)
- AJAX基础
- C++程序中抛出异常后对象的析构顺序
- 我不开心
- Struts2基础之十三:Struts2拦截器
- **乌托邦式的接口和实现分离技术**
- C++中的前置声明(Forward Declaration)
- POJ-3686-TheWindy's