看一看jsp中定义一个字符串处理的方法:
复制代码代码如下:
<%!
String splitString(String str, int a) {
if (str != null && strtrim()length() > 0 && a > 0) {
// 取得该字符串的字节长度
int length = strgetBytes()length;
// 全部不包括汉字
if (strlength() == length) {
// 如果截取长度是字符串长度以内,就substring,否则就取这个字符串
if (a < strlength()) {
return strsubstring(0, a);
} else {
return str;
}
} // 含有汉字
else {
StringBuffer sb = new StringBuffer();
// 截取算法 遍历字符串,并且监测a值
for (int i = 0; i < strlength() && a > 0; i++) {
// 如果是汉字算2个长度。
if (strcharAt(i) >= '\u4e00' && strcharAt(i) <= '\u9fa5') {
// 如果是汉字且不是最后一个字符,就加上,否则不加
if (a > 1) {
sbappend(strcharAt(i));
a -= 2;
}
// 不是汉字只算一个长度
} else {
sbappend(strcharAt(i));
a--;
}
}
return sbtoString();
}
}
return "输入有误";
}
%>
该方法的功能是,传入一个字符串和长度,返回截取后的字符串,长度会按照汉字两个、字母数字一个的方式来统计,如果最后一个是汉字,那么这个汉字就放弃掉,绝不能出现半个汉字的情况。
jsp中定义方法,需要注意以下几点:
1,需要使用<%! %>这样的标签包起来,这是jsp中定义变量或者方法的标志。
2,如果在方法中需要使用内置对象out时,一定要在方法的参数列表中传过来,并且要让方法跑出一个IO异常。
3,方法的范围就不要定义了,反正就是内部使用,直接使用缺省范围的就可以了。我觉得上楼回答的不完全对,自定义标签,不一定就是tomcat给封装好了的,自己也可以实现接口,编写tld(标签库描述文件),然后标签创建成功,便可引入页面使用了。下面截一段API与大家讨论:
javaxservletjsptagext
Interface JspTag
All Known Subinterfaces:
BodyTag, IterationTag, LoopTag, SimpleTag, Tag
从上一段API内容中可以看出JspTag接口下又有BodyTag, IterationTag, LoopTag, SimpleTag, Tag几个子接口。
然后以SimpleTag接口为例,分享set_等方法之用意:
Method Summary(方法概要)
void doTag()
Called by the container to invoke this tag
当容器调用该方法时,唤醒该标签
JspTag getParent()
Returns the parent of this tag, for collaboration purposes
返回该标签的父标签
void setJspBody(JspFragment jspBody)
Provides the body of this tag as a JspFragment object, able to be invoked zero or more times by the tag handler
把JspFragment对象作为body提供给这个标签,能够被tag管理器调用0或多次。
void setJspContext(JspContext pc)
Called by the container to provide this tag handler with the JspContext for this invocation
设置上下文
void setParent(JspTag parent)
Sets the parent of this tag, for collaboration purposes
设置该标签的父标签
最后,一系列set方法,我觉得可以说成是对标签属性的设置
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)