重定向

Nginx Rewrite相关功能

和自甴很熟 提交于 2020-01-10 18:03:09
Nginx服务器利⽤ngx_http_rewrite_module 模块解析和处理rewrite请求,此功能依靠 PCRE(perl compatible regularexpression),因此编译之前要安装PCRE库,rewrite是nginx服务器的重要功能之⼀,⽤于实现URL的重写,URL的重写是⾮常有⽤的功能,⽐如它可以在我们改变⽹站结构之后,不需要客⼾端修改原来的书签,也⽆需其他⽹站修改我们的链接,就可以设置为访问,另外还可以在⼀定程度上提⾼⽹站的安全性。 1 ngx_http_rewrite_module模块指令 官方文档:https://nginx.org/en/docs/http/ngx_http_rewrite_module.html 1.1 if指令 # ⽤于条件匹配判断,并根据条件判断结果选择不同的Nginx配置,可以配置在server或location块中进⾏配置,Nginx的if语法仅能使⽤if做单次判断,不⽀持使⽤if else或者if elif这样的多重判断,⽤法如下: if (条件匹配) { action } # 使⽤正则表达式对变量进⾏匹配,匹配成功时if指令认为条件为true,否则认为false,变量与表达式之间使⽤以下符号链接: = #⽐较变量和字符串是否相等,相等时if指令认为该条件为true,反之为false。 != #

HTTP基本学习笔记

雨燕双飞 提交于 2020-01-10 17:53:10
1.HTTP概述 (1)概念   HTTP,Hyper Text Transfer Protocol,超文本传输协议。HTTP协议是客户端和服务器请求和应答的标准,采用请求/响应模式。客户端向服务器发送一个请求报文,请求报文包含请求方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和相应信息。 (2)特点    ① 基于TCP/IP的高级协议    ② 默认端口号:80    ③ 基于请求/响应模式的,一次请求对应一次响应    ④ 无状态的:每次请求之间相互独立,不能交互数据 (3)历史版本   Version1.0:每一次请求响应都会建立新的连接   Version1.1:请求和响应可以复用连接。每次数据请求完毕后,会延迟断开时间,等待是否还有数据请求,如果有则继续请求,否则断开连接。 2.HTTP请求消息数据格式   HTTP请求报文由请求行(request line)、请求头(header)、空行和请求数据4个部分组成。    2.1 请求行 (1)请求行格式 请求方式 请求URL 请求协议/版本 如:GET /login.html HTTP/1.1 (2)请求方式 HTTP协议的请求方式有7种,分别为GET、POST、HEAD、OPTIONS、DELETE、TRACE、PUT

请求转发和重定向的区别

戏子无情 提交于 2020-01-10 11:12:22
在java中实现页面跳转一般有两种方式,一种是请求转发,一种是重定向,那么这两者有什么区别呢? 一、请求转发 请求转发一般是这样的一个过程:客户端发送请求到服务器端,服务器端经过匹配的servlet,并执行,当这个servlet执行完之后,调用getRequestDispacther()方法,把请求转发给指定的页面,整个流程都是在服务器端完成的,而且是在同一个请求里面完成的,因此servlet和页面共享的是同一个request,在servlet里面放的所有东西,在页面中都能取出来,整个过程是一个请求,一个响应。 如果以现实生活中的例子来举例,那么以拿快递来举例是比较好的。比如,A有快递到了,但是没有时间,那么A让B帮忙取快递,但是B答应了,想去取得时候B也没有时间,就让C取,C取好快递之后,交给A。 二、重定向 重定向一般是这样的过程:客户端发送请求到服务器端,服务器端经过匹配的servlet,并执行,前面这个步骤是和请求转发一样,处理完之后调用了sendRedirect()方法,这个方法是response的方法,所以调用这个方法会向客户端返回这个响应,客户端会再次发送一个请求,去访问指定页面,紧接着客户端受到这个请求后,立刻发出一个新的请求,去请求访问页面。 上面过程中含有两个请求,这两个请求互不干扰,相互独立,在前面request里面setAttribute()的任何东西

转发和重定向的区别与联系

时间秒杀一切 提交于 2020-01-10 09:42:00
作为一名Java Web开发的程序员,在使用Servlet/JSP的时候,我们必须要知道实现页面跳转的两种方式的区别和联系:即转发和重定向的区别。 什么是转发 客户首先发送一个请求到服务器端,服务器端发现匹配的Servlet,并指定它去执行。当这个Servlet执行完之后,它要调用getRequestDispacther()方法,把请求转发给指定的JSP,整个流程都是在服务器端完成的,而且是在同一个请求里面完成的,因此Servlet和JSP共享的是同一个Request,在Servlet里面放的所有东西,在JSP中都能取出来,因此,JSP能把结果getAttribute()出来,getAttribute()出来后执行完把结果返回给客户端。整个过程是一个请求,一个响应。 request.getRequestDispatcher("/yanggb.jsp").forword(request, response); 什么是重定向 客户首先发送一个请求到服务器端,服务器端发现匹配的Servlet,并指定它去执行。当这个Servlet执行完之后,它就会调用sendRedirect()方法,立即向客户端返回这个响应,响应告诉客户端你必须要再发送一个请求,去访问JSP。紧接着客户端收到这个请求后,就会立刻发出一个新的请求,去请求JSP,这里的两个请求互不干扰,相互独立。这就意味着

重定向Console输出到文本框

吃可爱长大的小学妹 提交于 2020-01-10 07:35:15
很多时候,我们需要捕获Console输出,然后在文本框等控件中显示。 例如SnippetCompiler就实现了编译源代码并将结果在下面的ListView显示的功能。 Console.SetOut(TextWriter)设置Console输出重定向,这样我们需要写一个TextWriter的派生类,这个类的构造函数我们传入要定向目标控件的引用,然后在 public override void Write(char value) 中修改引用控件的BeginInvoke方法挂一个Delegate关联控制台输出流到控件。代码如下,足够精简了。 using System; using System.Windows.Forms; namespace Console2TextBox { public class TextBoxWriter : System.IO.TextWriter { TextBox txtBox; delegate void VoidAction(); public TextBoxWriter(TextBox box) { txtBox = box; // transfer the enternal TextBox in } public override void Write( char value) { // base.Write(value); // still

javaweb学习总结(八)——HttpServletResponse对象(二)

落花浮王杯 提交于 2020-01-10 06:57:26
一、HttpServletResponse常见应用——生成验证码 1.1、生成随机图片用作验证码   生成图片主要用到了一个 BufferedImage 类,    生成随机图片范例: 1 package gacl.response.study; 2 3 import java.awt.Color; 4 import java.awt.Font; 5 import java.awt.Graphics2D; 6 import java.awt.image.BufferedImage; 7 import java.io.IOException; 8 import java.util.Random; 9 import javax.imageio.ImageIO; 10 import javax.servlet.ServletException; 11 import javax.servlet.http.HttpServlet; 12 import javax.servlet.http.HttpServletRequest; 13 import javax.servlet.http.HttpServletResponse; 14 15 public class ResponseDemo03 extends HttpServlet { 16 17 public void doGet

redis内置集群通信机制

廉价感情. 提交于 2020-01-10 03:56:17
你能聊聊redis cluster集群模式的原理吗? 1、面试题redis集群模式的工作原理能说一下么?在集群模式下,redis的key是如何寻址的?分布式寻址都有哪些算法?了解一致性hash算法吗? 2、面试官心理分析 在以前,如果前几年的时候,一般来说,redis如果要搞几个节点,每个节点存储一部分的数据,得借助一些中间件来实现,比如说有codis,或者twemproxy,都有。有一些redis中间件,你读写redis中间件,redis中间件负责将你的数据分布式存储在多台机器上的redis实例中。这两年,redis不断在发展,redis也不断的有新的版本,redis cluster,redis集群模式,你可以做到在多台机器上,部署多个redis实例,每个实例存储一部分的数据,同时每个redis实例可以挂redis从实例,自动确保说,如果redis主实例挂了,会自动切换到redis从实例顶上来。现在redis的新版本,大家都是用redis cluster的,也就是redis原生支持的redis集群模式,那么面试官肯定会就redis cluster对你来个几连炮。要是你没用过redis cluster,正常,以前很多人用codis之类的客户端来支持集群,但是起码你得研究一下redis cluster吧。 redis如何在保持读写分离+高可用的架构下,还能横向扩容支持1T+的海量数据

MVC控制器详解

南笙酒味 提交于 2020-01-09 18:53:39
原文地址: http://www.cnblogs.com/SeeYouBug/p/6441934.html#3628606 目录 一、理解控制器 1.1、什么是控制器 1.2、控制器的作用 1.3、创建实现IController接口的控制器 1.4、创建继承于Controller类的控制器 二、控制器对数据的接收 2.1、数据来源 2.2、通过上下文对象获取数据 2.3、使用动作(Action)方法参数 2.3.1、使用Action方法参数 2.3.2、理解参数对象实例化 2.3.3、理解可选参数与必须的参数 2.3.4、指定默认参数值 三、控制器对数据的响应 3.1、理解动作结果(Action Result) 3.2、通过渲染视图(View)返回HTML 3.3、将数据从动作(Action)方法传递给视图(View) 3.3.1、提供视图模型对象 3.3.2、使用ViewBag传递数据 3.3.3、使用ViewData传递数据 3.3.4、使用TempData传递数据 3.4、执行重定向 3.4.1、重定向到文本URL 3.4.2、重定向到路由系统的URL 3.4.3、重定向到动作(Action)方法 3.4.4、使用TempData保留重定向数据 3.5、返回文本数据 3.6、返回XML数据 3.7、返回JSON数据 3.8、返回文件和二进制数据 3.9、返回错误和HTTP

javaweb学习总结(八)——HttpServletResponse对象(二)

核能气质少年 提交于 2020-01-09 18:42:26
只为成功找方法,不为失败找借口! javaweb学习总结(八)——HttpServletResponse对象(二) 一、HttpServletResponse常见应用——生成验证码 1.1、生成随机图片用作验证码   生成图片主要用到了一个 BufferedImage 类,    生成随机图片范例 1 package gacl.response.study; 2 3 import java.awt.Color; 4 import java.awt.Font; 5 import java.awt.Graphics2D; 6 import java.awt.image.BufferedImage; 7 import java.io.IOException; 8 import java.util.Random; 9 import javax.imageio.ImageIO; 10 import javax.servlet.ServletException; 11 import javax.servlet.http.HttpServlet; 12 import javax.servlet.http.HttpServletRequest; 13 import javax.servlet.http.HttpServletResponse; 14 15 public class

请求转发与请求重定向

匆匆过客 提交于 2020-01-09 12:14:21
forward和redirect对比 从地址栏显示来说 forward是服务器请求资源,服务器直接访问目标地址的 URL ,把那个 URL 的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址. redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的 URL . 从数据共享来说 forward:转发页面和转发到的页面可以共享request里面的数据. redirect:不能共享数据. 从运用地方来说 forward:一般用于用户登陆的时候,根据角色转发到相应的模块. redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等. 从效率来说 forward:高. redirect:低. 本质区别 转发过程:客户浏览器发送 http请求 ----》web服务器接受此请求--》调用内部的一个方法在容器内部完成请求处理和转发动作----》将目标资源 发送给客户;在这里,转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的容器内的request。在客 户浏览器路径栏显示的仍然是其 第一次 访问的路径,也就是说客户是感觉不到服务器做了转发的。转发行为是浏览器只做了一次访问请求。 重定向过程:客户浏览器发送 http请求 --