关于request的细节使用,解决中文乱码问题

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 关于request的细节使用,解决中文乱码问题

关于防盗链


Referer


   String ref=request.getHeader("Referer");

   //判断请求头中的referer是否为空或者没东西或者不来自163网站,那么就是盗链行为,直接重定向到原网页


   if(ref==null||"".equals(ref)||!ref.startsWith("http://www.163.com"));

  response.sendRedirect(request.getContextPath()+"index.jsp");


获取客户机的信息


   getRequestURL方法返回客户端发出请求完整URL

   getRequestURI方法返回请求行中的资源名部分

   getQueryString 方法返回请求行中的参数部分

   getRemoteAddr方法返回发出请求的客户机的IP地址

   getMethod得到客户机请求方式

   getContextPath 获得当前web应用虚拟目录名称


遍历jsp页面的所以请求参数


Enumeration<String> enumeration=request.getParameterNames();

while(enumeration.hasMoreElements)

{

String name=enumeration.nextElement();

String values=request.getParameter(name);

System.out.println(name+":"+value);

}


[中文乱码问题]


获取请求参数


//在JSP页面上模拟响应头,设置字符编码为UTF-8

<meta http-equiv="content-type" content="text/html;charset=UTF-8">

乱码问题:


利用request获取的请求参数,是根据打开jsp页面的浏览器用的什么编码读取,那么

就用什么编码传输,模拟响应头的话相当于固定设置浏览器的读取编码格式


但是在服务器上,默认解析编码的是用的ISO8859-1,

这样就会导致解析中文字节出现乱码。


//通过设置服务器的解析编码方式为UTF-8,这样就可以避免乱码了


request.setCharacterEncoding("UTF-8");

(这只是适用在post请求,因为post请求的请求参数在实体内容当中;get请求不在实体内容当中,在URL后面)


对于get请求方式,出现乱码的话,只能手动解决。

假设前端获取的 usename是乱码 ,

username =new String (username.getBytes("iso8859-1"),"utf-8");

先把从服务器上错误解析的乱码username通过iso8859-1的方式重新解析回去;

在利用utf-8的编码格式去重新解析它。这样就可以达到手动解析,解决乱码了。


response.getWriter().write("中文XX");

这种情况输出会有乱码的话,就需要设置

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

但是这种情况务必把①放在write内容前面!!!!!


以下这种使用OutputStreamwrite输出,设置放在前后都可以

response.getOutputStream().write("中文国歌".getBytes("utf-8"));

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


request的请求转发


this.getServletContext().getRequestDispatcher("/RequestTest2").forward(request, response);

request.getRequestDispatcher("/RequestTest2").forward(request, response);


request的请求包含

request.getRequestDispatcher("/RequestTest2").include(request, response);


请求转发的话,当前的servlet的输出信息是只能进入服务器的缓冲区,但是一旦执行转发时,就会清除掉实体内容,请求头信息不会清除,但是这样当前的servlet的信息就输出不了;而使用请求包含的话就可以顺带输出当前servlet的东西。

相关文章
|
IDE 开发工具
学习Request和Response这一篇就够啦~2
学习Request和Response这一篇就够啦~
|
Web App开发 Java 应用服务中间件
学习Request和Response这一篇就够啦~1
学习Request和Response这一篇就够啦~
|
Java 应用服务中间件 API
【Servlet篇】如何解决Request请求中文乱码的问题?
【Servlet篇】如何解决Request请求中文乱码的问题?
491 0
|
前端开发 Java 应用服务中间件
细谈JavaWeb中的Request和Response
request:获取请求数据 浏览器会发送HTTP请求到后台服务器[Tomcat] HTTP的请求中会包含很多请求数据[请求行+请求头+请求体] 后台服务器[Tomcat]会对HTTP请求中的数据进行解析并把解析结果存入到一个对象中 所存入的对象即为request对象,所以我们可以从request对象中获取请求的相关参数 获取到数据后就可以继续后续的业务,比如获取用户名和密码就可以实现登录操作的相关业务
288 0
|
SQL 前端开发 Java
《JavaWeb篇》08.Request&Response看这一篇就够了(三)
《JavaWeb篇》08.Request&Response看这一篇就够了(三)
110 0
《JavaWeb篇》08.Request&Response看这一篇就够了(三)
|
存储 前端开发 Java
《JavaWeb篇》08.Request&Response看这一篇就够了(二)
《JavaWeb篇》08.Request&Response看这一篇就够了(二)
302 0
《JavaWeb篇》08.Request&Response看这一篇就够了(二)
|
前端开发 Java 应用服务中间件
《JavaWeb篇》08.Request&Response看这一篇就够了(一)
《JavaWeb篇》08.Request&Response看这一篇就够了(一)
268 0
《JavaWeb篇》08.Request&Response看这一篇就够了(一)
封装两种习惯使用request
最近在学习Vue3,现在来说一下自己的学习感受,并且分享一些小知识点。 > 可能这些知识点并不是那么属于Vue3的知识范畴,但是这是我在学习过程中遇到并且记录下来的,对于我而言,是Vue3让我遇到了这些知识,哈哈哈哈,我就这么归类辣!
|
JSON 前端开发 Java
SpringMVC:请求乱码问题处理和json乱码解决方案
SpringMVC:请求乱码问题处理和json乱码解决方案
SpringMVC:请求乱码问题处理和json乱码解决方案
JavaWeb - Request 中 Header 数据中文乱码解决方案(仅一句话)
JavaWeb - Request 中 Header 数据中文乱码解决方案(仅一句话)
1182 0