实验三 JSP基础语法
JSP基本语法及用法

JSP 基本语法一、本节内容JSP文件的结构JSP的脚本元素JSP指令元素JSP动作元素1.1 jsp文件结构1.1.1指令:在"<%@ " 和"%>"之间常用的指令有page、taglib<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>1.1.2注释:分为客户端注释和服务器端注释1.客户端注释:<!-- 注释内容-->2.服务器端注释:<%-- 注释内容(可以是多行) --><% //注释内容(只能是单行) %><% /** 注释内容(可以是多行) */ %>1.1.3 脚本脚本在jsp文件有分为三种定义(声明)、输出和普通代码(脚本段)1.1.3.1 定义(声明)JSP中脚本的定义格式<%! 定义语句%>注意:如果在JSP中要定义函数,必须采用定义。
如果要定义一个全局变量也必须采用定义,否则采用脚本段。
定义的变量是该JSP被转化为的java类的一个成员变量.(字段),也是全局变量。
功能:可以定义变量,函数(方法)1.1.3.2 输出:格式<%= 输出表达式%> 切忌输出表达式后无分号,就等于<% out.print(输出表达式); %>功能:在网页中输出表达式的值示例: 在网页中输出变量name 的值<%!String name="里斯"; %> 定义<%=name %><% out.println(name); %>1.1.3.3 普通代码(脚本段)格式<% 代码段%>功能: 普通的java代码,执行相应的运算等复习扩展客户端访问服务器我们称之为请求request服务器将数据返回给客户端我们称之为响应response请求request 是HttpServletRequest接口的一个实例对象它封装了我们请求服务器所携带的所有信息包括你请求的地址端口等响应response 是HttpServletResponse接口的一个实例对象它封装了服务器返回给客户端的所有数据信息request可以通过request.getParameter("test")获取请求表单中name为test的input对象的value练习题目:根据用户输入的数字来打印直角三角形比如用户输入的数字为4 那么打印的图形如下**********题目分析:分析一:如何根据数字打印图形跟据数据打印图形规律当用户输入的数字为1 时,打印1行,打印一个换行当用户输入的数字为2 时,打印2行,第一行1个第二行2个当用户输入的数字为3 时,打印3行,第一行1个第二行2个第三行 3个... ...当用户输入的数字为n 时,打印n 行,第一行1个,第二行2个,第三行3个 ... ...第n行 n个输入n为n行,每一行的行数和该行的“*”的个数相同解决方法:采用两层循环,外层循环控制行数,内层循环控制单一行的“*”的个数。
JSP基础语法

1.ScriptletScript:表示脚本。
Let在JAVA中表示小程序的意思,所以scriptlet表示脚本小程序。
其有三种形式:<% 在其中可以定义变量,编写语名%><%!在其中定义全局变量,编写方法,编写类,但是一般情况下不会直接在JSP中直接定义一个类,绝对不能直接在里面编写任何语句%>在此可以定义jspInit()和jspDestroy()方法两个方法都只执行一次<%=在其中添加变量或表达式%> 称为表达式输出2.JSP中哪种输出方式更好Out.println 与<%=%>功能一样,通过下面的范例说明哪个更好:<%o ut.println("<table>");f or(int i=0;i<100;i++){out.println("<tr>");for(int j=0;j<100;j++){out.println("<td>"+(i*j)+"</td>");}out.println("</tr>");}%>此种方式的源文件没有任何的缩进,非常的混乱,而且此时要想为显示的表格增加边框,则必须使用border属性。
out.println("<table color=\”red\”>");<%f or(int i=0;i<100;i++){%><tr><%for(int j=0;j<100;j++){%><td><%=i*j %></td><%}%></tr><%}%>使用此种方式,html代码与java代码之间合理的分割开了,产生的源文件也非常的清析,经过比较后种方法比前者方法好。
Jsp基本语法

Jsp基本语法Jsp语法分为3类:脚本元素、指令元素、动作元素。
jsp的脚本元素有以下4个:1. 隐藏注释:<%--这是客户端不可见的隐藏注释--%>2. 声明(declarations):<%!这是声明%>3. 脚本段(scriptlets):<%这是脚本段%>4. 表达式(expression):<%=这是表达式%>jsp的指令元素有以下3个:指令主要用来提供整个JSP网页相关的信息,并且用来设定JSP页面的相关属性。
一、page指令功能:设定整个JSP网页的属性和相关功能。
语法:<%@ page attribute1="value1" attribute2="value2" %>标签元素:<jsp:directive.page attribute1="value1" attribute2="value2" />page指令元素的属性language="language" 指定JSP Container要用什么语言来编译JSP网页。
目前只可以使用Java语言,不过不排除增加其它语言。
默认值为Java。
extends="className" 定义此JSP页面产生的Servlet是继承自哪个父类。
必须为实现HttpJspPage接口的类。
JSP规范对不完全理解其隐意的情况下使用此属性提出警告。
import="importList" 定义此JSP页面可以使用哪些Java API。
用逗号分隔列出一个或多个全质类名。
此列表用于在生成的java servlet中创建相应的导入语句。
以下包是自动包含的,不必被指出:ng.*;java.servlet.*;java.servlet.jsp.*;java.servlet.htt.*session="true|false" 指明JSP页面是否需要一个HTTP会话,如果为true,那么产生的servlet 将包含创建一个HTTP会话(或访问一个HTTP会话)的代码,缺省为true。
JSP基础语法

JSP基础语法(上)一.1.注释显示注释:HTML注释,最终会发送的客户端。
隐式注释:JAVA注释,不会在客户端显示。
★注释的几种方法<!—HTML注释,此注释会发送到客户端--><%//可以使用JAVA的单行注释/*多行注释*/%><%--JSP中的注释--%>2.声明语句<%!%>声明全局变量、类、方法,全局变量,实例化一次,类和方法,开发中很少。
例:<%! String test=”Hello World”; %>3.表达式<%=%>类似于out.println()提示:在开发时尽量不要使用out.println()输出,而是用<%=%>进行输出。
目的:达到HTML代码与JAVA代码的分离。
4.脚本代码<% %>写具体的JAVA代码或声明变量,声明的是局部变量。
二.1.编码(设定页面MIME类型)<%@ page contentType=”text/html;charset=gb2312”%>2.包<%@ page import=”java.io.*,java.sql.*”%>3.将字符串变成整数eg. row = Integer.parseInt(t_row)t_row是传过来的参数4.在页面显示当前时间<%=new Date()%>JSP基础语法(下)1.包含语句★<%@include file=“hello.jsp”%><%@include file=“hello.html”%>如果要实现一个网站,而且整个WEB站点都需要菜单、页眉、页脚(HTML代码),有两种实现方法:A.在所有的JSP页面中,协商菜单、也没。
页脚(HTML代码)(页面较多时不好处理)B.在所有的JSP页面中,将菜单、页眉、页脚(HTML代码)代码包含进来包含的是文件的内容注意:include语句可以包含任何内容,但是在一个JSP页面中,只能有一组<html>、<head>、<body>原则:在开发中呗包含的文件,只写显示部分的HTML代码,主题代码不要出现。
4.JSP基本语法

– 创建一个Bean实例并指定它的名字和作用范围
语法
<jsp:useBean id="name" class="classname" type="classname" scope="page|request|session|application" />
例子
<jsp:useBean id="cart" scope="session" class="session.Carts" /> <jsp:setProperty name="cart" property="*" /> <jsp:useBean id="checking" scope="session" class="bank.Checking" > <jsp:setProperty name="checking" property="balance" value="0.0" /> </jsp:useBean>
–
基本语法
声明
1. 在JSP程序中声明合法的变量和方法和类 2. 被转换为Servlet的成员变量和成员方法,内部类. 3. 必须要以;结尾
语法
<%! declaration; [ declaration; ]+ ... %>
例子
<%! int i = 0; %> <%! int a, b, c; %> <%! Circle a = new Circle(2.0); %>
JSP学习笔记之基础语法

JSP学习笔记之基础语法jsp页⾯元素构成jsp页⾯组成部分有:指令,注释,静态内容,表达式,⼩脚本,声明。
jsp指令page指令:通常位于jsp页⾯的顶端,同⼀个页⾯可以有多个page指令include指令:将⼀个外部⽂件嵌⼊到当前jsp⽂件中,同时解析这个页⾯中的jsp语句taglib指令:使⽤标签库定义新的⾃定义标签,在jsp页⾯中启动⾃定⾏为page指令语法<%@page属性1="属性值" 属性2="属性值1,属性值2" 属性n="属性值n"%>jsp注释在jsp页⾯的注释。
HTML的注释:<!--html注释--> //客户端可见jsp的注释:<%--html注释--%> //客户端不可见jsp脚本注释://单⾏注释/**/多⾏注释jsp脚本在jsp页⾯中执⾏的java代码语法:<%java代码%>jsp声明在jsp页⾯中定义变量或者⽅法语法:<%!java代码%>jsp表达式在jsp页⾯中执⾏的表达式语法:<%=表达式%> //注意:表达式不以分号结束jsp页⾯的⽣命周期JSP的⽣命周期分为四个主要阶段是⾮常相似的Servlet的⽣命周期,并有如下⼏要点:JSP 编译:当浏览器请求⼀个JSP,JSP引擎⾸先检查它是否需要编译页⾯。
如果页⾯从来没有被编译,或者如果JSP已经被修改,因为它是最后⼀个编译JSP引擎编译的页⾯。
编译过程包括三个步骤:•解析JSP。
•打开JSP成servlet。
•编译这个servlet。
JSP初始化:当⼀个容器加载⼀个JSP它的任何服务请求之前调⽤jspInit()⽅法。
如果您需要执⾏JSP特定的初始化JSP 执⾏:JSP的⽣命周期的这个阶段代表请求的所有交互,直到JSP被破坏。
当浏览器请求⼀个JSP与页⾯已经被加载并初始化时,JSP引擎调⽤JSP中的_jspService() ⽅法。
实验三 JSP基本语法

实验三 JSP基本语法实验三jsp基本语法《javaweb开发》实验三jsp基本语法学号:___________________姓名:____________________实验目的:1,熟悉和理解myeclipse下的创建jsp的方法及模板的基本内容2,掌控jsp程序段、jsp表达式、jsp声明等基本jsp元素及其综合应用领域3,熟识常用jsp错误的修正方法及调试jsp的方法实验内容和步骤:1,在布局不好tomcat基础上(假设读写在d:\\tomcat6.x之下),myeclipse中建立webproject,项目名叫project3,并部署(也称作公布,deploy)该web项目,并关上浏览器测试该项目。
然后按照如下step1-1至1-4的建议建立jsp。
step1-1,在webroot之下建立一个jiecheng1.jsp,表明10的阶乘的运算结果。
提示信息:1)用jsp程序段(jspscriptlet)即可,用out.print()方法来显示step1-2,在webroot之下建立一个jiecheng2.jsp,表明10行,分别表明从1至10的阶乘的运算结果。
提示信息:1)用jsp程序段(jspscriptlet)来运算,用jsp表达式(jspexpression)来显示。
step1-3,在webroot之下建立一个jiecheng3.jsp,表明10行,用随机的相同颜色表明从1至10的阶乘的运算结果。
提示信息:1)实现不同颜色,可以用jsp声明(jspdeclaration)中编写自定义方法。
2)同时实现随机颜色,可以用jdk提供更多的math.random()方法融合html标记去建立。
step1-4,在webroot下创建jiecheng4.jsp,用表格显示1到10的阶乘的运算结果。
提示:1)混合采用jsp程序段、jsp表达式、html标记。
2,在src下创建一个类student.java,它具有姓名、性别、年龄、班级等不同的成员变量,例如:packagemodel.student;publicclassstudent{stringname;//姓名booleansex;//性别,true表示男,false表示女intage;//年龄stringclassname;//班级publicstudent{}//默认无参构造函数publicstudent(stringname,booleansex,intage,stringclassname){//有参构造函数=name;this.sex=sex;this.age=age;this.classname=classname;}}6,在webroot之下建立studentlist.jsp,用程序段建立5个上述学生类型的个人信息,用表格表明出。
第3讲JSP基本语法3

回顾HTML表单
method表示表单发送的方式, 分为两种: method表示表单发送的方式, 分为两种: 表示表单发送的方式 get方式:将表单内容经过编码之后 ,通过URL发送, 使用get方 式发送时有255个字符的限制
可以在地址 栏里看到
post方式:将表单的内容通过http发送,post没有字符长度的限制
15
为什么需要使用HTML表单
如何在服务器端获得 文本框中的数据? 文本框中的数据?
HTML表单是与用户交互信息的主要手段 表单是与用户交互信息的主要手段
16
回顾HTML表单
创建表单
一个表单至少应该包括说明性文字、表单控件、提交和重置按钮 等内容 HTML表单标记说明了表单提交的方式和地点
创建表单控件
在地址栏看不到 表单的提交信息
演示get方式与 演示 方式与post方式的区别 方式的区别 方式与
18
表单处理的编程模式
用户通过表单控件输入并提交信息 JSP获得表单数据 获得表单数据, JSP获得表单数据,进行逻辑处理 JSP根据处理结果 根据处理结果, JSP根据处理结果,转向不同的结果页面
JSP
6
page 范围
a.jsp b.jsp
设置属性
<jsp:forward/> 服务器端跳转
取得属性 取得属性
可以取得
无法取得
7
在JSP中设置一个页的属性范围,必须通过 JSP中设置一个页的属性范围, 中设置一个页的属性范围 pageContext(页容器)完成。 pageContext(页容器)完成。
12
application 范围
可以取得 可以取得 可以取得
取得属性
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三JSP基本语法一、实验目的1. 熟练掌握JSP的声明、表达式、小脚本和注释的使用;2. 理解JSP指令和动作的语法格式;3. 理解JSP页面的生命周期。
4. 熟练掌握page指令的下面的属性:import、session、errorPage、isErrorPage、contentType、pageEncoding。
5. 理解page指令的下面的属性:language、extends、buffer、autoFlush、info。
二、实验原理JSP有三个指令元素:page、include和taglib。
这些指令元素是针对JSP引擎的,并不会产生任何看得见的输出。
它们都包含在<%@和%>标签内。
<%@ page %>指令作用于整个JSP页面,包括静态包含的页面,但不包括动态包含的页面。
可以在一个页面中包含多个<%@ page %>指令,但其属性除import外只能在整个页面中出现一次。
<%@ page %>指令可以放在页面的任何位置,但为了JSP程序的可读性,一般将<%@ page %>指令放在页面的前面。
三、实验内容与步骤(一)输入并执行下面JSP页面,文件名为counter.jsp<html><body><%@ page language="java" %><%! int count = 0; %><% count++; %>Welcome! You are visitor number<%= count %></body></html>该JSP页面包含哪些JSP语法元素。
多次刷新页面,结果如何?(二)将上面JSP页面中的<%! int count = 0; %>一行改为<% int count = 0; %>,页面能否正常执行,它与上面页面有什么区别?(三)打开Tomcat安装目录下的\work\Catalina\localhost\chap06\org\apache\jsp目录中的counter_jsp.java文件,查看count变量是在哪里声明的。
该文件就是JSP页面转换成的Java源文件,对应的.class文件是编译后的类文件,它实际上是Servlet。
对JSP页面的访问就是对该Servlet的访问,由它提供服务。
(四)有下面expression.jsp页面:<html><body><%@ page language="java" %><%!int anInt = 3;boolean aBool = true;Integer anIntObj = new Integer(3);Float aFloatObj = new Float(8.6);String str = "some string";StringBuffer sBuff = new StringBuffer();char getChar(){ return 'A'; }%><%= 500 %><%= anInt*3.5/100-500 %><%= aBool %><%= false %><%= !false %><%= getChar() %><%= Math.random() %><%= aVector %><%= aFloatObj %><%= aFloatObj.floatValue() %><%= aFloatObj.toString() %><%= aBool; %><%= int i = 20 %><%= sBuff.setLength(12); %></body></html>你能找出其中的错误吗?你可试着执行该页面,看会出现什么结果?将其中错误修改过来,最后输出下面结果:图4.1 expression.jsp的运行结果(五)运行下面persistent_counter.jsp页面,体会如何实现持久的计数器的?<%@ page language="java" import="java.io.*" %><%!int count = 0;String dbPath;public void jspInit(){try{dbPath = getServletContext().getRealPath("/WEB-INF/counter.db");FileInputStream fis = new FileInputStream(dbPath);DataInputStream dis = new DataInputStream(fis);count = dis.readInt();dis.close();}catch(Exception e){log("Error loading persistent counter", e);}}%><%--下面是向浏览器输出的主要内容,它将成为产生的_jspService()方法的一部分--%><html><body><% count++; %>Welcome! You are <%= count %> th visitor(s).</body></html><%!public void jspDestroy(){try{FileOutputStream fos = new FileOutputStream(dbPath);DataOutputStream dos = new DataOutputStream(fos);dos.writeInt(count);dos.close();}catch(Exception e){log("Error storing persistent counter", e);}}%>(六)输入并运行下面的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页面,输出结果如下图所示:图4.2 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/chap06/hello.jsp图4.3 errorHandler.jsp页面的运行结果这说明没有提供name参数,hello.jsp页面中抛出RuntimeException异常,所以调用错误页面。
如果使用下面URL访问 hello.jsp页面,将产生下面正常的页面:http://localhost:8080/chap06/hello.jsp?name=Mary图4.4 hello.jsp页面的运行结果注意:如果请求参数值使用汉字,仍然产生乱码,例如:http://localhost:8080/chap06/hello.jsp?name=欧阳清风这是因为请求参数默认使用iso-8859-1编码传递,如果要正确显示中文,应将请求参数编码转换为gb2312编码。