笔记--servlet基础复习2

/*
*response对象
	*想要获取客户端的内容,使用request对象,对客户端做出响应使用response对象
	*响应:
		*响应行
			*状态码:void setStatus(int sc) 设置状态码
		*响应头
			*设置头信息
				*void setHeader(name,value);
					*eg:setHeader("aa","bb")
					 aa:bb
				*void setIntHeader(name,value);
				*void setDateHeader(name,value);int value是秒,long value是毫秒
				*void addHeader(name,value);
					*eg:setHeader("aa","cc");
					 aa:bb,cc,即add是追加。
		*响应体
			*ServletOutputStream getOutputStream()  字节输出流
			*PrintWriter getWriter()                字符输出流
			
		*案例:
			*重定向:状态码302  响应头location 
				*登录页面重定向
				// 设置302的状态码
				response.setStatus(302);
				// 设置地址
				response.setHeader("location", "/day10/response/login.html");	
					
				// response对象提供了一个方法,可以完成重定向。
				response.sendRedirect("/day10/response/login.html");

			*页面定时刷新
				*refresh
				 
   
   
			*禁用浏览器缓存
				*应用:网银,页面的数据是发生变化的
				*Cache-Control : no-cache
				*Expires: -1					值是日期类型(setDateHeader())
				*Pragma : no-cache
			*向页面输出中文
				*字节输出流:不一定会产生乱码
					*设置浏览器打开文件时采用的编码
					 response.setHeader("Content-type","text/html;charset=utf-8" );
					*获取字符串byte数组时编码和打开文件时编码一致
				*字符输出流:一定会产生乱码,因为response缓冲区编码,默认ISO-8859-1,这个编码方式不支持中文,所以一定乱码
					*解决:
						*设置response缓冲区编码
						 response.setCharacterEncoding("utf-8");
						*设置浏览器打开文件时的编码
						 response.setHeader("Content-type","text/html;charset=utf-8" );
						*简写,下面这一句等于上面的两句
						 response.setContentType("text/html;charset=utf-8");
						*输出
						 response.getWriter().write("大家好");
			*实现文件的下载
				*超链接,浏览器可以解析直接打开
				*弹出下载窗口
					*前提条件:先准备一个文件
					 通过输入流读取文件
					 通过response读出到浏览器端
					 设置头信息:Content-Disposition  attachment;filename=文件名
						*以附件的形式打开
			*实现验证码
				*在内存中生产一张图片(画布)。
					*BufferedImage(width,height,imageType)
				*获取画笔
					*Graphics getGraphics()
				*随机生产数字或者字母的组合,但是数据是准备好的
					*随机生产四个字符  Math.Random类
				*通过画笔对象数据画到图片上
					*drawString()
				*画干扰线
					*drawLine()
				*需要把内存中的图片输出到客户端	
					*ImafeIO.write()
*request对象
	*ServletRequest
			|
			HttpServletReqsuest
	*获取客户机信息
		****getRemoteAddr     获取IP地址
			*用法:网上的游客用户投票,根据id判断是否投过票
		****getMethod()       获取请求方式
		****getContextPath()  获取虚拟路径(默认是项目名称)
		*getQueryString()(不常用)  
	*获取请求头信息
		*String getHeader(name)
		*long getDateHeader(name)
		*int getIneHeader(name)
		*请求头:
			*referer                当前网页的来源
			*User-Agent             判断是什么浏览器
			*if-modified-since      控制缓存
	*获取请求参数
		*String getParameter(name)
		*String [] getParameterValues(name):复选框,可以选多个值
		*Map getParameterMap():
		*Enumeration getParameterNames():用得少
	*request中文乱码
		*post:
			*response.setCharacterEncoding("utf-8");  设置request缓冲区的编码
				*但是必须在获取前端数据之前做这个操作,不然无效
		*get:
			*修改tomcat/conf/server.xml下面的服务器编码方式(不要轻易修改这个)
				*必须有修改服务器配置文件的权限
			*逆向编解码
				*username=URLEncoder.encode(username,"iso8859-1");
				*username=URLDecoder.decode(username,"utf-8");
			*简写形式,string构造方式
				*username=new String(username.getBytes("iso8859-1"),"utf-8");
	*利用请求域传递对象(request域对象)
		*域对象:ServletContext:
				 request:一次请求的范围
			*getAttribute()
			*setAttribute()
			*removeAttribute()
	*重定向和转发的区别
		*getRequestDispatcher();返回的是一个RequestDispatcher对象
			*RequestDispatcher:
				*forward()
				*include()
		*1)转发:是在请求的资源没有的情况下,服务器内部帮你从其他地方找到资源,给予客户端响应,
		          期间客户端只发了一次请求(304)
		*2)重定向:是在请求的资源没有的情况下,服务器返回客户端一个信息,里面包含客户端需要资源的地址,然后客户端自行发起请求去寻找资源
				    期间客户端需要两次请求(302)
		*区别:
			*重定向两次请求,两次响应
			 转发一次请求,一次响应
			*重定向地址栏发生改变
			 转发地址栏没有发生改变
			*转发可以通过request传递数据
			 重定向不能使用request传递数据
			*重定向可以定向到其他系统
			 转发只能转到自己系统内部
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值