JSP动作指令(forward、include、plugin、param)

目录

JSP动作指令为请求处理阶段提供信息,是运行时的脚本动作,以标签的形式使用 

JSP动作标签分类

①基本元素(JSP1.2开始就有的)

<jsp:forward> <jsp:include> <jsp:param> <jsp:plugin> <jsp:params> <jsp:fallback>

②与存取JavaBean有关的

<jsp:useBean> <jsp:setProperty> <jsp:getProperty>

③JSP2.0新增元素,主要与JSP Document有关

<jsp:root> <jsp:declaration> <jsp:scriptlet> <jsp:expression> <jsp:text> <jsp:output>

④JSP2.0新增元素,主要是用来动态生成XML元素标签的值

<jsp:atttibute> <jsp:body> <jsp:element>

⑤JSP2.0新增元素,主要是用在Tag File中

<jsp:invoke> <jsp:dobody> 

1.Forward动作指令

Forward动作指令的作用是实现服务器端的页面跳转,即从当前页面转发到另一个页面

<jsp:forward page="relativeURL" />

服务端跳转:页面在跳转的过程中,实际上还是同一个请求,因此在转发过程中request对象在新的页面中也是有效的。

常用于用户登录验证

forward.jsp 

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div>
	<font color="blue" size="3">forward页面跳转实验</font><br>
	<%
		String username = "admin",pswd="123";
		if("admin"!=username || pswd!="123") { %>
			<jsp:forward page="./forwardfail.jsp" />
	<%} else {%>
	<br><br>
	<font color="red" size="4">恭喜你,登录成功!</font>
	<%}%>
</div>
</body>
</html>

 forwardfail.jsp

<%@ page language="java" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
	<font color="red" size="4">对不起,用户信息有误!</font><br>
	<a href="forward.jsp">重新登陆</a>
</body>
</html>

将密码pswd改成错误的,显示如下

2.include动作指令

语法:<jsp:include> 

将另外一个资源的输出内容插入到当前JSP页面的输出内容之中

动态插入

<jsp:include>动作指令涉及到的2个JSP页面会被翻译成2个servlet,这2个servlet的内容在执行时进行合并

两种指令格式

①<jsp:include page="relativeURL" flush="true" />

②<jsp:include page="relativeURL" flush="true" >
        <jsp:param name="parameterName" value="parameterValue" />
</jsp:include>

flush属性用于指定在插入其他资源时,是否先将当前JSP页面的已输出内容刷新到客户端。需要设置为flush="true"

当<jsp:include>和<jsp:param>结合使用时,可以在加载文件的过程中同时向文件提供信息

如果在引入文件中定义的变量或方法,在主页面也要用,就应该使用include编译指令来静态引入文件,否则,会影响主页面不能正常生成servlet

<%@include...>和<jsp:include...>指令的区别

前者,在编译阶段,将2个jsp文件合成1个Servlet类,引入的是不可变的静态内容,效率高

后者,在请求阶段,将2个jsp文件合成2个Servlet类,引入的是动态内容,效率稍低

3.plugin动作指令

<jsp:plugin>动作指令动态地下载服务器端的JavaBean或者Java Applet程序到客户端的浏览器上执行。

当JSP页面被编译并响应至浏览器执行时,<jsp:plugin>会根据浏览器的版本替换成<object>或<embed>标记。

<!--code属性所指的文件必须存在于codebase属性指定的目录中-->
<jsp:plugin type="applet" code="applet.Smileface.class" codebase="plugin" jreversion="1.6" width="500" height="400">
	<jsp:fallback>
		Plugin supported by browser.
	</jsp:fallback>
</jsp:plugin>

4.param动作指令

<jsp:param>经常和<jsp:include> 、<jsp:forward>以及<jsp:plugin>一起使用,用于页面间的参数传递

①和<jsp:forward>一起

注意

①<jsp:forward></jsp:forward>之间不能有注释

②程序遇到<jsp:forward></jsp:forward>,页面开始跳转,所以之后的代码就不会再执行了,所以把要执行的代码放在<jsp:forward></jsp:forward>之前。

③中文乱码问题,在发生跳转的那个页面中,对request对象的编码格式设定

paramMain.jsp 

<%@ page language="java" contentType="text/html; charset=gb2312" %>
<html>
<head>
</head>
<body>
	<%-- 防止中文乱码 --%>
	<%request.setCharacterEncoding("gb2312");%>
	<jsp:forward page="paramForward.jsp">
		<jsp:param value="张三" name="username" />
		<jsp:param value="51655" name="password" />
	</jsp:forward>
</body>
</html>

paramForward.jsp

<%@ page language="java" contentType="text/html; charset=gb2312" %>
<html>
<head>
</head>
<body>
	用户名:<%=request.getParameter("username")%><br>
	密码:<%=request.getParameter("password") %>
</body>
</html>

②和<jsp:include>一起 

可用来做页面导航部分 

mainpage.jsp 

<%@ page language="java" pageEncoding="utf-8" %>
<html>
<head>
</head>
<body>
    <!--防止中文乱码-->
	<%request.setCharacterEncoding("utf-8");%>
	<jsp:include page="forward.jsp" flush="true">
		<jsp:param name="username" value="张三"/>
		<jsp:param name="cur_place" value="成绩录入--成绩查询"/>
	</jsp:include>
	<hr/>
	<font size="4" color="red">这是mainpage</font>
</body>
</html>

 forward.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
<head></head>
<body>
<div>
	<%
		String username = request.getParameter("username");
		String cur_place = request.getParameter("cur_place");
	%>
	<%=username %>同学,您好!您所在的当前位置:<%=cur_place %>
</div>
</body>
</html>

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

漂流の少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值