HttpServletRequest与HttpServletResponse

HttpServletResquest

HttpServletResquest包含了客户端传到服务器端的一切数据。

  1. 获取对象客户端请求头信息
	Enumeration<String> headersNames = request.getHeadernames();
	while(headersNames.hasMoreElements()){
		String name =  (String)headersNames.nextElements();
		String value =request.getHeader(name);
		System.out.println(name+"="+value);
	}
  1. 获取客户端提交过来的数据
	String name = request.getParameter("name");
	String address = request.getParameter("address");
	System.out.println("name="+name);
	System.out.println("address="+address);
	----------------------------------------------------------------------------
	//name=zhangsan&name-lisi&name=wangwu一个key可以对应多个值
	Map<StringString[]> map = request.getParameterMap();
	Set<String> keyset = map.keySet();
	Iterator<string> iterator = keyset.iterator();
	while(iterator.hasNext()){
		String key = (String)iterator.next();
		System.out.println(“key=+key+---的值总数有;+map.get(key).length);
				String value = map.get(key)[0];
				String value1 = map.get(key)[1];
				String value2 = map.get(key)[2];
		System.out.println(key+====+value+=+value1+=+value2);
	}
  1. 获取中文数据
    客户端提交数据给服务器端,如果数据中有中文,有可能出现乱码情况,那么可以参考以下方法解决。
    1.如果是Get方式
	String username = request.getParameter("username");
	String password = request.getParameter("password");
	/**
	Get请求过来的数据,在url地址栏上就已经经过编码了,所以取到的就是乱码。Tomcat收到了这批数据,getParameter默认使用ISO-8859-1去解码。
   */
   //先让文字回到ISO-8859-1对应的字节数组,然后再按照utf-8拼成字符串。
   username = new String(username.getBytes("ISO-8859-1"), "utf-8");
   System.out.println("username="+username+"password="+password);

当然也可以直接在tomcat里面做配置,以后get请求过来的数据永远都是utf-8编码。conf/server.xml加上URLEncoding=“utf-8”。

<Connector connectionTimeout=”2000” port=”8080” protocol=”HTTP/1.1” redirectPort=”8443” URIEncoding=”utf-8”/>

2.如果是Post方式
这个说的是设置请求体里面的文字编码。Get方式,用这行没有用。

	request.setCharacterEncoding("UTF-8");//这一行一定要卸载request.getParameter()之前

HttpServletRespone

HttpServletRespone负责返回数据给客户端。
1.输出数据到页面上

	response.getWriter().write("<h2>hello response...</h2>");
	或response.getOutputStream().write("hello response222......".getBytes());
	或response.setContentType(type);

2.响应的数据中有中文,那么有可能出现中文乱码
(1)以字符流输出

	response.setCharacterEncoding("utf-8");//指定输出到客户端的时候,这些文字使用utf-8编码
	response.setHeader("Content-Type", "text/html;charset=utf-8");//直接规定浏览器看这份数据的时候使用什么编码来看
	response.getWriter().write(“你好!”);//默认使用ISO-8859-1,我们可以指定写出去的时候使用什么编码写

(2)以字节流输出
如果想让从服务器出去的中文在客户端能够正常显示。只要确保这一点,即出去的时候用的编码和客户端看这份数据用的编码是一样的。

	response.setHeader("Content-Type", "text/html;charset=utf-8");
	或response.getOutputStream().write("你好!".getBytes());//默认情况下,getOutputStream输出使用的是utf-8编码,当然也可以直接指定utf-8编码

但总的来书,不管是字节流还是字符流都可以使用。response.setContentType("text/html;charset=utf-8");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值