实验四 JSP语法和页面指令
- 格式:doc
- 大小:358.00 KB
- 文档页数:8
JSP动作指令(6个常用的动作指令)一、Include指令<jsp:include>标签表示包含一个静态的或者动态的文件。
语法:<jsp:include page="path" flush="true" />or<jsp:include page="path" flush="true"><jsp:param name="paramName" value="paramValue" /></jsp:include>注:1、page="path" 为相对路径,或者代表相对路径的表达式。
2、flush="true" 必须使用flush为true,它默认值是false。
3、<jsp:param>子句能让你传递一个或多个参数给动态文件,也可在一个页面中使用多个<jsp:param>来传递多个参数给动态文件。
二、Forward指令<jsp:forward>标签表示重定向一个静态html/jsp的文件,或者是一个程序段。
语法:<jsp:forward page="path"} />or<jsp:forward page="path"} ><jsp:param name="paramName" value="paramValue" />……</jsp:forward>注:1、page="path" 为一个表达式,或者一个字符串。
2、<jsp:param> name 指定参数名,value指定参数值。
参数被发送到一个动态文件,参数可以是一个或多个值,而这个文件却必须是动态文件。
成绩:实验报告课程名称:Java Web开发技术教程实验项目:JSP脚本、指令和动作姓名:专业:计算机科学与技术班级:学号:计算机科学与技术学院年月日实验项目名称: JSP脚本、指令和动作一、实验目的学习在jsp中使用脚本、指令和动作。
重点是page指令、include指令的运用。
二、实验内容1、用include动作在jsp页面中包含hello1.txt,用include指令包含hello2.txt。
hello1.txt内容为:你好老师;hello2.txt内容为:你好同学。
2、编写jsp页面分别显示1-10之间数字的阶乘。
3、编写一个页面,判断字符串hello2.jsp:三、实验原理page指令用来定义和操作许多重要的依赖于页面的属性,这些属性影响整个JSP文件。
page指令可以在JSP页面的任何地方、以任何顺序出现,而且一个页面可以包含任意数量的page指令。
为了程序的可读性以及好的编程习惯,最好还是把它放在JSP页面的顶部。
page指令的语法为:<%@ page attribute1 = "value1" attribute2 = "value2" attribute3 =… %>include指令如果需要在一个JSP页面中包括另一个文件,可以使用include指令。
指令的语法形式为:<%@ include file="relativeURL" %>该指令的作用是在JSP页面中该指令出现的位置静态插入一个文件。
include 指令能让页面内容分成几个组成部分分别管理。
四、实验步骤及截图1、用include动作在jsp页面中包含hello1.txt,用include指令包含hello2.txt。
hello1.txt内容为:你好老师;hello2.txt内容为:你好同学。
hello1.jsp:<%@page contentType="text/html;charset=GB2312"%><HTML><BODY><H3><jsp:include page="hello1.txt" /></H3></BODY></HTML>输出结果如图1—1图1—1<%@page contentType="text/html;charset=GB2312"%> <HTML><BODY><H3><%@include file="hello2.txt" %></H3></BODY></HTML>输出结果如图1-2图1-22、编写jsp页面分别显示1-10之间数字的阶乘。
jsp的常⽤指令有哪些(编译指令动作指令整理)Jsp包含三个编译指令和七个动作指令。
三个编译指令为:page、include、taglib。
七个动作指令为:jsp:forward、jsp:param、jsp:include、jsp:plugin、jsp:useBean、jsp:setProperty、jsp:getProperty。
1、 page指令a. 通常位于jsp页⾯的顶端,同⼀个页⾯可以有多个page指令。
语法格式如下:复制代码代码如下:〈% @page[language="Java"][extends="package.class"][import= "package. class I package. *},…"][session="true I false"][buffer="none I 8kb I size kb" 1[autoFlush="true I false"][isThreadSafe="true I false"][info="text"][errorPage="relativeURL"][contentType="mimeType[ ;charset=characterSet]" I"text/html;charset= "808859-1"][isErrorPage=" true I false"]%〉1)language属性,⼀般情况就是java,代表jsp页⾯使⽤的脚本语⾔。
2)Extends属性,确定 JSP 程序编译时所产⽣的 Java 类,需要继承的⽗类,或者需要实现的接⼝的全限定类名。
1.import属性,⽤来导⼊包,下⾯⼏个包是默认⾃动导⼊的,不需要显式导⼊。
JSP的操作指令包括哪些?各自能完成什么作用?
指令:
1、page指令:<%@ page 属性1="..." 属性2="..." ...%>,应用于整个JSP页面,定义JSP页面的一些属性和属性值;
2、include指令:<%@include file="URL" %>,用来指定JSP被编译时,需要插入的文本或者代码;
3、taglib指令:<%@taglib prefix="..." uri="..." %>,在JSP页面中声明并调用标签;
动作标记:
1、<jsp:useBean>,在JSP页面中使用Bean;
2、<jsp:getProperty>,获取Bean的属性;
3、<jsp:setProperty>,修改Bean的属性;
4、<jsp:include>,在JSP运行时将文件加入;
5、<jsp:param>,与jsp:include,jsp:forward,jsp:plugin共同使用,以“名字-值”的形式为这些标签提供附加信息;
6、<jsp:forward>,从该指令处停止页面执行,转向其他页面;
7、<jsp:plugin>,指定Applet或JavaBean组件;。
Jsp⼊门--语法格式(%%)、指令(page、include、taglib)JSP脚本1. <% java代码 %>⽅法内部的代码都可以写在个位置<% String s1 = "hello jsp"; %>2. <%=java代码 %>把java代码运⾏的结果在页⾯显⽰, 要求java代码是⼀个表达式<%=s1 %>3. <%! java代码 %> 使⽤很少对属性的声明,⽅法的声明4、jsp的注释 <%-- ... --%>JSP是特殊的Servlet JSP是⼀种特殊的Servlet,当JSP页⾯⾸次被访问时,容器(Tomcat)会先把JSP编译成Servlet,然后再去执⾏Servlet。
所以JSP其实就是⼀个Servlet!JSP真⾝存放⽬录 JSP⽣成的Servlet存放在${CATALANA}/work⽬录下,我经常开玩笑的说,它是JSP的“真⾝”。
我们打开看看其中的内容,了解⼀下JSP的“真⾝”。
你会发现,在JSP中的静态信息(例如<html>等)在“真⾝”中都是使⽤out.write()完成打印!这些静态信息都是作为字符串输出给了客户端。
JSP的整篇内容都会放到名为_jspService的⽅法中!JSP指令语法:语法格式: <%@ 指令名属性名1=值1 属性名2 = 值2.... %>1. page指令: 对jsp页⾯⼀些设置2. include指令: 包含其他jsp页⾯3. taglib指令: 引⼊标签库 (往后)page指令page指令是最为常⽤的指定,也是属性最多的属性!page指令没有必须属性,都是可选属性。
例如<%@page %>,没有给出任何属性也是可以的!在JSP页⾯中,任何指令都可以重复出现!默认创建的jsp: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>属性:1、 language: jsp⽀持的编程语⾔: 值只能是java2、 pageEncoding: 设置jsp的编码:指定当前JSP页⾯的编码!这个编码是给服务器看的3、 Content-type: contentType属性与response.setContentType()⽅法的作⽤相同! 它会完成两项⼯作,⼀是设置响应字符流的编码,⼆是设置content-type响应头。
JSP基本的语法、3个编译指令、7个动作指令、9个内置对象⽬录⼀、jsp概述JSP是java server page的缩写,其**==本质是⼀个简化的servlet**,是⼀种动态⽹页技术标准。
jsp页⾯是在HTML页⾯中嵌⼊java程序段。
使⽤jsp开发的应⽤程序能够跨平台。
⼆、jsp基本的语法2.1 jsp表达式jsp表达式⽤于向页⾯输出信息。
语法格式例如以下:<%= 表达式 %>如:<%= 5+6 %>注意:<%与=之间不能有空格,=与后⾯的表达式之间能够有空格,另外没有语句结束符号;。
2.2 jsp声明标识声明标识⽤语在jsp页⾯中定义全局的变量或者⽅法,通过声明标识定义的变量和⽅法能够被整个jsp页⾯訪问。
语法格式例如以下:<%!声明变量或者⽅法的代码%>如<%!String str = "test";%>注意:<%与!之间不能有空格,!与其后⾯的代码之间能够有空格。
2.3 jsp代码段代码⽚段就是嵌在jsp页⾯中的java代码或脚本代码。
会在页⾯请求的处理期间被运⾏,java代码能够实现定义变量、流程控制等功能。
脚本代码能够通过使⽤jsp内置对象在jsp页⾯输出内容、处理请求和响应、訪问session等,代码⽚段的语法格式例如以下:<% java代码或者脚本代码 %>2.4 jsp注释2.4.1 HTML注释HTML注释格式:<!-- html凝视 -->html凝视不会显⽰在⽹页中。
在浏览器中查看源代码的时候能够看到注释信息。
2.4.2 代码⽚段注释由于代码⽚段即为java代码或者脚本代码,代码⽚段的注释和java语法⼀样。
单⾏注释写在//之后,多⾏注释写在/* */ 之间,⽂档提⽰注释写在/**与 */之间。
//单⾏注释/*多⾏注释第⼀⾏多⾏注释第⼆⾏*//**⽂档注释*/2.4.3 隐藏注释html注释在查看⽹页源代码的时候能够看到,所以严格来说这样的注释并不安全,jsp提供的隐藏注释在浏览器和查看源代码的时候都看不到。
实验四(1):HTML、JSP页面指令及代码片段实验目的:1、掌握html中常用标记的含义和应用2、掌握JSP基本概念。
3、熟悉JSP页面指令使用。
4、熟悉初步的JSP代码片段应用编程5、进一步掌握ArrayList的应用编程。
实验内容:边学习边动手:一.HTML:超文本标记语言(同时也被翻译成超文本标签语言)。
1.HTML 文件是包含一些标记的文本文件。
这些标记告诉WEB 浏览器如何显示页面。
例:<html><head><title>页面的标题</title></head><body><p>这是我的第一个页面。
<b>这是粗体文本。
</b></p></body></html>2.标记一般成对出现,用于表示一定的含义,如<p>和</p>表示段落,<p>和</p>之间的文本都在这个段落之内,<p>表示段落开始,</p>表示段落结束<b> 和</b> 标记中的文本将以粗体显示。
3.HTMl文件一般以.html为扩展名。
WEB服务器不对HTML文件作解析,直接发送给客户端,由客户端浏览器负责解析。
如IE、Firefox二.JSP(一)概述1.HTML的功能是有限的,使用html可以创建静态内容,无论何时访问使用html技术开发的网站站点,获得的网页内容都是一样的(同样的动画、图片、背景音乐、文字等)。
如果希望网页中的内容能动态发生变化,就需要使用动态网页编程技术,JSP是这类技术中之一。
JSP的全称:JavaServer Pages2.JSP将HTML标记与Java语言结合,具备Java程序设计语言的全部优点。
3.JSP文件一般以.jsp为扩展名,由WEB服务器(如Tomcat)负责解析后转换成HTML文本(构成最终页面)发送给客户端.(二)页面指令页面指令是独立于每个请求的,对整个页面有全局性影响的信息。
实验四JSP基本语法与页面指令一、实验目的1. 熟练掌握JSP的声明、表达式、小脚本和注释的使用;2. 理解JSP页面(page)指令和动作的语法格式;3. 理解JSP页面的生命周期。
4. 熟练掌握page指令的下面的属性:import、session、errorPage、isErrorPage、contentType、pageEncoding。
5. 理解page指令的下面的属性:language、extends、buffer、autoFlush、info。
二、实验内容与步骤(一)JSP语法元素输入并执行下面JSP页面,文件名为counter.jsp<html><body><%@ page language="java" %><%! int count = 0; %><% count++; %>Welcome! You are visitor number<%= count %></body></html>【步骤1】该JSP页面包含哪些JSP语法元素。
在浏览器中访问该页面,输出结果如何?多次刷新页面,结果如何?【步骤2】打开counter.jsp转换后的源文件counter_jsp.java,对应的类文件在哪里?文件名是什么?【步骤3】查看count变量是在哪里声明的?【步骤4】将上面JSP页面中的<%! int count = 0; %>一行改为<% int count = 0; %>,页面能否正常执行,它与上面页面有什么区别?(二)JSP指令标记JSP有三个指令元素:page、include和taglib。
这些指令元素是针对JSP引擎的,并不会产生任何看得见的输出。
它们都包含在<%@和%>标签内。
本实验主要学习page指令和include指令。
<%@ page %>指令作用于整个JSP页面,包括静态包含的页面,但不包括动态包含的页面。
可以在一个页面中包含多个<%@ page %>指令,但其属性除import外只能在整个页面中出现一次。
<%@ page %>指令可以放在页面的任何位置,但为了JSP程序的可读性,一般将<%@ page %>指令放在页面的前面。
include指令标记<%@ include file= "文件的URL " %>的作用是在JSP页面出现该指令的位置处,静态插入一个文件。
被插入的文件必须是可访问和可使用的,如果该文件和当前JSP页面在同一Web服务目录中,那么“文件的URL”就是文件的名字;如果该文件在JSP 页面所在的Web服务目录的一个子目录中,比如fileDir子目录中,那么“文件的URL”就是“fileDir/文件的名字”。
include指令标记在编译阶段就处理所需要的文件,被处理的文件在逻辑和语法上依赖于当前JSP页面,其优点是页面的执行速度快。
(1)Include指令标记示例:建两个页面includejsp.jsp和date.jsp,其中includejsp.jsp中包含date.jsp.参考代码如下:Includejsp.jsp:<html><head><title>Include Date JSP </title></head><body bgcolor="white"><center><font color="blue">The current date and time are: <%@ include file="date.jsp" %><%! String hello="Hello,Welcome to Jsp";%><%=hello%></center></font></body></html>date.jsp:<%@ page import="java.util.*" %><%= (new java.util.Date() ).toLocaleString() %>(2)page指令示例输入并运行下面的import_test.jsp页面:<%@ page import="java.util.Date,java.text.DateFormat;" %><html><head><title>page指令示例</title></head><body><h3 align="center">使用page指令导入java.util.Date类</h3><% Date date = new Date();String s = DateFormat.getDateInstance().format(date);String s2 = DateFormat.getDateInstance(DateFormat.FULL).format(date);%><p align="center">现在的时间是:<%=s%><p align="center">现在的时间是:<%=s2%></body></html>访问上述JSP页面,输出结果如下图所示:(http://localhost:8080/test/import_test.jsp)import_test.jsp页面的运行结果可以看到页面中最后一行的中文显示为乱码,将下面代码加到JSP页面中:<%@ page contentType="text/html;charset=gb2312" %>重新访问页面,中文显示正常。
这说明可以使用page指令的contentType属性指定页面输出使用的字符编码。
默认情况下,JSP页面使用的字符集是iso-8859-1编码,如使用汉字编码应指定为gb2312或gbk。
errorPage属性和isErrorPage属性的使用。
【步骤1】下面的hello.jsp页面执行时将抛出一个异常,它指定了错误处理页面为errorHandler.jsp。
<%@ page contentType="text/html;charset=gb2312" %><%@ page errorPage="errorHandler.jsp" %><html><body><%String name = request.getParameter("name");if (name == null){throw new RuntimeException("没有指定name 属性。
");}%>Hello, <%= name %></body></html>【步骤2】下面的errorHandler.jsp是错误处理页面。
<%@ page contentType="text/html; charset=gb2312" %><%@ page isErrorPage="true" %><html><body>请求不能被处理:<%=exception.getMessage()%><br>请重试!</body></html>用下面的URL访问hello.jsp页面,就会产生下面结果:http://localhost:8080/test/hello.jsperrorHandler.jsp页面的运行结果这说明没有提供name参数,hello.jsp页面中抛出RuntimeException异常,所以调用错误页面。
如果使用下面URL访问 hello.jsp页面,将产生下面正常的页面:http://localhost:8080/test/hello.jsp?name=Maryhello.jsp页面的运行结果注意:如果请求参数值使用汉字,仍然产生乱码,例如:http://localhost:8080/bookstore/hello.jsp?name=欧阳清风这是因为请求参数默认使用iso-8859-1编码传递,如果要正确显示中文,应将请求参数编码转换为gb2312编码。
按下面方法修改hello.jsp页面,将请求参数值编码转换为汉字编码。
<%@ page contentType="text/html;charset=gb2312" %><%@ page errorPage="errorHandler.jsp" %><html><body><%String name = request.getParameter("name");if (name==null){throw new RuntimeException("没有指定name 属性。
");}else{// 将字符串name的字符编码转换为汉字编码name = new String(name.getBytes("iso-8859-1"),"gb2312");}%>Hello, <%=name %></body></html>(三)JSP动作标记include 动作标记<jsp:include page="文件的URL"/>是在JSP页面运行时才处理加载的文件,被加载的文件在逻辑和语法上独立于当前JSP页面。
include 动作标记可以使用param 子标记向被加载的JSP文件传递信息。
forward动作标记<jsp:forward page="要转向的页面" />的作用是:从该指令处停止当前页面的继续执行,而转向执行page属性指定的JSP页面。