JSP

网页应用程序开发

JSP实验03 使用标记文件

实验目的:掌握标记文件的创建和使用

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


评论:

发表评论:
该文章禁用评论功能。