昆明理工大学信息工程与自动化学院学生实验报告
(2016 — 2017 学年第2 学期)
课程名称:JAVA EE技术
开课实验室:呈贡校区信自楼2017年4月17
实验三JSP程序设计
一、实验内容
1.通过上机,能够掌握JSP指令动作、内置对象的应用。
2.编写JSP程序、完成简单的Web应用功能。
3.完成以上内容的程序调试,并运行出正确的结果。
二、所用仪器、材料
PC一台,JDK、Eclipse、Tomcat、MySQL
三、实验原理
1.JSP的3个编译指令:
(1)page指令:用户定义JSP页面中的全局属性,page指令对整个页面有效,包括静态的包含文件,但page指令不能用于被动态包含的文件,例如使用
page指令中的属性只能出现一次(import属性除外)。
(2)include指令:用于在JSP页面中包含其他文件,仅有一个属性file,其值为文件的相对路径。include指令包含的过程是静态的,包含的文件可以是JSP、
HTML或者Inc文件等。
(3)taglib指令:允许用户使用标签库自定义新的标签,指令中的uri属性用于根据标签的前缀对自定义的标签进行唯一的命名,其值可以食相对路径,就
对路径或标签库描述文件。属性prefix制定了标签的前缀。
2.JSP的7个动作指令:
(1)jsp:forward: 执行页面转向,将请求的处理转发到下一个页面。
(2)jsp:param: 用于传递参数,必须与其他支持参数曲标签一起使用。
(3)jsp:include: 用于动态引入一个JSP 页面。
(4)jsp:p1ugin: 用于下载JavaBean 或Applet 到客户端执行。
(5)jsp:useBean: 使用JavaBean。
(6)jsp:setProperty:修改JavaBean 实例的属性值。
(7)jsp:getProperty:获取JavaBean 实例的属性值。
3.JSP 的9个内置对象:
(1)request对象:表示HttpServletRequest对象。
(2)response对象:表示HttpServletResponse对象,主要将JSP容器处理后的结果传回到客户端。
(3)session对象:表示一个请求的javax.servlet.http.HttpSession对象。指的是客户端与服务器的一次会话,从客户连到服务器的一个
WebApplication开始,直到客户端与服务器断开连接为止。
(4)out对象:对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。
(5)page对象:对象就是指向当前JSP页面本身,有点象类中的this指针,它是https://www.doczj.com/doc/dc7002787.html,ng.Object类的实例
(6)application对象:表示一个javax.servlet.ServletContext对象。他实现了用户间数据的共享,可存放全局变量
(7)exception对象:一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。
(8)pageContext对象:表示一个javax.servlet.jsp.PageContext对象。
(9)config对象:表示一个javax.servlet.ServletConfig对象。
四、实验过程
1.简单的JSP页面
新建sayHello.jsp文件
运行结果:
2.JSP访问量设计
新建hitscount.jsp
第一次运行结果:
多次运行结果:
3.Request对象
新建request.jsp
运行结果:
五、实验结果、分析和结论(误差分析与数据处理、成果总结等。其中,绘
制曲线图时必须用计算纸)
本次实验所给范围较宽广,要想实现全部是不可能的,所以我仅仅挑选
了一部分来展示JSP的特点。本次实验代码,我主要是采用课本上的方
法及代码完成了实验。
源代码:
1.sayHello.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.*,java.text.*" %>
"https://www.doczj.com/doc/dc7002787.html,/TR/html4/loose.dtd">
<%
Calendar now=Calendar.getInstance();
int hour=now.get(Calendar.HOUR_OF_DAY);
SimpleDateFormat sdf=new SimpleDateFormat("HH:mm:ss");
out.print("当前时间是:"+sdf.format(now.getTime())+"
");
if(hour<12){
%>
早上好!
<%
} else if(hour<18){
%>
下午好!
<%
} else{
%>
晚上好!
<%
}
%>
2.hitscount.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%!int count=0; %>
<%
synchronized(this){
if(count==0)
out.print("欢迎访问我的网站!");
else
out.print("欢迎再次访问我的网站!");
}%>
访问量:<%=++count %>
3.request.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
请求方法:<%=request.getMethod() %>
请求URI:<%=request.getRequestURI() %>
请求协议:<%=request.getProtocol() %>
Servlet路径:<%=request.getServletPath() %>
路径信息:<%=request.getPathInfo() %>
查询字符串:<%=request.getQueryString() %>
内容长度:<%=request.getContentLength() %>
内容类型:<%=request.getContentType() %>
服务器名称:<%=request.getServerName() %>
服务器端口:<%=request.getServerPort() %>
远程用户:<%=request.getRemoteUser() %>
远程地址:<%=request.getRemoteAddr() %>
远程主机:<%=request.getRemoteHost() %>
区域设置:<%=request.getLocale() %>
使用的浏览器:<%=request.getHeader("User_Agent") %>
表单提交的值:<%=request.getParameter("msg")%>
“Java程序设计基础”课程习题 一、填空 1.Java程序分两类___Applet___和application,Java Application 类型的程序,程序从 ___main方法___开始执行。 2.定义一个Java类时,通过关键字__extends____指明该类的父类。一个类可以有___1___ 个父类。 3.用public修饰的类称为_公有类或公用类__。用public修饰的类成员称为公有成员。被 说明为public的内容可以被__所有其他类___ 使用。如果public类文件与使用它的类文件不在同一目录中,需要通过__import____语句引入。 4.用___private___ 修饰的类成员称为私有成员。私有成员只能在__本类__ 中使用。 5.如果子类定义的成员变量与父类的成员变量同名,称为___方法覆盖___ ,要表明使用 子类的成员变量,可以在成员变量前加上关键字__super___ 。 6.____Object__ 类是Java类库中所有类的父类。 7.Java字符使用__16位的字符集,该字符集成为__Unicode____ 。 8.当子类中定义的方法与父类方法同名时,称子类方法___覆盖___ 父类方法,子类默认 使用自己的方法。使用父类的同名方法,必须用关键字__super__ 说明。 9.Java源程序文件名的后缀是___.java___,Java字节码文件名的后缀是_.class_____。 10.Java类名的第一个字母通常要求___大写___。 11.Java程序由____类__组成,每个程序有一个主类,Java程序文件名应与____主__类的 名称相同。 12.Java__Application_类型的程序需要main()方法,程序从__main____开始执行。 13.布尔型数据类型的关键字是_boolean__ ,占用位数是___1位___ ,有__true__ 和_false_ 两种值。整型数可以采用_十_ 、__八_ 和__十六_三种进制表示。 14.八进制整数以数字__0_开头。十六进制整数以_0x或0X_ 开头。 15.int整型数占用__32位内存。long整型数占用__64 位内存。 16.127L表示__长整型____ 常量。 17.根据占用内存长度将浮点常量分为_double_____ 和__float____ 两种。 18.单精度浮点常量占用__32_ 位内存,双精度浮点常量占用__64 位内存。 19.在Java语言中,字符串“ABC\tD\b\n”中包括__7个字符。 20.数学关系4
《JSP 程序设计》复习题 一、 选择题 HTML 页面中加入( D )就构成了一个 JSP 页面文件。 A 、JAVA 程序片 B 、JSP 标签 C 、用“<%”、“%>”标记符号括起来的程序 2. 配置 JSP 运行环境,若 WEB 应用服务器选用 TOMCAT ,以下说法正确的是: ( A 、先安装 TOMCAT ,再安装 JDK ,再安装 TOMCAT B 、不需安装 JDK ,安装 TOMCAT 就可以了 C 、JDK 和 TOMCAT 只要都安装就可以了,安装顺序没关系 B ) 3. 对于“<%!”、“%>”之间声明的变量,以下说法正确的是:( B ) A 、不是 JSP 页面的成员变量 、多个用户同时访问该页面时,任何一个用户对这些变量的操作,都会影响到其他用 C 、多个用户同时访问该页面时,每个用户对这些变量的操作都是互相独立的,不会互 相影响 D 、是 JSP 页面的局部变量 4. 在客户端浏览器的源代码中可以看到( B A 、JSP 注释 C 、JSP 注释和 HTML 注释 D 、JAVA 注释 5. page 指令的作用是:( A ) JSP 页面的一些属性和这些属性的值 A 、用来在 JSP 页面内某处嵌入一个文件 B 、使该 JSP 页面动态包含一个文件 C 、指示 JSP 页面加载 Java plugin 6. page 指令的 import 属性的作用是( C A 、定义 JSP 页面响应的 MIME 类型 B 、 D 、定义 JSP 页面字符的编码 ) 7. ( C )可在 JSP 页面出现该指令的位置处,静态插入一个文件。 A 、page 指令标签 B 、page 指令的 import 属性 指令标签 D 、include 动作标签 8. 以下对象中的( D )不是 JSP 的内置对象。 A 、request B 、session C 、application
第1章Web技术简介 1.7 习题 1.7.1 选择题 1. Web技术的设想于哪一年提出()。 A.1954年 B.1969年 C.1989年 D.1990年 2. JSP页面在第一次运行时被JSP引擎转化为()。 A.HTML文件 B.CGI文件 C.CSS文件 D.Servlet文件 3. JavaEE体系中Web层技术是()。 A.HTML B.JavaBean C.EJB D.JSP 参考答案:1.C 2.D 3.D 1.7.2 填空题 1.当前主流的三大动态Web开发技术是:PHP、ASP/https://www.doczj.com/doc/dc7002787.html,和______________。 2. JSP的两种体系结构是:______________和______________。 3. JSP开发Web站点的主要方式有:直接JSP、JSP+JavaBean、______________、______________和SSH。 参考答案: 1.JSP 2.JSP Model1和JSP Model2 3.JSP+JavaBean+Servlet、J2EE/JavaEE 1.7.3 简答题 1. 简述JSP的工作原理。 答:所有的JSP应用程序在首次载入时都被翻译成Servlet文件,然后再运行,这个工作主要是由JSP引擎来完成。当第一次运行一个JSP页面时,JSP引擎要完成以下操作: ●将JSP文件翻译成Servlet文件,Servlet文件是Java应用程序。 ●JSP引擎调用Java编译器,编译Servlet文件得到可执行的代码文件(.class文件)。 ●JSP引擎调用Java虚拟机解释执行.class文件,并将运行结果返回给服务器。 ●服务器将运行结果以HTML形式作为响应返回给客户端的浏览器。 由于一个JSP页面在第一次被访问时要经过翻译、编译和执行这几个步骤,所以客户端得到响应所需要的时间比较长。当该页面再次被访问时,它对应的.class文件已经生成,不需要再次翻译和编译,JSP引擎可以直接执行.class文件,因此JSP页面的访问速度会大为提高。 2. 简述JSP两种体系结构。
第1章JSP概述 习题一解答 1.答:确保Tomcat服务器使用的是Java_home环境变量设置的JDK 2.答:见1.3.2中的新建Web服务目录。 3.答:在浏览器的地址栏中键入:http://IP:端口号/Web服务目录/子目录/JSP页面。4.答:修改Tomcat服务器安装目录中conf文件夹中的主配置文件:server.xml,只要没有其他应用程序正在占用80,就可以将端口号设置为80。
第2章JSP页面与JSP标记 习题二解答 1.答:“<%!”和“%>”之间声明的变量在整个JSP页面内都有效,称为JSP页面的成员变量,成员变量的有效范围与标记符号<%!、%>所在的位置无关。所有用户共享JSP页面的成员变量,因此任何一个用户对JSP页面成员变量操作的结果,都会影响到其他用户。 “<%”和“%>”之间声明的变量称为局部变量,局部变量在JSP页面后继的所有程序片以及表达式部分内都有效。运行在不同线程中的Java程序片的局部变量互不干扰,即一个用户改变Java程序片中的局部变量的值不会影响其他用户的Java程序片中的局部变量。当一个线程将Java程序片执行完毕,运行在该线程中的Java程序片的局部变量释放所占的内存。 2. 答:两次。 3.答:不允许。允许。 4.答:第一个用户看到的sum的值是610,第二个用户看到的sum的值是1210 5. 答: <%@ page contentType="text/html;charset=GB2312" %>
<% for(char c='A';c<='Z';c++) { out.print(" "+c); } %> 6.答:include指令标记的作用是在JSP页面出现该指令的位置处,静态插入一个文件,即JSP页面和插入的文件合并成一个新的JSP页面,然后JSP引擎再将这个新的JSP页面转译成Java文件。因此,插入文件后,必须保证新合并成的JSP页面符合JSP语法规则,即能够成为一个JSP页面文件。include动作标记告诉JSP页面动态加载一个文件,不把JSP页面中动作指令include所指定的文件与原JSP页面合并一个新的JSP页面,而是告诉Java解释器,这个文件在JSP运行时(Java文件的字节码文件被加载执行)才被处理。如果包含的文件是普通的文本文件,就将文件的内容发送到客户端,由客户端负责显示;如果包含的文件是JSP文件,JSP引擎就执行这个文件,然后将执行的结果发送到客户端,并由客户端负责显示这些结果。 7. 答:《JSP程序设计实用教程》期末考试试卷(A卷) (考试时间90分钟,满分100分) 一、选择题(1~40题,每题1分,共40分) 下面各题A、B、C、D四个选项中,只有一个选项是正确的,请将正确选项涂抹在答题卡相应的位置上,答在试卷上不得分。 1.在传统的HTML页面中加入()就构成了一个JSP页面文件。 A.JAVA程序片B.JSP标签 C.用“<%”、“%>”标记符号括起来的程序D.JAVA程序片和JSP标签 2.配置JSP运行环境,若WEB应用服务器选用TOMCAT,以下说法正确的是:()A.先安装TOMCAT,再安装JDK B.先安装JDK,再安装TOMCAT C.不需安装JDK,安装TOMCAT就可以了 D.JDK和TOMCAT只要都安装就可以了,安装顺序没关系 3.对于“<%!”、“%>”之间声明的变量,以下说法正确的是:() A.不是JSP页面的成员变量 B.多个用户同时访问该页面时,任何一个用户对这些变量的操作,都会影响到其他用户C.多个用户同时访问该页面时,每个用户对这些变量的操作都是互相独立的,不会互相影响 D.是JSP页面的局部变量 4.在客户端浏览器的源代码中可以看到()。 A.JSP注释 B.HTML注释 C.JSP注释和HTML注释 D.JAVA注释 5.page指令的作用是:()。 A.用来定义整个JSP页面的一些属性和这些属性的值 B.用来在JSP页面内某处嵌入一个文件 C.使该JSP页面动态包含一个文件 D.指示JSP页面加载Java plugin 6.page指令的import属性的作用是()。 A.定义JSP页面响应的MIME类型 B.定义JSP页面使用的脚本语言 C.为JSP页面引入JAVA包中的类 D.定义JSP页面字符的编码 7.page指令的()属性可以设置JSP页面是否可多线程访问。 A.session B.buffer C.isThreadSafe D.info 8.()可在JSP页面出现该指令的位置处,静态插入一个文件。 A.page指令标签 B.page指令的import属性 C.include指令标签
第五章使用JavaBean 一、选择题 1.下面哪一项属于工具Bean的用途?() A)完成一定运算和操作,包含一些特定的或通用的方法,进行计算和事务处理。 B)负责数据的存取 C)接受客户端的请求,将处理结果返回客户端 D)在多台机器上跨几个地址空间运行 2.JavaBean可以通过相关jsp动作指令进行调用。下面哪个不是JavaBean可以使用的jsp 动作指令?() A)
《基于WEB程序设计》 < 1 > 期末考试试卷