Servlet HttpServletResponse对象、HttpServletRequest对象
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对象的更多相关文章
- servlet中的HttpServletRequest对象
HttpServletRequest对象表示客户端浏览器发起的请求,当客户端浏览器通过HTTP协议访问服务器时,Tomcat会将HTTP请求中的所有信息解析并封装在HttpServletRequest ...
- httpServletRequest对象、filter、servlet、servlet容器、catalina、tomcat、以及web容器之间的关系
学习servlet的时候经常感到疑惑 HttpServletRequest是服务器创建的?还是servlet容器创建的? 过滤器是服务器创建的?还是servlet容器创建的? serlet容器和tom ...
- 获得HttpServletResponse及其他对象
下面只列出获得 HttpServletResponse 对象的方法,获得 HttpServletRequest 对象方法类似. 在struts1.x Action类的execute方法中,有四个参数, ...
- Http协议入门、响应与请求行、HttpServletRequest对象的使用、请求参数获取和编码问题
1 课程回顾 web入门 1)web服务软件作用: 把本地资源共享给外部访问 2)tomcat服务器基本操作 : 启动: %tomcat%/bin/startup.bat 关闭: %tomcat%/ ...
- HttpServletRequest对象请求转发和HttpServletResponse对象请求重定向之间的区别
HttpServletRequest对象request代表浏览器请求对象,HttpServletResponse对象代表服务器响应对象,当用浏览器访问web服务器,发出请求时,Servlet调用ser ...
- [原创]java WEB学习笔记47:Servlet 监听器简介, ServletContext(Application 对象), HttpSession (Session 对象), HttpServletRequest (request 对象) 监听器,利用listener理解 三个对象的生命周期
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- 重温Servlet学习笔记--servletContext对象
一个项目中只有一个ServletContext对象,我们可以在多个servlet中获取这个唯一的对象,使用它可以给多个servlet传递数据,我们通常成servletContext为上下文对象.这个对 ...
- java web学习总结(十) -------------------HttpServletRequest对象
一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象 ...
- JavaWeb---总结(十)HttpServletRequest对象(一)
一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象 ...
随机推荐
- .Net反射-TypeDescriptor
.Net中提供了两种方式访问类型的元数据:System.Reflection命名空间中提供的反射API和TypeDescriptor类.反射适用于所有类型的常规机制,它为类型返回的信息是不可扩展的,因 ...
- vue-cli3.0启动项目,在局域网内其他电脑通过自己ip访问
最近一直在使用vue-cli3.0做项目, package.json中配置后,自启动项目,也就没留意过小黑窗, "scripts": { "serve": &q ...
- ESA2GJK1DH1K升级篇: IAP详解
前言: 源码下载链接: https://gitee.com/yang456/STM32_IAP_Learn.git 后期所有出售的升级程序皆在此代码之上进行优化和开发 请必须把此文章各个的地方的说明看 ...
- Splay的基本操作(插入/删除,查询)
Splay的基本操作(插入/删除,查询) 概述 这是一棵二叉查找树 让频繁访问的节点尽量靠近根 将查询,插入等操作的点"旋转"至根 树的高度均摊为$log_n$ 变量 int ro ...
- BST | 1064 完全二叉搜索树
OJ:https://www.patest.cn/contests/pat-a-practise/1064 (一)23分(3个case未过)代码 建树的规律是我瞎猜的.首先用样例数据分析. 对数据排序 ...
- 【数论】[圆点坐标]P2508圆上的整点
题目描述 求一个给定的圆\(x ^2 +y ^2 = r ^2\),在圆周上有多少个点的坐标是整数 Solution 圆上的点坐标通解:\(x = d\frac{v^2-u^2}{2},y = duv ...
- 【border相关】【P3426】 [POI2005]SZA-Template
[border相关][P3426] [POI2005]SZA-Template Description 给定一个字符串 \(S\),要求一个最短的字符串 \(T\),使得 \(S\) 可以由 \(T\ ...
- K8s容器资源限制
在K8s中定义Pod中运行容器有两个维度的限制: 1. 资源需求:即运行Pod的节点必须满足运行Pod的最基本需求才能运行Pod. 如: Pod运行至少需要2G内存,1核CPU 2. 资源限额: ...
- React创建组件的方法,组件的props属性、state属性的用法和特点,父子组件传值,兄弟组件传值
创建组件的方法,组件的props属性.state属性的用法和特点,父子组件传值,兄弟组件传值 1.react组件 1.1.创建组件的方法 1.1.1.函数组件 定义一个组件最简单的方式是使用JavaS ...
- 剑指offer:机器人的运动范围(回溯法DFS)
题目描述 地上有一个m行和n列的方格.一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子. 例如,当k为18时,机器人能 ...