request、response

Servlet对象的比较
Request和response在每一次访问时都被创建。由容器创建的
Serlvet只会被创建一次,由用户来开发,由容器来创建,单一的实例。
ServletConfig会为每一个Servlet创建一个Config对象,且由Servlet维护。就是声明成了成员变量。
ServletContext对象,是这一个项目就只有一个此对象。
Request功能
1.接收用户的参数
1).getParameter(String)方法
根据名字获取一个参数,返回类型为String
2).getParameterValues (String)方法
根据名字获取一组相关的数据,返回类型为String[]
3).getParameterNames ()方法
获取所有参数的名字,返回类型为Enumeration
4).getParameterMap ()方法
获取所有数据,,返回类型为Map
2.接收用户的所有请求头信息
3.转发、包含
4.做为域对象也可以存放数据
request:封装了http请求信息,说白了就是通过这个对象去获取请求信息,它是ServletRequest的子接口

Response功能
1.设置响应内容
给用户输出html数据
2.设置响应头
请求的时的请求头由tomcat服务器来读取,但响应时的响应头由浏览器来读取,用于影响浏览器的行为。如是否要缓存这次响应的数据、状态码
3.重定向
就是将请求发送回浏览器。然后由浏览器再重新向服务器自动的发送一个请求。

为什么会出现乱码?
因为我们获取请求和响应结果都需要经过Tomcat服务器,而Tomcat服务器的编码为iso-8859-1。
解决响应乱码
第一种方式:可以处理post和get请求

response.setContentType("text/html;charset=utf-8");

第二种方式:只是针对post请求

	String username=request.getParameter("username");//乱码,它现在的格式是iso-8859-1
	byte [] byte1=username.getBytes("iso-8859-1");//把获取的name值(iso-8859-1)转成字节码
	String username1=new String(byte1,"utf-8");
	out.write("姓名为:"+username1);

解决请求乱码
第一种方式:把请求数据转成字节码然后转成utf-8字符串

request.setCharacterEncoding("utf-8");

第二种方式:可以修改Tomcat的server.xml文件,在connector节点添加useBodyEncodingForURI=“true”,而Tomcat8.0及以上已经默认处理,8.0以下版本,需要手动添加该配置,只针对get请求

转发:是将请求在服务器内部交给另一个组件再去执行,同时共享request中的数据
1.请求转发和重定向
本质区别:请求转发只是发了一次请求,重定向发送了两次请求。
1).请求转发:地址栏还是初次请求的地址栏
请求重定向:地址栏不是初次请求的地址栏,地址栏是最后一次响应的地址栏
2).请求转发:在最终servlet中,request对象和中转的request对象是同一个对象
请求重定向:在最终servlet中,request对象和中转的request对象不是同一个对象
3)请求转发:/代表当前web应用的根目录http://localhost:8080/Servlet02 --这就是当前web应用根目录
请求重定向:/代表当前web站点的根目录http://localhost:8080 --这是当前web站点
4)请求转发:只能转到当前web资源
请求重定向:可以重定向到外部资源

重定向:就是将请求发送回浏览器。然后由浏览器再重新向服务器自动的发送一个请求。
执行重定向的状态码:302

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值