解解request乱码问题

解解 request乱码问题(提交的是中文信息):

  • 通过post方式提交数据给Servlet

       Servlet服务端部分代码:

       public void doPost(httpServletRequest request, httpServletResponse response)

                         throws ServletException, IOException{

             //在获取用户表单信息之前把request的码表设置成UTF-8,

             //如果没这句的话,如果提交中文信息的时候,会照成乱码。

             request.setCharacterEncoding("UTF-8");             

             String value = request.getParameter("username"); //从request中获取客户端提交过来的信息

             System.out.println(value);

       }

  • 通过get方式提交数据给Servlet (要手动处理)

       Servlet服务端部分代码:

       public void doGet(httpServletRequest request, httpServletResponse response)

                         throws ServletException, IOException{

             //从request中获取客户端提交过来的中文信息,获取到乱码  

             String value = request.getParameter("username"); 

             //拿到乱码反向查找 iso-8859-1 码表,获取原始数据,

             //在构造一个字符串让它去查找UTF-8 码表,已得到正常数据

             value1 = new String (value.getBytes("iso-8859-1"), "UTF-8") ; 

             System.out.println(value);          

                   }

  • 超链接提交表单信息(通过 get 方式提交,需调用到doGet方法)

       <a href="/Servlet/test?username=江西">登录<a/>

 

总结:

   通过get提交表单信息有两种: 

     1.通过form表单的 method 设置 get方法提交(即method="get") 默认也是 get

       通过get方法提交到 Servlet程序中, 首先是得到表单的信息,但是乱码,

       然后还得手动去设置编码方式

       即 value1 = new String (value.getBytes("iso-8859-1"), "UTF-8")

 

     2.通过超链接提交

 

   通过post提交表单:

       在form表单的 method 设置 post方法提交(即method="post") ,

       通过post方法提交到 Servlet程序中,request 要在得到表单信息之前 设置编码方式

       即 request.setCharacterEncoding("UTF-8");


get: 通过get提交表单的信息,地址栏上可以看到,安全性不好

post:通过post提交表单的信息,地址栏上看不到表单的信息,


出现这种机制的原因:

      在于http协议上,通过get提交的信息加在url后面,所以能看到;

      通过post提交的信息是在请求体上的,也就是你敲了两次回车后,发送的信息,所以看不到

      

 

posted on 2011-12-15 22:17  android开发实例  阅读(284)  评论(0编辑  收藏  举报

导航