关于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的东西。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小目标青年

对你有帮助的话,谢谢你的打赏。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值