response和request的区别以及常见问题解决
request是请求,即客服端发来的请求
response是响应,是服务器做出的响应
--------------------------------------------------------------
request 是请求的载体,它附带着,请求的参数,ip,cookie,表单,字符编码,或者上传文件。你可以通过request去获得你所需要的信息。
response是响应的载体,你可以设置,表头,报文,响应文件类型,字符编码,response,自带一个输出流,当你需要将一个页面或者一个文件传到客户端时,你可以通过这个流来进行操作。
--------------------------------------------------------------
在servlet中,当服务器接收到客户端发来的请求(即url字符串,通常指在浏览器的地址栏中输入相应的地址),服务器就会对客户端所发出的请求做出相应的响应,也就是利用response的方式向客户端发出相应的内容和要求。例如:response.setContentType("text/html;charset=utf-8");的作用是使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据,并且设置了内容的编码类型。
--------------------------------------------------------------
//设置请求中的字符串的编码格式设置为UTF-8
request.setCharacterEncoding("UTF-8");
向服务器发送请求的编码方式是utf-8。在get发送方式下,设置此方式后依然有乱码情况出现。
原因:request是对请求报文中的内容进行处理
使用get发送方式提交参数时,使用的方式和post方式有一定的区别。在客户端和服务器之间传递参数时,相当于把一封信从客户端发向服务器,get方式提交是把要发送的内容(即报文)写在了信封上,而post方式提交相当于把要发送的内容写在了信的内容当中(塞在信封里面的),request.setCharacterEncoding("UTF-8");方式相当于把信的内容进行了编码,所以造成的结果就是get方式还是乱码,只对post放是发送的内容有效。
-------------------------------------------------------------
解决方法:
1、get方式不要传递中文;
2、使用URLDecoder解决:String str = URLDecoder.decode(username,"utf-8");
3、使用一种最原始的办法来解决:String str = new String(username.getBytes("iso8859-1"),"utf-8");