JSP技术(2)和阶段案例:传智书城

本文介绍了JSP中的jsp:include和jsp:forward动作元素,详细讲解了它们的使用和原理,并通过传智书城的阶段案例展示了如何在实际项目中应用,包括首页设置、文件移植、代码抽取,提高代码复用性。
摘要由CSDN通过智能技术生成

学习目标

1.JSP 动作元素
2.阶段案例:传智书城JSP页面

学习内容

1.JSP 动作元素

SP动作元案用来控制JSP的行为,执行一些常用的JSP页面动作。通过动作元素可以吸 91现使用多行Java代码能够实现的效果,如包含页面文件、实现请求转发等。
1.1 jsp:include 动作元素:动态包含
动态包含:把其它资源页面的内容,合并到当前要包含的页面,最后一块输出。
基本语法格式:

<jsp:include page="被包含页面的url" flush="true或者false"><jsp:include>

动态包含特点:多个页面的内容合并输出,多个jsp页面生成多个java文件,编译成多个class文件
静态包含特点:多个页面的内容合并输出,多个jsp页面最终生成一个java文件,编译一个class文件。
在JSP页面中,为了把其他资源的输出内容插入到当前JSP页面的输出内容中,JSP技术提供了jsp:include动作元素,jsp:include动作元素的具体语法格式如下所示。
<jsp:include page="relativeURI"flush=“true|false”>
在上述语法格式中,page属性用于指定被引入资源的相对路径;flush属性用于指定是否将当前页面的输出内容刷新到客户端,默认情况下,flush属性的值为false。
jsp:include包含的原理是将被包含的页面编译处理后将结果包含在页面中。当浏览器第1次请求一个使用jsp:include包含其他页面的页面时,Web容器首先会编译被包含的页面,然后将编译处理后的返回结果包含在页面中,之后编译包含页面,最后将两个页面组合的结果回应给浏览器。为了使读者更好地理解jsp:include动作元素,接下来,通过一个案例来演示jsp:include动作元素的使用 具体如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
 <metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>Insert titlehere</title>
</head>
<body>
 <%Thread.sleep(5000);%>
included页面的中文yanmin-→这个就是被包含页面。
 </body>
</html> 

<%@page language="java"contentType="text/html;charset=UTF-8"
 pageEncoding="UTF-8"%>
<!DOCTYPEhtml>
=<html>
= <head>
<metahttp-equiv="Content-Type"content="text/html; charset=UTF-8">
<title>dynamicInclude page</title>
 </head>
<body>
 dynamicInclude页面的中文---》包含页面
 <jsp:include page="included.jsp"flush="false"></jsp:include>
</body>
 </html> 

在这里插入图片描述
1.2 jsp:forward动作元素:请求转发。
它的作用实现请求转发,效果等同于RequestDispathcer对象的forward方法。
基本语法格式:

<jsp:forward page="转发页面的url地址"></jsp:forward>

转发页面的url地址:不需要携带项目名称,因为转发动作是服务器内部行为。

首先编写一个用于实现转发功能的jspforward.jsp页面和一个用于显示当前时间的welcome.jsp页面,具体如下:

<%@page language="java"contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type "content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
a1 转发到欢迎页面 page="welcome.jsp"></jsp:forward>
<jsp:forward  page="weklcome.jps"></jsp:forward>
</body>
 </html> 
<%@ page language="java" contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
欢迎yanmin您来访问,当前访问时间
<% out.println(new java.util.Date().toLocaleString());%>
</bodv>
</html> 

启动Tomcat服务器,通过浏览器访问“http://localhost:9999/chapter06/jspforward.jsp”,浏览器显示界面如下图所示:
在这里插入图片描述

2.阶段案例:传智书城JSP页面

【任务目标】
通过所学的JSP知识,使用JSP技术,完成传智书城首页的展示。
【实现步骤】
1.首页设置
在chapter06项目的WebContent目录下创建一个名称为index.jsp的页面文件,该文件使用jsp:forword动作元素跳转到项目客户端展示的首页,其主要代码如下所示。

<body>
<jsp:forward page="client/index.jsp"></jsp:forward>
</body>

2.文件移植
将第1章中传智书城案例中的client文件夹复制到WebContent目录下,并将client文件夹下的所有.html文件改为.jsp文件

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
  1. 修改了JSP页面中的地址和链接
    虽然此时表面上看,index.jsp可以正常访问了,但是当点击页面右上角的“新用户注册”时,会发现浏览器未显示出注册页面,而是报出“404"” 错误,
<a href="${pageContext.request.contextPath}/client/register.jsp">
新用户注册
</a>

4.抽取页面代码
重然已成功将HTML文件改为了JSP文件,并能够成功访问,但是在indexjsp和1regster sog相含了大量的重复代码(如两个页面中的头部、菜单列表以及页面底部代码通常结头部和底部代码是固定的,如果每一个页面都有这些代码,会使项目十分照肿,不利于项目开发和维护。此时,可以将项目中的重复代码抽取出到一个新的JSP页面,然后通过JSP的noude指令来引入这些抽取出的JSP页面。具体如下。
把client目录下面的首页面分离出来几个jsp文件,分离的jsp文件比较通用性,在其它页面也能用到,分离的目的:提高代码的复用性。
1、创建head.jsp文件
在web工程的WebContent目录下创建一个名称为client的文件

在其中创建一个head.jsp文件,用来盛放网页的头部,相关代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<div id="divhead">
	<table cellspacing="0" class="headtable">
		<tr>
			<td>
				<a href="index.jsp">
					<img src="${pageContext.request.contextPath}/client/images/logo.png" width="200" height="60" border="0" /> 
				</a>
			</td>
			<td style="text-align:right">
				<img src="${pageContext.request.contextPath}/client/images/cart.gif" width="26" height="23" style="margin-bottom:-4px" /
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值