精华内容
下载资源
问答
  • 服务器端重定向

    千次阅读 2019-03-25 20:17:28
    服务器重定向又叫做服务器端转发(跳转),客户端发送一次请求之后,却在服务器端做了多次转发(重定向),但是最终对于客户端来说就是发送一次请求,可以在服务器端使用==req.getRequestDispatcher(“转发路径”)....

    服务器重定向

    服务器重定向又叫做服务器端转发(跳转),客户端发送一次请求之后,却在服务器端做了多次转发(重定向),但是最终对于客户端来说就是发送一次请求,可以在服务器端使用==req.getRequestDispatcher(“转发路径”).forward(req,resp)==实现服务器端转发

    客户端转发

    客户端转发就是每次进行的转发都是客户端的一个新的请求。实现客户端转发的方式有很多,比如页面的超链接转发,表单提交,js中使用window.location.href实现的转发都是客户端转发,但是以上的转发是在客户端直接实现的,也可以在servlet中实现客户端转发,要在servlet实现客户端转发需要使用到response内置对象的一个方法“sendRedirect(“转发的路径”)”

    观察客户端转发

    package com.xie;
    
    import java.io.IOException;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    
    @SuppressWarnings("serial")
    public class EmpServlet extends HttpServlet{
    	@Override
    	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		String pathInfo = req.getPathInfo();
    		if ("/login".equals(pathInfo)) {
    			try {
    				this.login(req, resp);
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    		}
    	}
    	/**
    	 * 负责登录的方法
    	 * @param req
    	 * @param resp
    	 */
    	public void login(HttpServletRequest req, HttpServletResponse resp) throws Exception{
    		String name = req.getParameter("username");
    		String pwd = req.getParameter("pwd");
    		//查询数据库中的用户名和密码和用户输入的进行对比
    		if ("smith".equals(name)&&"1234".equals(pwd)) {
    			//应该跳转到欢迎页面或者首页
    				resp.sendRedirect("/ServletProject/emp.html");
    		}else {
    			//重新返回登录页面再次登录
    			req.getRequestDispatcher("/index.html").forward(req, resp);
    		}
    	}
    	@Override
    	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		this.doGet(req, resp);
    	}
    }
    
    <body>
    	<form action="emp/login" method="POST">
    		<fieldset>
    			<legend>请登录</legend>
    			用户名:<input type="text" name="username">
    			密码:<input type="password" name="pwd">
    			<input type="submit" value="登录">
    		</fieldset>		
    	</form>
    	<a href="emp/logout">注销</a>
    </body>
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    从登陆来到欢迎页面一共发送了两次请求,第一次是我们点击登陆按钮发送的请求(客户端请求),第二次是在servlet中使用==resp.sendRedirect("/ServletProject/index.html")==方式实现客户端转发

    总结

    客户端转发:
    1.浏览器地址栏信息改变,不在是提交表单的路径
    2.客户端转发就是发送了一次新的请求,在整个登录中发送了两次请求

    	第一次:点击登录按钮提交表单的时候的请求
    	第二次:在servlet中使用sendRediect方法实现的跳转
    	跳转到欢迎页面
    

    3.客户端转发之后保存在request内置对象中的属性不存在了(因为是一次新的请求,而request只能表示当次请求)

    服务器端转发:

    • 浏览器的地址栏信息没有发生改变
    • 转发欢迎页面(jsp页面)之后依然可以取得保存在request内置对象中的属性
    • 其实对于客户端来说只发送了一次请求
    展开全文
  • 服务器端重定向和客户端重定向

    千次阅读 2019-03-31 15:46:21
    一、服务器端重定向 forward(dispatch)服务器端重定向 服务器端从一个servlet转向另一个servlet 在一个servlet中可以通过setAttribute往request中传递一些值 在另一个servlet中,可以通过getAttribute从request中...

    一、服务器端重定向

    forward(dispatch)服务器端重定向
    服务器端从一个servlet转向另一个servlet
    在一个servlet中可以通过setAttribute往request中传递一些值
    在另一个servlet中,可以通过getAttribute从request中获取值
    在两个servlet中访问到的request数据是一样的

    <!DOCTYPE html>
    <html>
      <head>
        <title>MyHtml.html</title>
    	
        <meta name="keywords" content="keyword1,keyword2,keyword3">
        <meta name="description" content="this is my page">
        <meta name="content-type" content="text/html; charset=UTF-8">
        
        <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
    
      </head>
      
      <body>
      <!-- 通过表单,使用post方法提交数据 -->
       <form action="AddUser" method="post">
        姓名:<input type="text" name="username"><br>
        密码:<input type="password" name="pass"><br/>
        <input type="submit" value="提交">
        </form>
         </body>
    </html>
    
    //在AddUser这个servlet中重写doPost()
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		request.setCharacterEncoding("UTF-8");
            //从前台获取参数
    		String name=request.getParameter("username");
    		int total=100;
            //设置Attribute
    		request.setAttribute("name", name);
    		request.setAttribute("count", total);
            //服务器端重定向
    		request.getRequestDispatcher("/AddUserSuccess").forward(request, response);;
    	}
    

    二、客户端重定向

    redirect:客户端重定向
    服务器实际上已经向客户端产生了响应
    客户端根据HTTP Head 中包含的redirect地址,向服务器重新发起一个请求(用GET方式)
    后面这个请求与一开始那个请求不是同一个请求,所以,在前一个请求中放进去的数据已经丢失

    response.sendRedirect();

    展开全文
  • 再谈Redirect 客户端重定向 和Dispatch 服务器端重定向
                   
    这是两个常常被放在一起进行比较的概念,今天对这两个概念再重新回顾一下,前者发生在客户端(浏览器),后者发生在服务器端,因此也有人把前者称为客户端重定向,把后者称为服务器端重定向,虽然对于后者这种称谓并不算贴切。本文原文链接:http://blog.csdn.net/bluishglc/article/details/7953614 转载请注明出处!

    Redirect(客户端重定向)

    标准意义上的“重定向”指的是HTTP重定向,它是HTTP协议规定的一种机制。这种机制是这样工作的:当client向server发送一个请求,要求获取一个资源时,在server接收到这个请求后发现请求的这个资源实际存放在另一个位置,于是server在返回的response中写入那个请求资源的正确的URL,并设置reponse的状态码为301(表示这是一个要求浏览器重定向的response),当client接受到这个response后就会根据新的URL重新发起请求。重定向有一个典型的特症,即,当一个请求被重定向以后,最终浏览器上显示的URL往往不再是开始时请求的那个URL了。这就是重定向的由来。



    http重定向的一种典型应用是防止表单重复提交,其原理是:假如当前是一个用户信息编辑页面,表单通过Post提交给saveUser.action, 当该请求提交后,可返回一个重定向的response,地址可以是viewUser.action,即定向到用户详情页面(不能修改和提交)。当然这种防止页面重复提交的方法作用是有限的, 如果用户返回表单页面,重新提交表单,或是用户在服务器端响应到达之前,多次点击提交按钮(可通过JavaScript控制提交按钮点击次数)等等。

    在Servlet里,实现客户端重定向的方法是:response.sendRedirect()

    Dispatch(服务器端重定向)

    Dispatch(Forward)指的是服务器在处理request的过程中将request先后委托多个servlet或jsp接替进行处理的过程。最为常见的是先由一个Servlet处理(比如实现业务逻辑的计算),然后forward给一个JSP进行视图的渲染。在Servlet里,实现dispatch是通过RequestDispatchers来实现的,而这个类有两个方法,一个是forward,另一个是include,相应的在JSP里实现dispatch的标签也有两个:<jsp:forward/>和<jsp:include/>.  不管是forward还是include,我们可以清楚的看到,从一个servlet或jsp向别一个servlet或jsp跳转,request和reponse始终在期间传递,这是服务器端能实现dispatch模式的关键。换句话说,我们可以把request和reponse看作是一种资源,一系列的servlet和jsp都是在基于同一份资源完成它们职责范围之内的计算。



    注:此图原图引自《Head First Servlets and JSP》


               
    展开全文
  • 【转载】关于客户端重定向和服务器端重定向写得很清晰的文章客户端重定向和服务器端重定向 servlet流程的大致介绍

    【转载】关于客户端重定向和服务器端重定向写得很清晰的文章客户端重定向和服务器端重定向

    servlet流程的大致介绍

    展开全文
  •  重定向技术可以分为两类,一类是客户端重定向,一类是服务器端重定向。客户端重定向可以通过设置特定的HTTP头,或者写JavaScript脚本实现。本文主要探讨服务器端重定向技术的实现。 服务器端的重定向相关类
  • java服务器端重定向

    千次阅读 2009-02-18 15:44:00
    重定向技术可以分为两类,一类是客户端重定向,一类是服务器端重定向。客户端重定向可以通过设置特定的HTTP头,或者写JavaScript脚本实现。本文主要探讨服务器端重定向技术的实现。 服务器端的重定向相关类服务器端...
  • 这是两个常常被放在一起进行比较的概念,今天对这两个概念再重新回顾一下,前者发生在客户端(浏览器),后者发生在服务器端,因此也有人把前者称为客户端重定向,把后者称为服务器端重定向,虽然对于后者这种称谓并...
  • 服务器端重定向技术

    2008-09-20 07:17:42
    服务器端重定向技术涉及到javax.servlet.ServletContext、javax.servlet.RequestDispatcher、javax.servlet....服务器端重定向方式服务器端重定向可以有两种方式,一是使用HttpServletResponse的se...
  • 我想通过服务器执行此操作,因此我可以进行适当的301重定向,而不必保留数百个不需要的文件。 有一个Jekyll插件可以执行此操作,但是由于某种原因它无法正常工作。 我还尝试了其他插件,例如 , 和 ,这似乎是最有...
  • ,因此也有人把前者称为客户端重定向,把后者称为服务器端重定向,虽然对于后者这种称谓并不算贴切。本文原文链接:http://blog.csdn.net/bluishglc/article/details/7953614转载请注明出处! Redirect(客户端...
  • self.send_header("Location", "/%d" % path_num) #FIXME:站内path重定向重定向到外部网站 有什么不同?CORS安全检查? self.send_header("Connection", "close") #也许测试重定向不需要? self.send_header...
  • 今天在做springmvc 的一个的登录合法性校验的需求时,重定向后的页面老是内嵌在框架中,这个在我以前的项目中没有遇到个这个问题,于是作为开发经验不是那么丰富的我来讲,最好的方法就是不断的百度了,好在最后问题...
  • 服务器端重定向的两个技巧

    千次阅读 2005-09-06 21:38:00
    重定向(redirection)是Web编程中的一个重要的技术。运用重定向,你可以把控件发送到另一个servlet/JSP页面,或将Web浏览器(用户)重定向到一个新的URL。...重定向可以在服务器端进行,也可以在客户端(浏览器
  • 运用服务器端重定向的这两个技巧来控制用户想访问的servlet/JSP页面或URLs。 by Budi Kurniawan 重定向(redirection)是Web编程中的一个重要的技术。运用重定向,你可以把控件发送到另一个servlet/JSP页面,或将...
  • 浏览器端url地址为http://127.0.0.1:1400/Page/Page1.aspx,发送请求到服务器端,进行服务器端跳转,Server.Transfer("/Page/Page2.aspx"),/表示网站的根目录。当Page2.aspx的html代码发送到浏览器端后,浏览器端...
  • ,所以对于服务器端进行了重定向时,ajax会获取到重定向状态值3xx和重定向url,然后再获取重定向的 页面运行完后 输出到客户端 的html代码 ,并且返回200状态。通过最后的示例+firebug的监控可以看出相当于发送了2次...
  • 此时,将大量用到重定向技术。 通常,在一个设计良好的Web应用中,都会综合使用Servlet和JSP技术。Servlet控制业务流转,JSP则负责业务处理结果的显示。此时,将大量用到重定向技术。 重定向技术可以分
  • 服务器端重定向 HTTP 状态码说明 服务器端可以通过响应头中的状态码让浏览器中的页面进行重定向 res.writeHead(302, { 'Location': '/' }) res.end() 5. 模块化 5.1 模块化介绍 什么是模块化 模块化是指解决一个...
  • 客服端重定向服务器重定向 一、服务器重定向 服务器重定向(内部跳转、服务器跳转),客户端只发送了一次请求(客户端只产生了一次请求),服务器接收到该条请求后,服务器可以这一次请求的目的来在服务内部进行多...
  • 今天我为大家讲一下Servlet/JSP服务器端的重定向的相关知识,我们知道重定向技术可以分为客户端重定向和服务器端重定向,下面主要就是讲述这些相关的内容。 通常,在一个设计良好的Web应用中,都会综合使用...
  • 重定向技术可以分为两类,一类是客户端重定向,一类是服务器端重定向。客户端重定向可以通过设置特定的HTTP头,或者写JavaScript脚本实现。本文主要探讨服务器端重定向技术的实现。 服务器端的重定向相关类服务器端...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,711
精华内容 1,084
关键字:

服务器端重定向