重定向

servlet下的request&&response

亡梦爱人 提交于 2020-03-09 17:43:38
request的方法 *获取请求方式: request.getMethod(); * 获取ip地址的方法 request.getRemoteAddr(); * 获得用户清气的路径; * request.getRequestURL().tostring(); --- url * request.getRequestURI() --- uri *获得工程名; * request.getContextPath(); *在接受数据前设置编码 * post请求 * request.setCharcterEncoding("UTF-8"); ---一定要在接收文件前编码才不会乱码 post请求 * get请求 * new String (request.getParameter(name).getByte("ISO-8859-1"),"UTF-8") * request对象存取数据 * setAttribute(name,value); * object getAttribute(name) * request的作用范围; * 一次请求的范围 * 创建和销毁 * 创建: 客户想服务启发送了一次请求以后,服务器就会创建一个request的对象 * 销毁: 当服务器对这次请求作出了响应之后 * 重定向和转发的区别 * 重定向地址栏会变,转发地址栏不变 * 重定向是两次请求两次响应

request_response

微笑、不失礼 提交于 2020-03-09 17:42:19
每次请求service() 方法,都会由容器创建一个新的对象 Request 和response 在每一次访问时都被创建。由容器创建的 Serlvet 只会被创建一次,由用户来开发,由容器来创建,单一的实例。 ServletConfig 会为每一个Servlet 创建一个Config 对象,且由Servlet 维护。就是声明成了成员变量。 ServletContext 对象,是这一个项目就只有一个此对象。 Servlet API 中定义的 ServletRequest 接口类用于封装请求消息。 HttpServletRequest 是专用于HTTP 协议的ServletRequest 子接口,它用于封装 HTTP 请求消息。 在 service() 方法内部调用 HttpServletRequest 对象的各种方法来获取请求消息。 Request 功能: 接收用户的参数、 接收用户的所有请求头信息、 转发、包含、 做为域对象也可以存放数据 1.HttpServletRequest 是ServletRequest 的子接口,它获取http 请求 (1) 获取请求参数: getParameter("name"): 根据请求参数名获取参数值, getParameterValues (String) 方法: 根据请求参数名获取一组值 getParameterNames () 方法 :

当在浏览器输入一个网址后,实际会发生什么?

坚强是说给别人听的谎言 提交于 2020-03-08 19:58:19
这个问题的回答主要是翻译自这篇英文文章 http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/ 。 那么,输入网址后,实际发生了什么呢?过程如下: 1、输入网址。 2、浏览器查找域名的IP地址。 导航的第一步是通过访问的域名找出其IP地址。DNS查找过程如下: 浏览器缓存 – 浏览器会缓存DNS记录一段时间。 有趣的是,操作系统没有告诉浏览器储存DNS记录的时间,这样不同浏览器会储存个自固定的一个时间(2分钟到30分钟不等)。 系统缓存 – 如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用(windows里是gethostbyname)。这样便可获得系统缓存中的记录。 路由器缓存 – 接着,前面的查询请求发向路由器,它一般会有自己的DNS缓存。 ISP DNS 缓存 – 接下来要check的就是ISP缓存DNS的服务器。在这一般都能找到相应的缓存记录。 3. 浏览器给web服务器发送一个HTTP请求 4. 网站服务的永久重定向响应 服务器给浏览器响应一个301永久重定向响应,为什么服务器一定要重定向而不是直接发会用户想看的网页内容呢?其中一个原因跟搜索引擎排名有关。如果一个页面有两个地址,就像 http://www.igoro.com/ 和 http://igoro.com/

OWASP TOP 10

我们两清 提交于 2020-03-08 08:35:07
TOP1-注入 注入往往是应用程序缺少对输入进行安全型检查引起的,攻击者把一些包含指令的数据发送给解释器,解释器收到数据后转换成指令执行,常见的注入包括SQL注入、系统命令注入、IDAP注入,xpath注入等 危害: 注入可以导致数据的丢失,或者敏感数据的泄露,有时注入漏洞可以导致主机完全失陷。 防范: 1、使用安全的API,避免使用解释器 2、对输入的特殊字符进行转义处理 3、利用白名单来规范输入验证 TOP2-失效的身份认证和会话管理 开发者通常会建立自定义的认证和会话管理方案。但与身份认证和回话管理相关的应用程序功能往往得不到正确的实现,要正确实现这些方案却很难,结果在退出、密码管理、超时、密码找回、帐户更新等方面存在漏洞,这就导致了攻击者破坏密码、密钥、会话令牌或攻击其他的漏洞去冒充其他用户的身份 危害: 可能导致部分甚至全部账户遭到攻击,一旦攻击成功,攻击者就能执行合法的任何操作 检测: 用户身份验证凭证没有使用哈希或加密保护 认证凭证可猜测,或者能够通过薄弱的的帐户管理功能(例如账户创建、密码修改、密码恢复, 弱会话ID)重写 会话ID暴露在URL里 (例如URL重写) 会话ID容易受到会话固定(session fixation)的攻击 会话ID没有超时限制,或者用户会话或身份验证令牌特别是单点登录令牌在用户注销时没有失效 成功注册后,会话ID没有轮转 密码

第12 章 显示数据

落爺英雄遲暮 提交于 2020-03-08 07:05:08
12.1 了解输入和输出 12.1.1 标准文件描述符 linux 使用文件描述符,标识每个文件对象 STDOUT 和 STDERR STDERR 时shell 发送 错误消息的 目的地,默认情况下 STDERR 和 STDOUT文件描述符 指向相同的位置,即显示器。重定向 STDOUT 不会自动重定向 STDERR 12.1.2 重定向错误 ls -al badfile 2> test4 文件重定向符必须位于 > 前 ls -al test1 test2 test3 2>test5 (文件test1 test2 存在)屏幕会显示1 ,2 信息 ,test3的错误信息 会重定向到test5 2. 重定向错误和数据 如果需要重定向 错误 和 输出, 需要两个 文件重定向符 ls -al test1 test2 test3 2>test5 1>test6 1> 重定向 STDOUT 2> 重定向STDERR 也可以将 STDOUT 和 STDERR 重定向 到一个文件 (&) ls -al test1 test2 test3 &> test5 12.2 在脚本中重定向输出 12.2.1 临时重定向 如果想故意在脚本中生成错误消息,可以将单个输出行重定向到 STDERR ,需要做的只是使用 输出重定向 符号,将 输出 重定向到 STDERR文件描述,还必须在文件描述符前面添加& echo

ajax请求后台,response.sendRedirect失效,无法重定向

╄→гoц情女王★ 提交于 2020-03-07 08:30:06
今天在写项目的时候,想加一个切换用户,需要清除session并且跳转到登录页面,发起一个ajax请求后,执行完发现无法跳转。 原因在于: (从网上摘录) Ajax只是利用脚本访问对应url获取数据而已,不能做除了获取返回数据以外的其它动作了。所以浏览器端是不会发起重定向的。 1)正常的http url请求,只有浏览器和服务器两个参与者。浏览器端发起一个http请求,服务器端处理后发起一个重定向,浏览器端从response中获取到重定向地址,发起另一个http url请求。也就是说,浏览器会按照response中的内容进行响应(如重定向),这是浏览器的功能决定的就得响应。 2)Ajax请求,参与者就有三个即ajax、客户端、服务器,ajax处于客户端和服务器两者之间。过程是客户端发起一个ajax请求,服务器端处理后,如果发起一个重定向,然后ajax会怎么办呢?它只会获取刚才请求返回的数据,其他的任何动作一概不去做,ajax是这么做的(ajax功能就是这么设定的,ajax框架源代码也是这么写的)。 也就是说,引入了ajax之后,ajax就插在浏览器和服务器之间了,服务器给浏览器的response被ajax拦截了,但是ajax本身却什么都不做,也不转达。 解决方法: 1.后台做完清除session后,传一个值给前台判断,在前台进行页面的跳转。 后台: @RequestMapping("

SpringMVC学习(三)------页面的四种跳转方式

天涯浪子 提交于 2020-03-07 06:46:17
转发和重定向 转发是服务器行为,重定向是客户端行为。 转发HTTP请求一次,地址栏不发生变化,请求域数据不会丢失 重定向HTTP请求至少两次,地址栏发生变化显示新的地址,请求域信息丢失。 例如: 转发:小明给班主任打电话询问什么时候开学,但是班主任不知道,将手机转发给了旁边的教导主任让其解答。(小明这边显示的是班主任的电话,但和他数据交流的却是教导主任,之前的信息都没有挂断) 重定向:小明给班主任打电话询问什么时候开学,但是班主任不知道,告诉他教导主任知道,小明挂断电话给教导主任拨去。(挂断之前的请求,再来一个新的请求) 第一种------请求转发页面 创建一个新的项目,添加配置jar包、编写配置文件、在web.xml文件注册springmvc、创建包的结构 在这里插入代码片 新建编写一个SpringmvcAction.java,一个main.jsp 在index.jsp编写第一种页面跳转方式 < % @ page contentType = "text/html;charset=UTF-8" language = "java" % > < html > < head > < title > $Title$ < / title > < / head > < body > < ! -- 第一种跳转方式:请求转发页面 -- > < a href = "${pageContext

基础IO(文件操作)

一曲冷凌霜 提交于 2020-03-07 02:26:59
文章目录 文件操作 系统调用的文件操作 文件描述符 文件流指针与文件描述符的关系 重定向 动态库和静态库 文件操作 FILE * fopen ( const char * path , const char * mode ) ; FILE:返回值是文件流指针类型 path:需要打开文件的路径,可以是绝对路径,也可以是相对路径(相对与当前目录的路径) mode: r: 以读方式打开,如果当前文件不存在,则会报错 r+: 以读写方式打开,如果当前打开文件不存在,则报错 w: 以写方式打开,如果文件不存在,则在当前目录下创建该文件;如果当前文件存在,则将当前文件截断(清空) w+: 以读写方式打开,其他和w形式相同 a: 以追加方式打开(文件流指针指向当前文件的尾部,不能读),如果文件不存在则创建 a+: 以追加方式打开,如果文件不存在则创建,支持可读可写 size_t fread ( void * ptr , size_t size , size_t nmemb , FILE * stream ) ; ptr: 将fread读到的内容保存在ptr下 size: 块的大小 nmemb: 需要读的块的个数 size* nmemb == 总的字节数量 stream: 文件流指针,从哪里读 返回值: 返回成功读取到的块的个数 用法: 将块的大小指定为1(1个字节)