Servlet学习(三)Servlet请求与cookie

java servlet学习(一)
Servlet学习(二)Request和Response
Servlet学习(三)图解Session
Servlet学习(四)ServletContext 和ServletConfig
JSP学习总结
JavaWeb信息管理系统

Servlet

解决请求乱码问题

  1. 运用String方法进行重新编码
    String str=resqut.getParameter("uname");
    String uname=new String(str.getBytes("iso8859-1"),"utf-8");
    
  2. post请求方式
    request.setCharacterEncoding(“utf-8)
  3. get请求方式
    在Tomcat中的conf文件夹中找到 server.xml文件修改以下部分:
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    在其中添加  useBodyEncodingForURI="true" 。
    然后在servlet中添加	request.setCharacterEncoding(“utf-8)

请求转发

(网页跳转,request数据流转)
特点: 一次请求,地址栏信息不变。

request.getRequestDispatcher("要转到的位置").forward(request, response);

重定向

特点: 两次请求,浏览器地址栏信息改变,有效避免表单的重复提交。

response.sendRedirect(“路径”)
//本地路径为:uri
//网络路径为:定向资源的 URL 信息

Request对象的作用域

(如何将一个servlet中的数据传到另一个servlet中。)
作用: 解决了一次请求内的不同 Servlet 的数据(请求数据+其他数据)共享问题。

request.setAttribute(object name,Object value);
request.getAttribute(Object obj);

注意: 使用 Request 对象进行数据流转,数据只在一次请求内有效。

Cookie技术

Cookie 技术其实是浏览器端的数据存储技术,解决了不同请求需要使用相同的请求数据的问题。我们把请求需要共享的请求数据,存储在浏览器端,避免用户进行重复的书写请求数据。但是哪些数据需要使用 Cookie 技术存储起来是一个主观问题,需要在后台进行响应的时候来告诉浏览器,有些数据其他请求还会使用,需要存储起来。Cookie是用来绕开HTTP的无状态性的“额外手段”之一。服务器可以设置或读取Cookies中包含信息,借此维护用户跟服务器会话中的状态。

特点

  1. 浏览器端的数据存储技术
  2. 适合少量数据
  3. 键值对存储
  4. 不安全

分类

Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie。

内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的。硬盘Cookie保存在硬盘裡,有一个过期时间,除非用户手工清理或到了过期时间,硬盘Cookie不会被删除,其存在时间是长期的。所以,按存在时间,可分为非持久Cookie和持久Cookie。

添加Cookie

			//初始化cookie对象,设置键值对,键名:uid;值:user.getUid()
			Cookie c=new Cookie("uid", user.getUid()+"");
			//设置cookie的持续时间
			c.setMaxAge(3*24*3600);
			//设置特定目录下共享cookie(/logincase/cookieverify下使用该cookie)
			c.setPath("/logincase/cookieverify");
			//添加cookie实例。
			response.addCookie(c);

获得Cookie

//获得Cookie对象,存储在数组中
Cookie[] cks=request.getCookies();

//遍历
for(Cookie c:cks) {
	String name=c.getName();	//得到一个cookie的键名
		if(name.equals("uid")) {	
			id=c.getValue();	//得到键名为uid的cookie的值
		}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值