• JSP-页面跳转大全


    转自:http://blog.sina.com.cn/s/blog_8c38b8b701013zzz.html 

    (1). forward()方法
      使用到javax.servlet.RequestDispatcher类
      RequestDispatcher rd = getServletContext().getRequestDispatcher("url");
      rd.forward(requestVar,requestVar); //传递servlet的入口参数

      即:
      getServletContext().getRequestDispatcher("url").forward(requestVar,responseVar);


      服务器端Servlet进行转向的4种方法:
      1.ServletContext的getRequestDispatcher()  
      2.ServletContext的getNamedDispatcher() 
      3.ServletRequest的getRequestDispatcher() 
      4.ServletResponse的sendredirect()进行转向。
      forward方法,因为这些这样比较高效。只有在forward方法不能使用时,再使用servletresponse的sendredirect()方法。

    (2).response.sendRedirect(url);
      其实是向浏览器发送一个特殊的Header,然后由浏览器来做转向,转到指定的页面,所以用sendRedirect时,浏览器的地址栏上可以看到地址的变化。新页面不能处理旧页面的pagecontext(request,response,...)对象.
      在response.sendRedirect之后,应该紧跟一句return;


    (3).HTML语言的自动跳转
      <html>
       <head>
        <meta http-equiv="refresh" content="0;url="http://www.baidu.com">
        0是等待时间,如果设置为5表示等待5s后开始跳转
       </head>
       …………

    (4).JavaScript跳转
      A:

      <script languate="javascript">
       window.location.replace("http://www.baidu.com");
      </script>
      B:也可以直接给window.location属性赋值,window.location="url",与A不同的是有历史记录
      C:

      <script languate="javascript">
       document.location.href("http://www.google.com");
      </script>
      对于document,location不是不是对象,document.location=document.url
      D:history对象的forward(),back(),go()方法.go()方法需要一个整形入口参数
      <a href="javascript:history.go(-1)">返回上一步</a>
      等价于<a href="javascript:history.back()">返回上一步</a>
      E:

      document.formName.action="test.jsp";
      document.formName.submit();   //使用JS提交的方式
      第一种:
      <script language="javascript" type="text/javascript">
       window.location.href="login.jsp?backurl="+window.location.href;
      </script>
      第二种:
      <script language="javascript">
       alert("返回");
       window.history.back(-1);
      </script>
      第三种:
      <script language="javascript">
       window.navigate("top.jsp");
      </script>
      第四种:
      <script language="JavaScript">
       self.location='top.htm';
      </script>
      第五种:
      <script language="javascript">
       alert("非法访问!");
       top.location='xx.jsp';
      </script>

    (5).<jsp:forward page="nextpage.jsp"/>
      如:
      <jsp:forward page="/servlet/login" />
      <jsp:forward page="/servlet/login">
       <jsp:param name="username" value="jsmith" />
      </jsp:forward>
      <jsp:forward>标签从一个JSP文件向另一个文件传递一个包含用户请求的request对象.

      <jsp:forward>标签以下的代码,将不能执行.
      可使用了<jsp:param>标签的话向目标文件传送参数和值,目标文件必须是一个动态的文件,能够处理参数.
      如果你使用了非缓冲输出的话,那么使用<jsp:forward>时就要小心。如果在你使用<jsp:forward>之前,jsp文件已经有了数据,那么文件执行就会出错.

      JSP页面跳转方法荟萃
      1. response.sendRedirct("跳转到页面");
      该方法通过修改HTTP协议的HEADER部分,对浏览器下达重定向指令的,使浏览器显示重定向网页的内容. request无法传值过去.
      执行完该页所有代码,然后再跳转到页面. 跳转地址栏改变.
      可以跳转到其他服务器上的页面response.sendRedirct(http://www.sun.com).
      2.response.setHeader(); 该方法和response.sendRedirect一样,通过修改HTTP协议的HEADER部分.
      <% response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY); String
    newLocn="/index.html"; response.setHeader("Location",newLocn); % >
      3.<jsp:forward page="跳转页面"/>
      该方法是利用服务器端先将数据输出到缓冲区的机制,在把缓冲区的内容发送到客户端之前,原来的不发送,改为发送该页面的内容,如果在<jsp:forward>之前有很多输出,前面的输出已使缓冲区满,将自动输出到客户端,那么该语句将不起作用,这一点应该特别注意.
      request可以传值过去. 直接跳转到页面,后面的代码不执行. 跳转后地址栏不变. 无法跳转到其他服务器上的页面. 图片不是绝对路径无法显示.
      4.request.getRequestDispatcher("跳转页面"); request可以传值过去. 执行完该页所有代码,然后再跳转到页面.

      跳转地址栏不变. 不可以跳转到其他服务器上的页面 <% RequestDispatcher rd = request.getRequestDispatcher("to.jsp"); rd.forward(request,response); %>有以下3种方法可以做到输出重定向: RESPONSE.SETREDERECT("URL")该方法通过修改HTTP协议的HEADER部分,对浏览器下达重定向指令的,使浏览器显示重定向网页的内容.
      response.sendRedirect("http://localhost:7001/index.html");
      下面的方法也能改变HTTP HEADER属性,它的原理和 1 是一样的. <%response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY); String newLocn="/index.html"; response.setHeader("Location",newLocn); % >  

      采用<JSP:FORWORD>
      该方法是利用服务器端先将数据输出到缓冲区的机制,在把缓冲区的内容发送到客户端之前,原来的不发送,改为发送该页面的内容,如果在<JSP:FORWORD>之前有很多输出,前面的输出已使缓冲区满,将自动输出到客户端,那么该语句将不起作用,这一点应该特别注意.
      自己现在知道的在一个jsp页面中嵌套另外一个jsp页面,有三种方法:

      1、通过<%@ include file="header.jsp"%>这种方法只能实现静态页面的加载,最常用是在一个项目中实现通用页头header.jsp和footer.jsp的加载。
      2、通过<%@ include page="tt.jsp"%>这种做法可以实现动态页面的加载,但其需要向页面传递参数;

      3、通过<iframe src="jsp的路径">来向页面加载另一个jsp页面,是一个内联框架。用forward传参数的, 要这样写: <%String str="你已经登陆!"; %>
      <jsp:forward page="index.jsp>

       <jsp:param name="name" value= <%=str%>/>
      </jsp:forward>

    ----------- 赠人玫瑰,手有余香     如果本文对您有所帮助,动动手指扫一扫哟   么么哒 -----------


    未经作者 https://www.cnblogs.com/xin1006/ 梦相随1006 同意,不得擅自转载本文,否则后果自负
  • 相关阅读:
    js 中基本数据类型和引用数据类型 ,,,, js中对象和函数的关系
    something
    js 的constructor属性
    js 的prototype 属性和用法,外加__proto__
    js 获取一下url里面的一些内容
    js 终于明白变量提升的概念了
    动态设置小程序的 标题
    Vue axios调用第三方接口跨域解决
    css translate的一些问题 这其实可以用在,不知道div宽高的情况,从而让其上下,左右都居中。
    用css3写一个可以无限旋转的div或者图片
  • 原文地址:https://www.cnblogs.com/xin1006/p/3926894.html
Copyright © 2020-2023  润新知