forward指令用于将页面响应转发到另外的页面。既可以转发到静态的HTML页面,也可以转发到动态的JSP页面,或者转发到容器中的Servlet。

forward指令格式如下:

<jsp:forward page="{relativeURL|<%=expression%>}">
{jsp:param..../>}
</jsp:forward>

jsp: param用于在转发时增加额外的请求参数。请求参数的值可以通过HttpServletRequest类的getParameter()方法获得。

下面是代码实例:

jsp-forward.jsp

<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>forward's original page</title>
</head>
<body>
<h3> forward's original page </h3>
<jsp:forward page="forward-result.jsp">
<jsp:param name="age" value="29" />
</jsp:forward>
</body>
</html>
 

此jsp页面的作用是将客户端的请求转发到forward-result.jsp页面,转发请求时增加请求参数:参数名称和参数值。

在forward-result.jsp页面中,使用request内置对象来获取增加的请求值。

forward-result.jsp

<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>forward's result page</title>
</head>
<body>
<%=request.getParameter("age")%>
<%=request.getParameter("username")%> </body>
</html>

执行效果如下所示:

从图中可以看出,执行forward指令时,用户请求的地址依然没有发生变化,但页面内容却完全被forward目标页的内容。

另外,在执行forward指令转发请求时,客户端的请求参数不会丢失。来看下面例子,该页没有任何动态内容,只是一个静态的表单页,作用是将请求参数提交到jsp-forward.jsp页。

form.jsp

<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>submit</title>
</head>
<body>
<form id="login" method="post" action="jsp-forward.jsp">
<input type="text" name="username">
<input type="submit" value="login">
</form>
</body>
</html>

修改forward-result.jsp页面,增加输出表单参数的代码,如下:

<%=request.getParameter("username")%>

在表单提交页面中的文本框中输入任意字符串后提交该表单,运行结果如下图所示:

从表面看,forward指令给人一种感觉:它将用户请求“转发”到另一个新页面,但实际上,forward并没有重新向新页面发送请求,他只是完全采用了新页面来对用户生成响应——请求依然是一次请求,所以请求参数,请求属性都不会丢失。

jsp动作元素之forward指令的更多相关文章

  1. JSP6(JSP 指令与JSP 动作元素)

    一.JSP指令用来设置整个JSP页面相关的属性 指令可以有很多个属性,它们以键值对的形式存在,并用逗号隔开. JSP中的三种指令标签: Page指令 Page指令为容器提供当前页面的使用说明.一个JS ...

  2. JSP运行过程 JSP脚本 静态动态包含 jsp指令 jsp内置对象jsp四大作用域 jsp动作元素 EL表达式 JSTL 设计模式 JSP开发模式 EL内置对象

    Day38 JSP JSP的运行过程具体如下: (1)客户端发出请求,请求访问JSP文件. (2)JSP容器先将JSP文件转换成一个Java源文件(Java Servlet源程序),在转换过程中,如果 ...

  3. 复习:JSP基本的语法(JSP凝视 + JSP指令 + JSP脚本元素 + JSP动作元素)

    JSP原理: 1.    对于每个请求.jsp容器都会创建一个新的线程来处理它: 2.    Servlet容器载入jsp后转换成的servlet(.class文件)是常驻内存的,所以对应速度一般比較 ...

  4. JSP动作元素——————理论篇

    JSP动作元素的组成及作用 JSP使用Action来控制Servlet引擎的行为,可重复使用JavaBean组件. 常用Action: jsp:param       在 jsp:include.js ...

  5. JSP动作元素

    JSP动作元素分类 <jsp:include page="content.jsp"></jsp:include> 使用<%@ include%> ...

  6. #1122 JSP动作元素

    JSP动作元素 与JSP指令元素不同的是,JSP动作元素在请求处理阶段起作用.JSP动作元素是用XML语法写成的. 利用JSP动作可以动态地插入文件.重用JavaBean组件.把用户重定向到另外的页面 ...

  7. JSP 动作元素

    JSP动作元素 1.  动作元素分类 用来动态的包含文件.网页跳转及使用JavaBean组件等. 语法:<jsp:XXX />或者<jsp:XXX></jsp:XXX&g ...

  8. Tip:JSP标签也称之为Jsp Action(JSP动作)元素

    JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. ================ &l ...

  9. 【Head First Servlets and JSP】笔记19:JavaBeans与JSP动作元素(<jsp:setProperty.....>、<jsp:getProperty.....>)

    内容来自imooc. 1.什么是JSP动作元素 2.在JSP页面中如何使用Javabeans <jsp:......>表示这是一个JSP动作元素 3.使用JSP动作元素创建JavaBean ...

随机推荐

  1. [转]jquery遍历table的tr获取td的值

    html代码: 1 <tbody id="history_income_list"> 2 <tr> 3 <td align="center& ...

  2. 移动端开发之APP消息推送

    有这样一种场景,当你在手机APP上输入你的信息,会自动跳出一个弹窗,表示某任务已执行.最简单的一个例子就是当你输入手机号,点击获取验证码的时候,就会跳出一个对话框,说“验证码已发送到手机,请注意查收” ...

  3. Java Generics and Collections-2.2

    2.2 Wildcards with extends 前面介绍过List<Integer>不是List<Number>的子类,即前者不能替换后者, java使用? extend ...

  4. NOIP模拟赛20161007

    %hzwer http://hzwer.com/7602.html 题目名称 “与” 小象涂色 行动!行动! 输入文件 and.in elephant.in move.in 输出文件 and.out ...

  5. IntelliJ IDEA设置JVM运行参数

    2015十一月 28 原 IntelliJ IDEA设置JVM运行参数 分类:JavaSE (11566) (1) 打开 IDEA 安装目录,看到有一个 bin 目录,其中有两个 vmoptions ...

  6. PAT 1040. 有几个PAT(25)

    字符串APPAPT中包含了两个单词"PAT",其中第一个PAT是第2位(P),第4位(A),第6位(T):第二个PAT是第3位(P),第4位(A),第6位(T). 现给定字符串,问 ...

  7. PL/SQL 如何查看当前连接信息以及SQL PLUS如何指定IP地址

    1.通过PL/SQL 想连接别的数据库可以通过在服务名前面加上IP和左斜线来实现: 2.有时我们的IP和左斜线不用输也能连别的数据库,是因为在一个文件里配置好了.这个文件在哪里? 在这个路径下的 NE ...

  8. ASP.NET MVC - 创建Internet 应用程序

    为了学习 ASP.NET MVC,我们将构建一个 Internet 应用程序. 第 1 部分:创建应用程序. 我们将构建什么 我们将构建一个支持添加.编辑.删除和列出数据库存储信息的 Internet ...

  9. Type.IsContextful 说明

    首先看MSDN的说明: 中文:获取一个值,通过该值指示 Type 在上下文中是否可以被承载. 英文:Gets a value indicating whether the Type can be ho ...

  10. 【.NET实战教程】北风网基于ASP.NET多层架构下的企业级进销存软件全程培训

    .Net进销存系统详细课程大纲(开发工具采用VS2008+sqlsever2005) [小编提醒:现在学习的话,可以使用vs2012+sql 2008 学习的是思路,教学环境不一定要一模一样]1.项目 ...