jsp实验报告
中南民族大学管理学院学生实验报告
课程名称: JSP程序设计
年级: 2010级
专业:信息管理与信息系统
姓名:
学号:
指导教师:
实验地点:管理学院综合实验室
20 学年至 20 学年度第 2 学期
第一章 JSP简介
实验 Tomcat服务器的安装与配置
一、实验目的
本实验的目的是让学生掌握怎样设置Web服务目录、怎样访问Web服务目录下的JSP 页面、怎样修改Tomcat服务器的端口号。
二、实验要求
1、将下载的6.0.13解压到D盘中,并进行调试。
2、用文本编辑器编写一个简单的JSP页面,并保存到Web服务目录中。
三、实验结果
所运行的代码如下;
<%@ page contentType="text/html;charset=GB2312"%>
乘法表
<%
for(int j=1;j<=9;j++)
{
for(int i=1;i<=j;i++)
{
int n=i*j;
(i+"×"+j+"="+n+" ");
}
("
");
}
%>
页面
四、实验结果分析
1、默认的端口号为8080,若修改,在conf目录下的文件中修改端口号。
2、设置虚拟目录。在conf目录下的中前加入:
第二章 JSP页面与JSP标记
实验1 JSP页面的基本结构
一、实验目的
本实验的目的是让学生掌握怎样在JSP页面中使用成员变量,怎样使用Java程序片、Java表达式。
二、实验要求
本实验将用户输入的单词按字典顺序排序。需要编写两个JSP页面,名字分别为和。
三、实验内容
1)页面有一个表单,用户通过该表单输入若干个单词,并提交给页面。
2)负责排序单词,并将排序的全部单词显示给用户。
四、实验结果
实验所用代码如下:
<%@ page contentType="text/html;charset=GB2312"%>
<%@ page contentType="text/html;charset=GB2312"%>
<%@ page import=".*"%>
<%!
TreeSet
public void addWord(String s)
{
String word[] = (" ");
for(int i=0;i<;i++)
{
(word[i]);
}
}
%>
<%
String str = ("word");
addWord(str);
Iterator
while())
{
String word = ();
(" "+word);
}
%>
页面
页面
五、实验结果分析
1、jsp页面由html标记、jsp标记、成员变了和方法的声明、java程序片和java表达式组成。
2、jsp页面中的成员变量是被所有用户共享的变量。Java程序片可以操作成员变了,任何一个用户对jsp页面成员变量操作的结果,都会影响到其他用户。
实验2 JSP指令标记
一、实验目的
本实验的目的是让学生掌握怎样在JSP页面中使用include指令标记在JSP页面中静态插入一个文件内容。
二、实验要求
该实验要求使用include指令标记使得每个页面都包含导航条。在进行试验之前,将名字是的文件保存到本实验所使用的web服务目录中。
三、实验内容
编写3个JSP页面。
1)使用include指令静态插入文本文件。
2)使用include指令静态插入文件。
3)使用include指令静态插入。
四、实验结果
所运行代码如下:
<%@ page contentType="text/html;charset=GB2312"%> 链接到页面1
<%@ page contentType="text/html;charset=GB2312"%>
这是页面1
<%@ include file="" %>
<%@ page contentType="text/html;charset=GB2312"%>
这是页面2
<%@ include file="" %>
<%@ page contentType="text/html;charset=GB2312"%>
这是页面3
<%@ include file="" %>
页面
页面
页面
五、实验结果分析
1、include指令标记是在jsp页面出现该指令的位置处,静态的插入一个文件。被插入的文件必须是可访问和可使用的。Include指令标记是在编译阶段就处理所需要的文件,被处理的文件在逻辑和语法上依赖与当前jsp页面,优点是执行速度快。
实验3 JSP动作标记
一、实验目的
本实验的目的是让学生掌握怎样在JSP页面中使用include标记动态加载文件,使用forward实现页面的转向。
二、实验要求
编写三个JSP页面:、和。
三、实验内容
1)页面使用include动作标记动态加载页面,并将一个文件的名字传递给被加载的页面。
2)页面负责根据页面传递过来的文件名字进行文件的读取操作,如果该文件不存在就使用forward动作标记将用户转向。
3)负责显示错误信息。
四、实验结果
实验所用代码如下:
<%@ page contentType="text/html;charset=GB2312"%>
读取名字是的文件:
<%@ page contentType="text/html;charset=GB2312"%>
<%@ page import=".*"%>
This is .
<%
String s= ("file");
File f=new File(s);
if())
{
("
文件"+s+"的内容:");
FileReader in=new FileReader(f);
BufferedReader bIn=new BufferedReader(in);
String line=null;
while((line=())!=null)
{
("
"+line);
}
}
else
{
%>
<%
}
%>
<%@ page contentType="text/html;charset=GB2312"%>
This is .
<%
String s= ("mess");
("
本页面得到的信息:"+s);
%>
页面
页面
五、实验结果分析
1、include动作标记是在jsp页面运行时才处理加载的文件,被加载的文件在逻辑和语
法上独立与当前jsp页面,include指令标记可以使用param子标记向被加载的jsp
文件传递信息。
第三章 Tag文件与Tag标记
实验1 JSP页面的基本结构
一、实验目的
本实验的目的是让学生灵活掌握在Tag标记中使用标记体。
二、实验要求
编写一个JSP页面和一个Tag文件。JSP页面通过调用Tag文件在表格中的单元格显示文本,该JSP页面通过使用标记体将要显示的文件传递给被调用的Tag文件。
三、实验内容
1)页面使用带标记体的tag标记来调用tag文件。
2)使用
实验所用代码如下:
实验1
<%@ page contentType="text/html;charset=GB2312"%>
<%@ taglib tagdir="/WEB-INF/tags" prefix="ok"%>
表格每行重复显示信息
页面
五、实验结果分析
1、tag文件中可以有html标记符、特殊的指令标记、成员变了和方法、java程序片和java表达式。
2、jsp页面使用tag标记动态执行一个tag文件。
3、当jsp页面调用一个tag文件时可能希望动态地向该tag文件传递信息,那么就可以使用带有标记体的tag标记来执行一个tag文件。
实验2 使用attribute指令
一、实验目的
本实验的目的是让学生灵活掌握在Tag标记中使用attribute指令。
二、实验要求
编写一个Tag文件,该Tag文件负责显示日历。编写一个JSP页面,该JSP页面使用Tag标记调用文件,并且向文件传递年份和月份。
三、实验内容
1)通过tag标记调用文件,并且向文件传递年份和月份。
2)文件根据jsp页面传递过来的年份和月份显示日历。该文件能对jsp页面传递过来的数据进行判断,比如,如果jsp页面传递过来的数据不是数值型数据,tag文件负责显示错误信息。
四、实验结果
实验所用代码如下:
实验2
<%@ page contentType="text/html;charset=GB2312"%>
<%@ taglib tagdir="/WEB-INF/tags" prefix="rili"%>
调用Tag文件来显示日历.
<%@ tag pageEncoding="GB2312" %>
<%@ tag import=". *" %>
<%@ attribute name="year" required="true" %>
<%@ attribute name="month" required="true" %>
<%
int y=1999,m=1;
String [] day=new String[42];
try
{
y=(year);
m=(month);
Calendar rili=();
(y,m-1,1);*" %> <%@ attribute name="str" required="true" %>
<%@ variable name-given="wordList" variable-class="" scope="AT_END" %>
<%
ArrayList
String regex="[\\s\\d\\p{Punct}]+";
String words[]=(regex);
for(int i=0;i<;i++){
(words[i]);
}
("wordList",list);
%>
页面
五、实验结果分析
1、Tag文件可以使用variable指令把一个对象返回给调用它的jsp页面
Tag文件使用variable指令给出返回的对象的名字、类型和有效范围:<%@ variable name-given=“对象名字”variable-class=“对象的类型”
scope=“有效范围”%>
第4章 JSP内置对象
实验1 request对象
一、实验目的
本实验的目的是让学生掌握怎样在JSP中使用内置对象request。
二、实验要求
通过JSP页面和Tag文件实现数字的四则运算,要求编写两个JSP页面和及一个Tag文件。使用内置对象接受提交的数据,然后将计数任务交给Tag文件去完成。
三、实验内容
1)页面提供一个表单,用户可以通过表单输入两个数、选择四则运算符号,并将输入的两个数和所选择的运算符号提交给页面。
2)使用内置对象页面提交的数据,然后将计算任务交给Tag文件去完成。
3)要求使用attribute指令得到页面传递过来的书和运算符号,使用variable指令将运算结果返回给页面。
四、实验结果
实验所用代码如下:
<%@ page contentType="text/html;charset=GB2312"%>
<%@ tag pageEncoding="GB2312" %>
<%@ attribute name="numberA" required="true" %> <%@ attribute name="numberB" required="true" %> <%@ attribute name="operator" required="true" %> <%@ variable name-given="result" scope="AT_END" %> <% try
{
double a=(numberA);
double b=(numberB);
double r=0;
if("+"))
{
r=a+b;
}
else if("-"))
{
r=a-b;
}
else if("*"))
{
r=a*b;
}
else if("/"))
{
r=a/b;
}
("result",(r));
}
catch(Exception e){
("result","发生异常:"+e);
}
%>
页面
页面
五:实验结果分析
1、内置对象request的作用就是用来接收客户端提交的请求
2、request对象用的比较多的方法是getParameter方法。
request对象的getParameter方法根据指定的参数,获取客户端提交的信息。
其语法规则如下:
<% String name= (“txtName”)%>
其中,name是一个字符串变量。txtName是客户端提交信息中的一个字段名。
3、下面的就是在实验里面request的使用
<%
String a=("numberOne");
String b=("numberTwo");
String operator=("operator")
实验2 responese对象
一、实验目的
本实验的目的是掌握怎样使用response对象动态响应用户的请求。
二、实验要求
编写两个JSP页面和页面,页面使用response对象做出动态响应。
三、实验内容
1)提供表单,用户在表单中输入一个代表圆的半径的数字,提交给页面。
2)页面首先使用request对象获得提交的数字,然后根据数字的大小做出不同的响应。如果数字小于等于0或者大于100,response对象调用setCountType(String s)方法将contentType属性的值设置为text/plain,同时输出“半径不合理”;如果数字大于0并且小于等于100,response对象调用setContentType(String s)方法将contentType属性的值设置为image/jpeg,并绘制一个圆;如果用户在页面输入了非数字,response对象调用sendRedirect(URL url)方法将用户重定向到。
四、实验结果
实验所用代码如下:
<%@ page contentType="text/html; charset=GB2312" %>
<%@ page contentType="text/html; charset=GB2312" %>
<%@ page import=".*" %>
<%@ page import=".*" %>
<%@ page import="" %>
<%@ page import="" %>
<%@ page import="" %>
<%
String R=("radius");
(R);
try
{
double number=(R);
if(number <=0 || number >100)
{
("text/plain;charset=GB2312");
(number + "作为圆的半径不合理");
}
else if(number>0 && number<=100)
{
("image/jpeg");
int width =100,height =100;
BufferedImage image =new BufferedImage(width,height,;
Graphics g = ();
;
(0,0,width,height);
Graphics2D g_2d = (Graphics2D)g;
Ellipse2D circle = new (0,0,number,number);
;
(circle);
();
OutputStream outClient = ();
JPEGImageEncoder encoder = (outClient);
(image);
}
}
catch(Exception e)
{
("");
}
%>
1、在输入要求的范围以内:
页面
页面
2、当输入的数据不符合要求的结果显示:
页面
页面
五、实验结果分析:
1、response的作用就是把服务器端的数据以HTTP的格式发送到客户
端浏览器
2、与request相比,它的功能和request对象的功能相反。request
对象用于得到用户提交的信息而response对象是向用户发送信息,两者结合起来完成动态页面的交互功能。
3、response对象的主要方法:
sendRedirect():页面重定向方法
setStatus():设置状态行方法
setContentType():设置文本类型方法
实验3 session对象
一、实验目的
本实验的目的是让学生掌握怎样使用session对象存储和用户有关的数据。
二、实验要求
使用session对象模拟购物车。编写两个JSP页面和。
三、实验内容
1)用户在页面通过超链接将自己要购买的图书信息传递到页面。
2)orderForm页面将用户购买的图书信息存储到session对象中,然后生成一个图书订单并显示给用户。
四、实验结果:
实验所用代码如下:
<%@page contentType="text/html; charset=GB2312" %>
选择要购买的图书
Java面向对象设计(34元) |
JSP程序设计(34元) |
XML程序设计(34元) |
<%@page contentType="text/html;charset=GBK" %>
<%@page import=".*" %>
<%
String book = ("bookMess");
if(book != null){
StringTokenizer fenxi = new StringTokenizer(book,"@");
String bookName = ();
String bookISBN = ();
(bookISBN,book);
}
%>
图书订单
<%= bookName %> | <%= isbn %> | <%= price %> |
页面
orderForm页面
五、实验结果分析:
1、session的作用就是记住客户的连接信息,可以使用会话对象(session)。