前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Servlet学习笔记4(request请求对象、response响应对象1)

Servlet学习笔记4(request请求对象、response响应对象1)

作者头像
别团等shy哥发育
发布2023-02-25 17:09:11
4940
发布2023-02-25 17:09:11
举报
文章被收录于专栏:全栈开发那些事

第四章、request请求对象、response响应对象

1.请求和响应的概述 [1].什么是请求:在浏览器地址栏输入地址,点击回车请求服务器,这个过程就是一 个请求过程。 [2].什么是响应:服务器根据浏览器发送的请求,返回数据到浏览器在网页上进行显示, 这个过程称之为响应。

2.HttpServletResponse对象 HttpServletResponse是一个接口,它的父接口是ServletResponse,在开发中通常使 用HttpServletResponse. 响应信息分为三部分:相应行、响应头、响应正文(响应体) [1]发送状态码的相关方法: <1>设置状态码 void setStatus(int sc):参数就是状态码。 setStatus(int sc,String sm):(参数1:状态码,参数2:对状态码的描述) 常见的状态码:200 响应成功 302 重定向 404 请求资源找不到 500 服务器端代码出异常 <2>错误信息方法

代码语言:javascript
复制
   sendError(int sc):参数状态码
   setdError(int sc,String sm):(参数1:状态码,参数2:对状态码的描述)

比如:

response.sendError(404, “chapter04项目内的请求资源不存在”);

[2]发送响应消息头的相关方法 响应消息头的数据格式:key-value的形式,有的是一个key,一个value 有的是一个key,多个value <1>设置响应消息头 一个key,一个value setHeader(String key,String value); 比如:setHeader(“aa”,“AA”); 比如:setHeader(“aa”,“AA”); 比如:setHeader(“aa”,“BB”); 最终的结果:aa这个头对应的值就是BB 一个key,对应多个value addHeader(String key,String value) 比如:addHeader(“aa”,“AA”); addHeader(“aa”,“BB”); 最终的结果:aa这个头对应的值是AA和BB 比如:

代码语言:javascript
复制
   //[2]与响应消息头相关的方法
	//在用户名和密码输入错误的情况下,重新回到登陆页让用户重新输入数据
	//1.设置状态码
	response.setStatus(302);
	//2.设置响应头,完成重定向到登陆界面的操作
	response.setHeader("location","/chapter04/login.html");

<2>设置响应数据的长度:setContentLength(int src)方法 <3>设置处理乱码的方法: setCharacterEncoding(String a);//参数就是一个码表格式,比如"utf-8" setContentType(String a);//参数代表响应数据的类型和码表格式 比如:"text/html;charset=utf-8"

[3]发送响应体相关的方法: 第一个方法:getOutputStream(),通过response向浏览器返回图片、视频等二进制 数据的文件,当然也可以像浏览器返回文本数据。 第二个方法:getWriter(),通常response向浏览器返回文本数据,不能向浏览器 返回图片、视频等二进制文件。 比如:

代码语言:javascript
复制
	  //响应体相关的方法


 //字符流向浏览器输出数据
		PrintWriter pw=response.getWriter();
		String value="itcast---";
		//pw.print(value);
		pw.write(value);

//字节流对象向浏览器返回数据
		ServletOutputStream out=response.getOutputStream();
		String value="itcast";
		out.write(value.getBytes());//等价于out.write()

[4]解决中文输出的乱码问题 第一种方式:字节流向浏览器输出中文,会不会乱码:可能会出现乱码 出现乱码的原因:服务器端的编码格式和浏览器的编码 格式不一致引起的。 比如:

代码语言:javascript
复制
 //[1]处理字节流的中文乱码问题
		  String data="中国";
		  ServletOutputStream out=response.getOutputStream();
	          //[2]处理乱码:让服务器端的编码和浏览器端保持一致
	          //[3]让浏览器端的编码也是utf-8
	 	  response.setHeader("Content-Type","text/html;charset=utf-8");
		  //让服务器端的编码格式为utf-8
		  out.write(data.getBytes("utf-8")); 

处理字节流中文乱码问题的两种方式: (1)第一种:response.setHeader(“Content-Type”,“text/html;charset=utf-8”); (2)第二种:response.setContentType(“text/html;charset=utf-8”);//上一行的简写方式 第二种方式:字符流向浏览器输出中文,会不会乱码:肯定乱码 乱码的形式:?? ,这个问号就表示中文的编码格式是采用iso-8859-1编码的 这种编码格式不支持中文。 处理原则:让浏览器和服务器端的编码保持一致 比如:

代码语言:javascript
复制
//[1]处理字符流的中文乱码问题
		        //[2]处理服务器端的编码,让这个编码支持中文
		        response.setCharacterEncoding("utf-8");
		        //[3]处理浏览器端的编码
		        response.setHeader("Content-Type","text/html;charset=utf-8");
		        String data="中国";
		        //[4]获取字符流
		        PrintWriter pw=response.getWriter();
		         pw.print(data);

处理字符流的中文乱码问题: (1)第一种方式: response.setCharacterEncoding(“utf-8”); //[3]处理浏览器端的编码 response.setHeader(“Content-Type”,“text/html;charset=utf-8”); (2)第二种方式: response.setContentType(“text/html;charset=utf-8”); 结论:在处理字符流和字节流输出中文乱码时,都采用response.setContentType(“text/html;charset=utf-8”);

常见的编码格式: (1)GBK GB18030 GB2312 都是支持中文的编码格式,当然支持其他一些字符。 (2)UTF-8:支持所有的字符(万能码表格式) (3)ISO-8859-1:不支持中文。

还没学完,稍后发布后面的

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-03-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第四章、request请求对象、response响应对象
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档