欢迎光临
我们一直在努力

request.getAttribute()和 request.getParameter()有何区别?使用request.getParameter获取数据中文显示为双问号??

request.getAttribute()和 request.getParameter()区别:

a、request.getParameter()获取的类型是String;request.getAttribute()获取的类型是Object。

b、request.getPrameter()获取的是POST/GET传递的参数值和URL中的参数;request.getAttribute()获取的是对象容器中的数据值/对象。

c、request.setAttribute()和request.getAttribute()可以发送、接收对象;request.getParamter()只能接收字符串,官方不开放request.setParamter()(也就是没有这个方法)

d、特别注意:request.getParamter()无法接收通过request.setAttribute()设置的值

解决方法:

request.setAttribute("name", "达维营");//设置request作用域,其接收只能使用request.getAttribute()
request.getRequestDispatcher("hi").forward(request, response);

// 接收:
String name = (String) request.getAttribute("name");//获取作用域

用request.getParameter获取数据中文

若需要使用request.getParamter()接收非直接浏览器POST/GET请求的值,可以通过以下方法:

request.setCharacterEncoding("utf-8");
//request.setCharacterEncoding("GBK");  // 注意:传递汉字时要设置编码格式,如不设置,汉字会显示为??;经测试utf-8与GBK两种编码格式都可以
// 将参数与网址进行拼接
request.getRequestDispatcher("hi?name=达维营").forward(request, response);

// 接收:
String name = request.getParameter("name");

request.getParameter获取数据中文显示为双问号??

(一)通过上面的方法可以解决。

即使用:

request.setCharacterEncoding("UTF-8");将请求体中的字符集转换为UTF-8

(二)网上有人通过以下方法解决(这种方法解决不了上面代码传值)

Tomcat的默认编码格式是ISO-8859-1,解决思路是在传输和接收端都将编码统一设置为UTF-8

String name =new String(request.getParameter("name").getBytes("ISO-8859-1"),"utf-8");
赞(0)
版权归原作者所有,如有侵权请告知。达维营-前端网 » request.getAttribute()和 request.getParameter()有何区别?使用request.getParameter获取数据中文显示为双问号??

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址