request和response对象

request和response对象

回顾:
1.servlet定义
2.servlet的家族
3.手动创建servlet
4.servlet的生命周期和servlet的经过四大阶段.
5.servlet的初始化变量.

1.request:请求对象,一个对应一个请求.
在这里插入图片描述
1.1:getParameter(String name);前提表单以enctype=“application/x-www-form-urlencoded”
方式提交,通过表单name属性名得到value属性值.

1.2:getParameterValues(String name);前提表单以enctype="application/x-www-form-urlencoded"方式提交,通过表单name属性名得到一组value属性值.

1.3:getParameterMap(); 得到请求中所有数据.

1.4:getRequestDispatcher(String path).forward(ServletRequest request, ServletResponse response) 转发实现页面跳转

1.5:setAttribute(String name, Object o);按key-value对方式将值存到请求对象中
1.6:getAttribute(String name);通过Key名得到请求对象中value值

1.7:removeAttribute(String name) ;通过Key名删除Key-value对.

1.8:setCharacterEncoding(String env);设置post请求的编码

1.9:getMethod();得到请求提交的方式(get/post)

1.10:getSession();得到会话对象

1.11:getCookies();得到客户端的所有cookie信息.

1.12:getRealPath(String path);得到当前文件或文件夹相对当前项目的路径.

1.13:getInputStream();得到网络字节输入流

1.14:getReader();得到网络字符输入流

2.response:响应对象,一个请求对应一个响应对象.
在这里插入图片描述
2.1:setCharacterEncoding(String charset);设置响应编码方式

2.2:setContentType(String type);设置响应内容类型

2.3:sendRedirect(String location);重定向,实现页面跳转

2.4:setHeader(String name, String value);设置头部信息

2.5:addCookie(Cookie cookie);将cookie对象通过浏览器存在客户端.

2.6:getWriter();获得网络字符输出流

2.7:getOutputStream();获得网络字节输出流
注意:实现三秒跳转页面://三秒跳转到登录页面
response.setHeader(“refresh”, “3;url=login.html”);

3.超链接和window.location或者location.href来实现页面跳转,默认用get提交.

	<a href="提交的地址?Key1=值1&key2=值2"></a>
	window.location="提交的地址?Key1=值1&key2=值2"

4.乱码处理:
4.1:响应乱码的处理:
4.1.1:第一种解决响应乱码:设置响应编码,设置浏览器的编码也是utf-8
response.setCharacterEncoding(“utf-8”);

4.1.2:第二种解决响应乱码:设置响应的内容类型及浏览器展示信息的编码方式
response.setContentType(“text/html;charset=utf-8”);

4.2:请求乱码的处理:
4.2.1:post请求乱码:
//第一种:设置post提交请求中数据编码
request.setCharacterEncoding(“utf-8”);

4.2.2:get请求乱码:在tomcat的conf文件夹中server.xml中端口号的地方设置编码

4.2.3:get和post请求乱码都可以处理
/第二种解决get和post请求乱码/
//先接收请求的数据
String sname=request.getParameter(“uname”);
//将接收数据重新编码
sname=new String(sname.getBytes(“ISO-8859-1”), “utf-8”);
5.Get请求 VS Post请求
5.1:安全性不同:get提交请求不安全;post提交请求安全

5.2:传参不同:get提交将请求的数据在url后面拼接传参到服务器端;
post提交将请求的数据用请求体(请求正文)传参到服务器端;

5.3:参数的长度限制不同:get提交将请求的数据在url后面拼接传参,而每个url的长度一 般不能超过255字节,所以get提交的参数的长度有限制;
因为post是用请求体传参,所以参数没有长度限制.

5.4:提交效率不同:get提交效率高;post提交效率低;

6.转发 VS 重定向 :相同点都可以实现页面跳转
在这里插入图片描述

6.1:方法不同:转发用的request.getRequestDispatcher(“login.html”).forward(request, response);
重定向用的response.sendRedirect(“login.html”);
6.2:url不同:转发后url是不变;重定向后url要变.
6.3:数据的共享性不同:转发后数据共享的;重定向数据不共享的.
6.4:起作用的地方不同:转发是服务器端起作用(所以不管页面转发了多少次都是一次请 求);重定向是在客户端起作用(客户端发送两次请求);
6.5:作用范围不同:转发只在当前项目中有用;重定向可以在当前项目中,其他项目间都有 用.(重定向可以跳转到百度等其他项目中)
6.6:适用场景不同:如果跳转到下一个页面,如果下一个页面还需要上一个页面的数据,那 么就用转发;如果下个页面不需要上个页面的数据就用重定向.

7.改web项目名:
选中项目名->右键properties->web project setting->在Context text后面 改项目名.

8.request.getParameter()/getParameterValues() VS request.getAttribute(name): 相同点都是获得请求对 象中数据
8.1:request.getParameter()/getParameterValues() 用来获得前端表单或超链接提 交请求中数据.
8.2:request.getAttribute(name)用来获得request.setAttribute(key,value);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值