JSP学习笔记--跳转方法小结

服务端跳转:
1. RequestDispatcher.forward() 

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        RequestDispatcher dispatcher =request.getRequestDispatcher("../LoginSuccess.jsp");
        dispatcher.forward(request,response);
}

将当前的request和response重定向到该 RequestDispacher指定的资源。重定向后,地址栏URL地址不变

2.<jsp:forward page="" />

<jsp:forward page="add.jsp">
      <jsp:param name = "start" value="0"/>
      <jsp:param name = "end" value="100"/>
</jsp:forward>

向add.jsp传递参数,注意URL地址不变

客户端跳转:

1. response.sendRedirect()
  在用户的浏览器端工作,sendRedirect()可以带参数传递,比如servlet?name=frank传至下个页面,同时它可以重定向至不同的主机上,sendRedirect()可以重定向有frame.的jsp文件。重定向后地址栏URL会改变。
例:在servlet中重定向  

public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
    response.setContentType("text/html; charset=gb2312");
    response.sendRedirect("/index.jsp");
}

由于response是jsp页面的隐含对象,故在jsp页面中可用response.sendRedirect()直接实现重定位。

<% response.sendRediret("/index.jsp")%>

注意: 

  (1) 使用response.sendRedirect时,前面不能有HTML输出;
  这并不是绝对的,不能有HTML输出其实是指不能有HTML被送到了浏览器。事实上现在的server都有cache机制,一般在8K(我是说 JSP SERVER),这就意味着,除非你关闭了cache,或者你使用了out.flush()强制刷新,那么在使用sendRedirect之前,有少量的HTML输出也是允许的。
  (2) response.sendRedirect之后,应该紧跟一句return。
  我们已经知道response.sendRedirect是通过浏览器来做转向的,所以只有在页面处理完成后,才会有实际的动作。既然你已经要做转向了,那么后的输出还有什么意义呢?而且有可能会因为后面的输出导致转向失败。

2.通过提交表单实现页面跳转

<form action ="param.jsp">
    姓名:<input type = "text" name ="Username"><br>
    年龄:<input type = "text" name = "age"><br>
    专业:<input type = "text" name = "major"><br>
    <input type ="submit" value="提交">
</form>

可以在param.jsp中通过 request.getParameter("Username")获得属性值

3.利用response.setHeader方法的Location属性进行重定向

<%
    response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
    String newLocn = "add.jsp";
    response.setHeader("Location",newLocn);
%>

另外还有一种方法实现页面自动跳转

页面5秒钟后自动跳转到百度首页

<%
        response.setHeader("Refresh", "5;URL=http://www.baidu.com");
%>

4.href超链接标记

<a href=”new.jsp”>跳转</a>

比较:sendRedirect和 forw的区别
  (1) Dispatcher.forward()是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;
  (2) response.sendRedirect()则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。
  前者更加高效,在前者可以满足需要时,尽量使用RequestDispatcher.forward()方法。
  在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使HttpServletResponse.sendRequest()方法。

参考:http://www.jb51.net/article/21319.htm

时间: 2024-10-10 08:24:58

JSP学习笔记--跳转方法小结的相关文章

springmvc学习笔记(5)-入门程序小结

springmvc学习笔记(5)-入门程序小结 springmvc学习笔记5-入门程序小结 入门程序配置小结 非注解的完整的配置文件 注解的完整配置文件 通过入门程序理解springmvc前端控制器.处理器映射器.处理器适配器.视图解析器用法.并附上入门程序的非注解的完整的配置文件,注解的完整配置文件. 入门程序配置小结 前端控制器配置: 第一种:*.action,访问以.action结尾 由DispatcherServlet进行解析 第二种:/,所以访问的地址都由DispatcherServl

Servlet&JSP学习笔记

Servlet&JSP学习笔记 */--> Servlet&JSP学习笔记 Table of Contents 1 Web容器 2 内置对象 2.1 内置对象分类 2.1.1 out 2.1.2 request 2.1.3 application 2.1.4 response 2.1.5 session 2.1.6 其他 3 JavaBean 3.1 JSP动作元素 3.2 javabean的四个作用於范围 4 JSP状态管理 4.1 Cookie 4.2 include 指令与动作

大龙的学习笔记之“虚方法,抽象方法,重写,抽象类,接口”

虚方法:可以重写,也可以不重写,英文名:virtual 抽象方法:必须重写,必须放在抽象类中,英文名:abstract 重写:可以重写三种方法:virtual,abstract,override,英文名:override 抽象类:可以有抽象方法,也可以有非抽象方法,英文名:abstract 接口:和抽象类相似,但是里面只有未实现的方法,英文名:interface 大龙的学习笔记之"虚方法,抽象方法,重写,抽象类,接口",布布扣,bubuko.com

Servlet&amp;Jsp学习笔记归纳图(一)

转载请注明出处!!!版权必究!! 以下是Servlet&Jsp的学笔记归纳图,详细内容以及相关代码会在后面整理完成 后给出 使用的是思维导图工具:MindManager 6 最新版本是2013,有兴趣的自己百度下载,功能更多,安装有点麻烦 以下提供版本6绿色版免安装版下载: http://pan.baidu.com/s/1jGqlnXc 本节思维导图文件下载:http://pan.baidu.com/s/1eQGbMSU Servlet&Jsp学习笔记归纳图(一),布布扣,bubuko.c

asp.net(c#)网页跳转 方法小结

返回 打印 asp.net(c#)网页跳转七种方法小结_实用技巧_脚本之家 在asp.net下,经常需要页面的跳转,下面是具体的几种方法.跳转页面是大部编辑语言中都会有的,正面我们来分别介绍一下关于.net中response.redirect sever.execute server.transfer 三种页面跳转的方法 ①response.redirect 这个跳转页面的方法跳转的速度不快,因为它要走2个来回(2次 postback),但他可以跳 转到任何页面,没有站点页面限制(即可以由雅虎跳

JavaWeb 后端 &lt;五&gt; 之 JSP 学习笔记

一.JSP简介 1.也是SUN公司推出的开发动态web资源的技术,属于JavaEE技术之一.由于原理上是Servlet, 所以JSP/Servlet在一起. 二.HTML.Servlet和JSP 1.HTML:静态页面,不能包含java代码,只能有HTML有关的标记 2.Servlet:写java代码,做页面的输出,不是很方便(开发效率很低) 3.JSP:HTML+java 三.输出当前的时间 <%@ page language="java" import="java.

Head First Servlets &amp; JSP 学习笔记 第七章 —— 作为JSP

<%@ -- %> 这是指令 <%@ page --import="java.util.Date" %> 这是page指令,import是page指令的一个属性 <% -- %> 这是Scriptlet,里面是纯Java代码,需要分号结尾 <% = -- %> 这是表达式,表达式不用分号结尾:绝对不能把一个返回类型为void的方法用作表达式 JSP经过Web容器的转换,生成了Servlet: JSP中的Scriptlet和表达式的内容都会

重温JSP学习笔记--三大指令九大内置对象

最近在温习javaweb的相关基础知识,鉴于我弄丢了记满了整整一本的笔记,决定以后把笔记和一些学习上的心得以及碰到的一些问题统统都放在网上,今天看了一下jsp的相关基础,以下是笔记: JSP三大指令: page    ------>最复杂的一个指令,属性很多,常用的像import,language,pageEncoding等等 include-------->静态包含,一般在一个网站不同网页上把相同的元素单独写在一个jsp中,其他页面直接用该命令导入,能大大减少重复代码提高访问速度 tagli

JSP 学习笔记

1,JSP九大内置对象    请求对象 request 输出对象 out    响应对象 response     应用程序对象 application     会话对象 session     页面上下文对象 pageContext     页面对象 page     配置对象 config     异常对象 exception2,request对象     String getParameter(String name) 根据表单组件名称获取提交数据     String[] getPara