2_1本实验的目的是掌握怎样在JSP页面中使用成员变量,怎样使用Java程序片和Java表达式。
2_2 本实验的目的是掌握怎样在JSP页面中使用include指令在JSP页面中静态插人一个文件的内容。
2_3本实验的目的是掌握怎样在JSP页面中使用include标记动态加载文件;使用forward动作标记实现页面的转向。
实验2_1:编写两个JSP页面,名字分别为input.jsp和people.jsp.
input.jsp的具体要求:该页面有一一个表单,用户通过该表单输人自己的姓名并提交给people.jsp页面。
people.jsp的具体要求:
(1)JSP页面有名字为personList,类型是StringBuffer以及名字是count,类型为int的成员变量。
(2)JSP页面有publicvoidjudge()方法,该方法负责创建personList对象,当count的值是0时,judge ()方法创建personList对象。
(3) JSP页面有public void addPerson(String p)的方法,该方法将参数p指定的字符串尾加到成员变量personList,同时将count作自增运算。
(4)JSP页面在程序片中获取input.jsp页面提交的姓名,然后调用judge()创建personList对象,调用addPerson方法将用户的姓名尾加到成员变量personList。
(5)如果input.jsp页面没有提交姓名,或姓名含有的字符个数大于10,就使用jsp:forwardpages"要转向的页面"/标记将用户转到input.jsp页面。
(6)通过Java表达式输出personList和count的值。
**实验2_2:**编写一个JSP页面includeHello.jsp,使用include指令在JSP页面中静态插入hello.txt的内容。要求用“记事本”编写一个txt文件hello. txt。 hello. txt的每行有若千个英文单词,这些单词之间用空格分隔,每行之间用“<
”分隔,如下:
hello. txt
bird apple boy red moon
shop throw ball book welcome
includeHello.jsp使用page指令设置contentType属性的值为" text/plain",使用include指令静态插人hello.txt文件。
**实验2_3:**编写4个JSP页面: one.jsp. two.jsp、three.jsp和error.jsp。 one.jsp、two.jsp和three.jsp页面都含有一个导航条,以便让用户方便地单击超链接访问这三个页面。要求这三个页面通过使用include动作标记动态加载导航条文件head.txt。导航条文件head.txt的内容如下:
head. txt
<%@ page contentType = “text/html;charset = gb2312” %>
one.jsp页面 | two.jsp页面 | three.jsp页面 |
实验2_1参考代码:
Input.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body bgcolor = cyan><FONT size = 3>
<form action="people.jsp" method=get name =form>
请输入姓名:<input type="text" name="name">
<br><input type="submit" value="送出" name = submit>
</form>
</body>
</html>
People.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body bdcolor = yellow><font Size = 3>
我的 JSP page <br>
<%! int count;
StringBuffer personList;
public void judge(){
if(count==0){
personList=new StringBuffer();
}
}
public void addPerson(String p){
if(count==0){
personList.append(p);
}else{
personList.append(","+p);
}
count++;
}
%>
<%
String name=request.getParameter("name");
if(name==null||name.length()==0||name.length()>10){
%><jsp:forward page="input.jsp"/><%
}
judge();
addPerson(name);
%>
<br> 目前共有<%= count %>人浏览量该页面,他们的名字是:
<br> <%= personList %>
</font>
</body>
</html>
实验2_2参考代码:
includehello.jsp
<%@ page language="java" contentType="text/plain; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><body><font size=4 color=blue>
<%@include file="hello.txt" %>
</font></body></html>
实验2_3参考代码:
one.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<head>
<jsp:include page = "head.txt"/>
</head>
<html>
<body bgcolor = yellow>
<form action = "" method = get name = form>
请输入1-100之间的整数:<input type = "text" name ="number">
<br> <input type = "submit" value ="送出" name ="submit" >
</form>
<%String num = request.getParameter("number");
if(num == null)
num= "0" ;
try{
int n= Integer.parseInt(num);
if(n>=1&&n<=50){
%> <jsp:forward page= "two.jsp">
<jsp:param name = "number" value= "<%= n %>"/>
</jsp:forward>
<% }
else if(n>50&n<=100){
%> <jsp:forward page = "three.jsp" >
<jsp:param name = "number" value= "<%= n %>"/>
</jsp:forward >
<% }
else if(n> 100){
%> <jsp:forward page = "error.jsp" >
<jsp:param name = "number" value= "<%= n %>"/>
</jsp:forward >
<% }
}
catch(Exception e){
%> <jsp:forward page = "error.jsp" >
<jsp:param value="<%= e.toString()%>" name="mess"/>
</jsp:forward >
<% }
%>
</body>
</html>
two.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<head>
<jsp:include page = "head.txt"/>
</head>
<html>
<body bgcolor = yellow>
<p><font size = 2 color = blue>This is two.jsp</font>
<font size=3>
<% String s = request.getParameter("number");
out.println("
纯递过来的值是"+ s);
%>
<BR><img src = "a.jpg" with = "<%= s %>" height = "<%= s%>"></img>
</font>
</body>
</html>
three.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<head>
<jsp:include page = "head.txt"/>
</head>
<html>
<body bgcolor = yellow>
<p><font size = 2 color=red>This is three.jsp</font>
<font size = 3>
<% String s =request.getParameter("number");
out.println("
传递过来的值是"+s);
%>
<BR><img src = "a.jpg" width = "<%= s %>" height = "<%= s%>"></img>
</font>
</body>
</html>
error.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<head>
<jsp:include page = "head.txt"/>
</head>
<html>
<body bgcolor = yellow>
<p><font size =5 color = red>This is error.jsp</font>
<font size=2>
<% String s = request.getParameter("mess");
out.println("
传递过来的错误信息"+s);
%>
<BR><img src = "back.jpg" width = "120" height = "120"></img>
</font>
</body>
</html>
四、实验结果
实验2_1结果截图:
(汉字乱码问题还不知怎么解决,有知道的欢迎告知,不胜感激)
1.一个JSP页面可由普通的HTML标记、JSP标记、成员变量和方法的声明、Java程序片和Java表达式组成。JSP引擎把JSP页面中的HTML标记交给用户的浏览器执行显示,负责处理JSP标记、变量和方法,同时负责运行Java程序片、计算Java表达式,并将需要显示的结果发送给用户的浏览器。
2.JSP页面中的成员变量是被所有用户共享的变量。Java程序片可以操作成员变量,任何–个用户对JSP页面成员变量操作的结果,都会影响其他用户。
3.如果多个用户访问一个JSP页面,那么该页面中的Java程序片就会被执行多次,分别运行在不同的线程中,即运行在不同的时间片内。运行在不同线程中的Java程序片的局部变量互不干扰,即一个用户改变Java程序片中的局部变量的值不会影响其.他用户的Java程序片中的局部变量。
4.page指令用来定义整个JSP页面的一些属性和这些属性的值。比较常用的两个属性是contentType和import。page 指令只能为contentType指定一个值,但可以为import属性指定多个值。
5.include指令标记是在编译阶段就处理所需要的文件,被处理的文件在逻辑和语法上依赖于当前JSP页面,其优点是页面的执行速度快;而include动作标记是在JSP页面运行时才处理文件,被处理的文件在逻辑和语法上独立于当前JSP页面,其优点是可以使用param子标记更灵活地处理所需要的文件。