HttpServletResponse对象(response)的常用方法

  • setCharacterEncoding("utf-8")    //设置响应的编码字符集
  • setContentType("text/html;charset=utf-8")    //设置响应内容的类型、编码字符集。比如内容可以设置为 image/jpeg 等类型。有时候setCharacterEncoding()解决不了的乱码,这句代码可以解决。比setCharacterEncoding()更加强大,推荐。
  • setHeader("Content-Type", "text/html;charset=utf-8")     //这样设置也行
  • getWriter()    //获取字符输出流,PrintWriter,不能输出二进制内容。适合输出文本响应,比如html文档。
  • getOutputStream()   //获取字节输出流,ServletOutputStream,既可以输出文本,又可以输出二进制数据。
  • setHeader("refresh","3")    //定时刷新所请求的页面(当前页面)

  • setHeader("refresh","3;url=http://www.baidu.com")   //定时跳转。3s后自动跳转到百度。秒数、url之间分号分隔,缺省url时默认为当前页面,即定时刷新当前页面。

  • sendRedirct("/servlet2")    //重定向。通知浏览器请求指定utl,浏览器会自动向该url发送请求。浏览器总的发送2次HTTP请求。

HttpServletRequest对象(request)的常用方法

  • String getRemoteAddr()   //获取客户端的ip地址
  • String  getLocalAddr()    //获取服务器的IP地址
  • String  getServerName()   //获取服务器的域名地址
  • String  getMethod()    //获取请求方式,比如get、post
  • String  getQueryString()   //获取请求字符串,即地址栏中?后面的全部内容(包括&,不包括?)。此方法只能获取get方式传递的参数,不能用于post。
  • String  getHeader(String name)   //获取请求头中指定字段的值
  • setCharactorEncoding("utf-8");   //设置请求参数的编码字符集

  //获取请求参数(地址栏中?后面的部分、表单数据)

  • String  getParameter(String name)    //获取指定参数的值(表单)。如果没有该参数,返回null;如果有该参数,但该参数没有值,返回空串;如果有多个该参数,则只返回第一个的值
  • String[]  getParameter(String name)   //如果有多个该参数,以字符串数组的形式返回。常用于获取复选框的值。
  • Enumeration  getParameterNames()    //返回一个包含所有参数名的Enumeration对象
  • Map  getParameterMap()   //返回一个包含所有参数名、值的Map对象

//RequestDispatcher     dispatcher意为调度、分配、调度员

  • RequestDispatcher  rd = request.getRequestDispathcer(String path)   //获取RequestDispatcher对象
  • rd.forward(request, response)   //请求转发。当前Servlet不处理请求,由另一个url处理请求、并返回响应。服务器内部行为,客户端总的只发送1次HTTP请求。
  • rd.include(request, response)   //请求包含,将另一个url处理的结果包含进来(替换掉此句代码),与当前Servlet的处理结果一同组成响应返回给客户端。

  //当使用RequestDispatcher进行请求转发、包含时,可以使用attribute传递一些其他数据

  • request.setAttribute(String name, Object value)    //设置、修改
  • Object  request.getAttribute(String name)  //取出
  • Enumeration  getAttributeNames()   //获取一个含有所有name的Enumeration对象,用于遍历attribute
  • request.removeAttribute(String name)   //删除、移出

attribute是在请求中附加一些额外的数据,attribute传递的并不是表单数据(parameter)。

attribute、parameter是2套单独的方法。

防盗链

 //获取referer头部字段的值
String referer = request.getHeader("referer");
//获取请求的网站地址
String sitePart="http://"+request.getServerName(); //不是盗链
if(referer!=null && referer.startsWith(sitePart)){
//转到请求页面
RequestDispatcher requestDispatcher = request.getRequestDispatcher("/download.html");
requestDispatcher.forward(request,response);
}
else{
//......盗链
}

referer头字段指的是HTTP请求的来源。不是客户端的地址。

比如某网站  http://www.example.com/   上有一个页面   http://www.example.com/index.html,这个页面上有一个<a>链接:http://www.example.com/articles/1.html,

某人点击了这个<a>链接,他的浏览器会发起一次HTTP请求,这次请求的referer头字段是http://www.example.com/index.html。被点击的这个<a>链接来自该页面,referer头字段就是来源页面的url。

可以使用referer头字段检测访客的来源(访客是从通过哪个页面|网站来的)。

访客要访问本网站上的资源(观看视频、下载资源等),他的浏览器发起了一个HTTP请求,如果访客点击的是本站页面上提供的资源链接,访客来源本站,通过;

如果访客点击的不是本站页面上提供的链接(点击的是其它网站页面上提供的链接),那就是盗链。

Servlet HttpServletResponse对象、HttpServletRequest对象的更多相关文章

  1. servlet中的HttpServletRequest对象

    HttpServletRequest对象表示客户端浏览器发起的请求,当客户端浏览器通过HTTP协议访问服务器时,Tomcat会将HTTP请求中的所有信息解析并封装在HttpServletRequest ...

  2. httpServletRequest对象、filter、servlet、servlet容器、catalina、tomcat、以及web容器之间的关系

    学习servlet的时候经常感到疑惑 HttpServletRequest是服务器创建的?还是servlet容器创建的? 过滤器是服务器创建的?还是servlet容器创建的? serlet容器和tom ...

  3. 获得HttpServletResponse及其他对象

    下面只列出获得 HttpServletResponse 对象的方法,获得 HttpServletRequest 对象方法类似. 在struts1.x Action类的execute方法中,有四个参数, ...

  4. Http协议入门、响应与请求行、HttpServletRequest对象的使用、请求参数获取和编码问题

    1 课程回顾 web入门 1)web服务软件作用: 把本地资源共享给外部访问 2)tomcat服务器基本操作 : 启动:  %tomcat%/bin/startup.bat 关闭: %tomcat%/ ...

  5. HttpServletRequest对象请求转发和HttpServletResponse对象请求重定向之间的区别

    HttpServletRequest对象request代表浏览器请求对象,HttpServletResponse对象代表服务器响应对象,当用浏览器访问web服务器,发出请求时,Servlet调用ser ...

  6. [原创]java WEB学习笔记47:Servlet 监听器简介, ServletContext(Application 对象), HttpSession (Session 对象), HttpServletRequest (request 对象) 监听器,利用listener理解 三个对象的生命周期

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  7. 重温Servlet学习笔记--servletContext对象

    一个项目中只有一个ServletContext对象,我们可以在多个servlet中获取这个唯一的对象,使用它可以给多个servlet传递数据,我们通常成servletContext为上下文对象.这个对 ...

  8. java web学习总结(十) -------------------HttpServletRequest对象

    一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象 ...

  9. JavaWeb---总结(十)HttpServletRequest对象(一)

    一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象 ...

随机推荐

  1. [codevs1566]染色

    题目描述 Description 给定一棵有n个节点的无根树和m个操作,操作有2类: 1.将节点a到节点b路径上所有点都染成颜色c: 2.询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一 ...

  2. C# 不包含 AsEnumerable 的定义

    引用 System.Data.DataSetExtensions 引用右键 ->添加引用 ->搜索 DataSetExtensions ->添加 注意版本

  3. ESP8266 LUA脚本语言开发: 准备工作-硬件说明

    原理图 实物图 硬件说明 开发板板载说明: 1.主控芯片: ESP8266_12F 1.温湿度传感器DHT11   与连接ESP8266        GPIO4引脚 2.一路继电器         ...

  4. 使用golang写一个redis-cli

    使用golang写一个redis-cli 0. redis通信协议 redis的客户端(redis-cli)和服务端(redis-server)的通信是建立在tcp连接之上, 两者之间数据传输的编码解 ...

  5. cf1179D

    cf1179D 链接 cf 思路 csdn 很玄学,正解是斜率优化dp,但被一个奇妙的贪心过了. 代码 #include <bits/stdc++.h> #define ll long l ...

  6. 洛谷 P2615 神奇的幻方

    传送门 I'm here! 思路 这个题,我们可以直接去模拟,因为范围很小,且\(N\)都是奇数 直接构造一个矩阵,初始值都为\(0\),然后\(while\)循环,根据题目给出的\(4\)个条件进行 ...

  7. 分布式事务解决方案(二)消息系统避免分布式事务 & MQ事务消息 & Sagas 事务模型

    参考文档: 如何用消息系统避免分布式事务:http://blog.jobbole.com/89140/ https://www.cnblogs.com/savorboard/p/distributed ...

  8. 【IntelliJ IDEA学习之二】IntelliJ IDEA常用配置

    版本:IntelliJIDEA2018.1.4 一.常用配置两张概览图(1)工作区总览介绍图 (2)setting配置图 --------------------------------------- ...

  9. dial tcp 10.96.0.1:443: getsockopt: no route to host --- kubernetes(k8s)DNS 服务反复重启

    kubernetes(k8s)DNS 服务反复重启解决: k8s.io/dns/pkg/dns/dns.go:150: Failed to list *v1.Service: Get https:// ...

  10. 【视频开发】IR-CUT作用

    自然界存在着各种波长的光线,通过折射人眼能看到不同颜色的光线,这就是光线的波长不同所导致的.其实还有许多光线是人眼看不到的,人眼识别光线的波长范围在320nm-760nm之间,超过760nm的光线人眼 ...