中南民族大学计算机科学学院Java EE 实验3报告

  • 格式:pdf
  • 大小:168.21 KB
  • 文档页数:6

实验三JSP自定义标记编程
1.实验类型:设计型
2.实验目的
(1)进一步熟悉基于JDK+Netbeans环境的Web程序开发过程;
(2)掌握简单JSP自定义标记的编写;
(3)能设计标记库描述文件;
(4)掌握JSP自定义标记的组成结构及其使用;
(5)掌握标记处理程序的结构及其原理。
3.实验任务
开发一个自定义标记来实现将阿拉伯数字转换成银行领域使用的数字表示法(将“1”转换成
“壹”)。要求JSP页面展示如下:
1壹
12壹贰
123壹贰叁
1234壹贰叁肆
12345壹贰叁肆伍
123456壹贰叁肆伍陆
1234567壹贰叁肆伍陆柒
12345678壹贰叁肆伍陆柒捌
123456789壹贰叁肆伍陆柒捌玖
1234567890壹贰叁肆伍陆柒捌玖零

4.实验要求
(1)为上述标记开发至少三个文件(Java、tld和jsp文件);
(2)为上述应用建立一个工程;
(3)下面需要给出Java代码、tld文件和JSP代码。
5.JavaEE源代码
1、tag.java
packagecom.tag;
importjava.io.*;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.jsp.JspException;
importjavax.servlet.jsp.JspWriter;
importjavax.servlet.jsp.tagext.BodyTagSupport;

publicclasstagextendsBodyTagSupport{
privateStringheading=null;
@Override
publicintdoStartTag()throwsJspException{
returnEVAL_BODY_BUFFERED;
}

@Override
publicintdoEndTag()throwsJspException{
JspWriterout=pageContext.getOut();
Stringmg=((HttpServletRequest)pageContext.getRequest()).getContextPath()
+"\\";
Stringmessage=getBodyContent().getString().trim();
char[]toCharArray=message.toUpperCase().toCharArray();
try{
for(intn=0;nout.print(toCharArray[n]);
for(intn=toCharArray.length;n<20;n++)
out.print(" ");
for(intn=0;nif(toCharArray[n]=='1'){
out.print("壹");
}
if(toCharArray[n]=='2'){
out.print("贰");
}
if(toCharArray[n]=='3'){
out.print("叁");
}
if(toCharArray[n]=='4'){
out.print("肆");
}
if(toCharArray[n]=='5'){
out.print("伍");
}
if(toCharArray[n]=='6'){
out.print("陆");
}
if(toCharArray[n]=='7'){
out.print("柒");
}
if(toCharArray[n]=='8'){
out.print("捌");
}
if(toCharArray[n]=='9'){
out.print("玖");
}
if(toCharArray[n]=='0'){
out.print("零");
}
}
}catch(IOExceptionio){
}
returnEVAL_PAGE;
}
}
2、hellotag.tld

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd">
1.0
hellotag

hellotag
com.tag.tag
JSP


3、index.jsp
<%@pagecontentType="text/html"pageEncoding="UTF-8"%>

<%@tagliburi="WEB-INF/tlds/hellotag.tld"prefix="hello"%>


JSPPage


1


12


123


1234


12345


123456


1234567


12345678


123456789


1234567890




6.实验原理
JSP自定义标记可以看成是对JSP标准动作标记的一种扩展。当Web容器编译JSP页面遇到
自定义标记时,Web容器根据标记库指令调用标记处理程序进行处理,为实现Web容器与标记
处理程序良好的交互,,保证自定义标记的可移植性,标记处理器必须实现接口
javax.Servlet.jsp.taggext.Tag或javax.Servlet.jsp.tagext.BodyTag,其中,需要处理体内
容的标记实现javax.Servlet.jsp.tagext.BodyTag,不需要处理体内容的标记实现
javax.Servlet.jsp.tagext.Tag。每次在JSP页面中遇到自定义标记时,Web容器不需要都去
实例化一个新的标记处理程序实例,而是在一个标记实例池中寻找一个没有被标记处理程序实
例,然后初始化,使用它,最后释放他。
7.实验结果分析及心得体会
(1)实验结果分析
(2)心得体会
通过前阶段的学习已经了解JSP编程的一些方法和技巧,能够编写一些比较简单的JavaEE
程序。JSP自定义标记学习过后,成功的编写了本实验,它包括Java代码、tld文件和JSP代
码也就是标记处理器和标记库描述符(TLD文件)。在本实验中阿拉伯数字和大写数字之间的
空格的控制应十分小心,否则很可能是大写得数字无法做到左对齐,其控制代码如下:
for(intn=toCharArray.length;n<20;n++)
out.print(" ");

8.成绩评定
评语:
成绩:
教师签名:
日期:年月日