JSP
网页应用程序开发
网页应用程序开发
实验目的:掌握标记文件的创建和使用
1 使用标记体
编写单元格中重复显示文本的Tag文件,JSP页面通过使用标记体将要显示的文本传递给Tag文件
创建giveMess.jsp,引入标记库:
<%@ taglib tagdir="/WEB-INF/tags" prefix="ok"%>
在页面中添加表格和自定义标记:
<table border=2> <ok:handleMess> 南非世界杯 </ok:handleMess> <ok:handleMess> 冠军是西班牙 </ok:handleMess> <ok:handleMess> 亚军是荷兰 </ok:handleMess> </table>
在/WEB-INF/tags下创建handleMess.tag
<tr> <td> <jsp:doBody/> </td> <td> <jsp:doBody/> </td> <td> <jsp:doBody/> </td> </tr>
在浏览器中查看giveMess.jsp
2 使用属性(Attribute)
编写显示日历的Tag文件,JSP页面使用标记属性将年份和月份传递给Tag文件
创建giveYearMonth.jsp,引入标记库:
<%@ taglib tagdir="/WEB-INF/tags" prefix="rili" %>
在页面中添加日历的自定义标记:
<rili:ShowCalendar year="2012" month="12" />
在/WEB-INF/tags下创建ShowCalendar.tag
<%@ tag pageEncoding="GB2312" %>
<%@ tag import="java.util.*" %>
<%@ attribute name="year" required="true" %>
<%@ attribute name="month" required="true" %>
<%
int y=1999, m=1;
String [] day=new String[42];
try {
y=Integer.parseInt(year);
m=Integer.parseInt(month);
Calendar rili=Calendar.getInstance();
rili.set(y, m-1, 1);//将日历翻到year年month月1日,注意0表示一月...11表示十二月
int 星期几=rili.get(Calendar.DAY_OF_WEEK)-1;
int dayAmount=0;
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
dayAmount=31;
if(m==4||m==6||m==9||m==11)
dayAmount=30;
if(m==2)
if(((y%4==0)&&(y%100!=0))||(y%400==0))
dayAmount=29;
else
dayAmount=28;
for(int i=0;i<星期几;i++)
day[i]="--";
for(int i=星期几, n=1; i<星期几+dayAmount; i++){
day[i]=String.valueOf(n) ;
n++;
}
for(int i=星期几+dayAmount;i<42;i++)
day[i]="--";
}
catch(Exception exp){
out.print("年份或月份不合理");
}
%>
<h3><%=year %>年<%=month %>月的日历:</h3>
<table border=1>
<tr>
<th>星期日</th>
<th>星期一</th>
<th>星期二</th>
<th>星期三</th>
<th>星期四</th>
<th>星期五</th>
<th>星期六</th>
</tr>
<%
for(int n=0;n<day.length;n=n+7){
%>
<tr>
<%
for(int i=n;i<7+n;i++) {
%>
<td><%= day[i] %></td>
<%
}
%>
</tr>
<%
}
%>
</table>
在浏览器中查看giveYearMonth.jsp
3 使用变量(Variable)
编写分解出字符串中单词的Tag文件,JSP页面显示Tag返回的所有单词
创建giveString.jsp
<%@ taglib tagdir="/WEB-INF/tags" prefix="words" %>
<%
String s="South Africa World Cup(Espana is champion)";
%>
<words:GetWord str="<%=s %>"/>
字符串:<br><h3><%=s%><br></h3>中的全部单词:
<%
for(int i=0;i<wordList.size();i++){
out.print("<br>"+wordList.get(i));
}
%>
在/WEB-INF/tags下创建getWord.tag
<%@ tag import="java.util.*" %>
<%@ attribute name="str" required="true" %>
<%@ variable name-given="wordList" variable-class="java.util.ArrayList" scope="AT_END" %>
<%
ArrayList<String> list=new ArrayList<String>(); //返回给JSP页面的list对象
String regex="[\\s\\d\\p{Punct}]+"; //空格、数字和符号(!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~)组成的正则表达式
String words[]=str.split(regex);
for(int i=0;i<words.length;i++){
list.add(words[i]);
}
jspContext.setAttribute("wordList",list); ////将list对象返回给JSP页面
%>
在浏览器中查看giveString.jsp
博主 in 教程 09:53上午 9月 24, 2012
Tags: 实验