`

Servlet和JSP跳转相关

 
阅读更多

先前在做项目的时候,没有太多去注意Servlet和JSP之间的跳转。今天在自己做JavaMail的时候,出现跳转问题。上网查了些资料,解决了。于是想着记下来。

Servlet的跳转有下面两种方式:
(1)redirect方式
String targetUrl = "xxx.jsp?param_1=xxx&param_2=xxxx";
response.sendRedirect(targetUrl);

该方式给用户浏览器发送通知,然后由浏览器再给服务器发送跳转请求,所以比较类似用户自己去点URL的跳转。这种方式如果需要传参给跳转页面,需要使用Session或者使用GET方式将参数显式的写在targetUrl里(如:ooxx.jsp?id=1),无法使用request.setAttribute来传递,而且大部分情况下由于GET方法的局限性,这种跳转方式只能带较为简单的参数。


此方法JSP页面接受参数写法:
String xxx = request.getParameter("xxx");

session.getAttribute("xxx").toString(); //如果用的是session方式传递参数


(2)forward方式(RequestDispather方式)
request.setAttribute("key","value");
RequestDispatcher requestDispatcher = request.getRequestDispatcher("targetUrl");
   requestDispatcher.forward(request, response);

从现象上看就是用户的浏览器内容发生了变化,但是浏览器的地址栏不变还是老地址。这种方式由服务器直接控制request及response的走向及参数,从命令行的参数上就可以看出这一点。这样方便程序员控制参数的传递,几乎可以传递任何类型的参数,只要简单的使用setAttribute()方法即可,也可以通过Session和parameter的形式传递参数。

getRequestDispatcher()方法的参数必须以“/”开始,“/”表示本Web应用程序的根目录。

当执行forward方法时,不能有任何输出到达客户端,否则会抛出异常,也就是说,在forward之前,不要使用out.println()语句向客户端输出。

此方法JSP页面接受参数写法;
String xxx = request.getAttribute("xxx").toString();
或其他如:
String xxx = request.getParameter("xxx"); //用paramter传递

session.getAttribute("xxx").toString(); //如果用的是session方式传递参数


JSP的跳转:
(1)response.sendRedirect();

和servlet的response.sendRedirect()方式一样。此语句前不允许有out.flush(),如果有,会有异常:
java.lang.IllegalStateException: Can't sendRedirect() after data has committed to the client.
at com.caucho.server.connection.AbstractHttpResponse.sendRedirect(AbstractHttpResponse.java:558)
...
跳转后浏览器地址栏变化 。
如果Servlet页面跳转要跳到不同主机下,跳转后,此语句后面的语句会继续执行,如同新开了线程,但是对response的操作已经无意义了;
如果要跳Servlet页面跳转要到相同主机下,此语句后面的语句执行完成后才会跳转;


(2)response.setHeader("Location","");

此语句前不允许有out.flush(),如果有,页面不会跳转。
跳转后浏览器地址栏变化 。
此语句后面的语句执行完成后才会跳转 。

(3)<jsp:forward page="" />

此语句前不允许有out.flush(),如果有,会有异常:
java.lang.IllegalStateException: forward() not allowed after buffer has committed.
at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:134)
at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:101)
at com.caucho.jsp.PageContextImpl.forward(PageContextImpl.java:836)
...
Servlet页面跳转后浏览器地址栏不变,但是只能跳到当前主机下。
此语句后面的语句执行完成后才会跳转。


分享到:
评论

相关推荐

    servlet/jsp跳转

    在实际开发中,理解和掌握Servlet与JSP的跳转机制以及它们如何协同工作,对于构建高效、可维护的Java Web应用至关重要。同时,合理利用Eclipse或MyEclipse这样的IDE能提升开发效率,更好地实现需求。

    jsp与Servlet跳转实例

    ### jsp与Servlet跳转实例:深入理解信息提交与页面跳转 在Web开发中,JSP(Java Server Pages)和Servlet是两个重要的技术组件,它们共同协作来处理客户端请求并生成动态网页内容。本文将详细解析一个具体的案例...

    java-web学习demo--最简单的servlet jsp跳转传值

    本示例"java-web学习demo--最简单的servlet jsp跳转传值"主要展示了如何通过Servlet处理HTTP请求,并将数据传递到JSP页面进行展示。下面将详细讲解这个过程。 1. **Servlet**: Servlet是Java编程语言中实现服务器...

    servlet跳转的几种情况

    Servlet 跳转可以分为 Redirect 跳转和 Forward 跳转两种,JSP 跳转也可以使用这两种方式,但是需要注意 JSP 的特殊性。了解 Servlet 跳转的几种情况,可以帮助开发者更好地控制程序的流程和数据传递。

    jsp与Servlet跳转

    ### jsp与Servlet跳转详解 #### 一、引言 在Java Web开发中,页面间的跳转是一项基本且重要的功能。本篇文章将通过具体的示例来深入探讨JSP与Servlet之间的跳转机制,帮助读者更好地理解其工作原理及应用场景。 #...

    Servlet与JSP核心编程(第2版).pdf

    《Servlet与JSP核心编程(第2版)》是一本深入介绍Java Web开发技术的书籍,主要聚焦于Servlet和JSP这两种核心技术。本书适合Java Web开发初学者及具有一定基础的开发者阅读。 #### 二、Servlet简介 Servlet是一种...

    mysql+servlet+jsp的简易crm实现

    在IT行业中,开发客户关系管理系统(CRM)是一项常见的任务,尤其对于初学者来说,通过MySQL、Servlet和JSP的结合可以构建一个基础的CRM系统,这有助于理解Web应用程序的后端与前端交互。以下是关于这个主题的详细...

    韩顺平servlet和jsp课堂笔记

    【标题】:“韩顺平servlet和jsp课堂笔记”涵盖了Web开发中的两个核心技术——Servlet和JSP(JavaServer Pages)的学习资料。韩顺平是一位知名的IT教育专家,他的课程通常深入浅出,适合初学者入门及进阶者提升。 ...

    Servlet+jsp Java Web开发

    JSP中的`&lt;jsp:include&gt;`、`&lt;jsp:forward&gt;`和EL(Expression Language)表达式等元素可以帮助实现页面间的跳转和数据的传递。 3. **MySQL**:MySQL是一个流行的开源关系型数据库管理系统,用于存储和管理项目中的...

    jsp和servlet中实现页面跳转的方式实例总结.docx

    JSP 和 Servlet 中实现页面跳转的方式实例总结 在 web 开发中,页面跳转是一个非常常见的需求,JSP 和 Servlet 是 Java Web 开发中两个最基本的组件,了解它们如何实现页面跳转是非常必要的。本文将根据 JSP 和 ...

    Servlet JSP深入详解 基于Tomcat的Web开发

    尽管Servlet和JSP都可以用来创建动态网页,但它们有着不同的应用场景和特点。 - **Servlet更适合处理逻辑**:由于Servlet提供了更丰富的API,因此更适合处理复杂的业务逻辑。 - **JSP更适合展示数据**:JSP页面易于...

    servlet与jsp核心编程*(第二版)卷二 源代码集合

    Servlet和JSP是Java Web开发中的重要组成部分,它们在构建动态网页和Web应用程序中起着关键作用。本书《Servlet与JSP核心编程(第二版)卷二》的源代码集合,为读者提供了丰富的实践素材,有助于深入理解这两种技术...

    servlet&Jsp核心编程第二版英文版

    《Servlet&JSP核心编程第二版》是一本深入探讨Java Web开发的重要书籍,主要关注Servlet和JSP(JavaServer Pages)这两个核心技术。Servlet是Java平台上的一个标准接口,用于扩展服务器的功能,处理HTTP请求,而JSP...

    jsp+Servlet实现简单的登陆

    在IT行业中,Web开发是至关重要的领域,而Java平台上的Servlet和JSP(JavaServer Pages)是构建动态网站的常用技术。本示例探讨的是如何使用这两种技术来实现一个简单的登录功能,这是一个基础但关键的功能,对于...

    基于servlet/jsp的学生信息录入查询系统

    Servlet通常会根据请求的类型和参数来决定跳转到哪个JSP页面。例如,当用户提交表单后,Servlet处理完数据后可能会重定向或转发到一个新的JSP页面来显示结果。 5. **参数传递**:在Servlet和JSP之间,数据通常通过...

    jsp和servlet知识点总结

    而Servlet则更擅长处理业务逻辑和控制流程,它通常用于接收请求、处理数据、调用模型和控制页面跳转等。 3. **内置对象的使用**:在Servlet中,开发者需要手动创建HttpServletRequest、HttpServletResponse等对象来...

    通过servlet实现jsp分页技术

    "通过servlet实现jsp分页技术"的主题旨在讲解如何在Java Web环境下,利用Servlet和JSP进行数据的分页显示。下面将详细介绍这个过程,包括基本概念、步骤和关键点。 首先,我们需要理解分页的基本概念。分页是将大量...

    jsp 购物车源码 servlet

    4. 请求转发和重定向:学习在Servlet中如何使用`RequestDispatcher`进行页面间的跳转。 5. 数据验证:检查购物车操作中是否进行了必要的输入验证,如商品ID的有效性、数量的合理性等。 通过研究这个简单的购物车...

    servlet实现的页面跳转

    在"韩顺平"的教程中,你可能会看到如何结合实际的web项目结构,将Servlet与JSP页面配合使用,实现动态内容生成和页面跳转。通常,Servlet负责业务逻辑处理和数据准备,然后通过请求转发或重定向将结果展示在JSP页面...

Global site tag (gtag.js) - Google Analytics