在项目中可能有很多相同的jsp页面表示功能,这时可以使用自定义的tag进行定义,渐少重复的工作量便于日后维护!

下面就基于struts2进行自定义标签的定义与实现:

首先:自定义类MyTag继承struts2的Component

package cookielogin;

import java.io.IOException;
import java.io.Writer; import org.apache.struts2.components.Component; import com.opensymphony.xwork2.util.ValueStack; public class MyTag extends Component {
private ValueStack stack;
private String text;
private String name;
private String defaultValue; @Override
public boolean start(Writer writer) {
<span style="white-space:pre">		</span>//这里进行页面的输出
try {
writer.write("<h1>" + this.text + "</h1>");
writer.write("<input name='text' value=");
writer.write(this.getName());
writer.write(" name='" + this.getName() + "'>");
} catch (IOException e) {
e.printStackTrace();
}
return super.start(writer);
} public MyTag(ValueStack stack) {
super(stack);
this.stack = stack;
} public ValueStack getStack() {
return stack;
} public void setStack(ValueStack stack) {
this.stack = stack;
} public String getText() {
return text;
} public void setText(String text) {
this.text = text;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getDefaultValue() {
return defaultValue;
} public void setDefaultValue(String defaultValue) {
this.defaultValue = defaultValue;
} }

2:指定标签类MyTagSupport继承ComponentTagSupport

package cookielogin;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.apache.struts2.components.Component;
import org.apache.struts2.views.jsp.ComponentTagSupport; import com.opensymphony.xwork2.util.ValueStack; public class MyTagSupport extends ComponentTagSupport { private static final long serialVersionUID = 3586338980857274359L; String name;
String text; @Override
public Component getBean(ValueStack stack, HttpServletRequest req,
HttpServletResponse res) {
return new MyTag(stack);
} @Override
// 设置bean值
protected void populateParams() {
System.out.println("开始设置参数!populateParams");
MyTag tag = (MyTag) getComponent();
tag.setName(name);
tag.setText(text);
tag.setDefaultValue("我就是默认值!咋滴!!");
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getText() {
return text;
} public void setText(String text) {
this.text = text;
} }

java代码完成后,进行配置文件的编写,在WEB-INF/tlds 新建自定义文件tags-custom.tld

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE taglib PUBLIC
"-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> <taglib>
<tlib-version>2.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>ctags</short-name>
<uri>http://www.cml.com/tags-custom</uri>
<description>
<![CDATA[
<p>This is custom tag.</p>
]]>
</description> <tag>
<description><![CDATA[我自定义的tag]]></description>
<name>myTag</name>
<tag-class>cookielogin.MyTagSupport</tag-class>
<body-content>JSP</body-content>
<attribute>
<description><![CDATA[这个是我自定义的标签]]></description>
<name>text</name>
<required>true</required>
</attribute>
<attribute>
<description><![CDATA[这个是我自定义的标签]]></description>
<name>name</name>
<required>true</required>
</attribute>
<attribute>
<description><![CDATA[这个是我自定义的标签]]></description>
<name>defaultValue</name>
<required>false</required>
</attribute>
<dynamic-attributes>false</dynamic-attributes>
</tag> </taglib>

前提基础工作完成后,在页面引用:

<%@taglib prefix="d" uri="http://www.cml.com/tags-custom"%>

使用:

<d:myTag text="hhahh" name="sdfsd"></d:myTag>

访问页面后出现:

基于struts2的自定义标签实现完毕!虽然功能很简单,但是基本功能已经实现,可以根据项目的实际需要进行编辑!

struts2 自定义tag标签的更多相关文章

  1. 自定义tag标签-实现long类型转换成Date类型

    数据库里存储的是bigint型的时间,entity实体中存放的是long类型的标签,现在想输出到jsp页面,由于使用的是jstl标签,而要显示的是可读的时间类型,找来找去有个 fmt:formatDa ...

  2. Jsp 自定义tag标签

    1转自:https://blog.csdn.net/yusimiao/article/details/46835617 Jsp自定义tag标签 自定义tag标签的好处 程序员可以自定一些特定功能的标记 ...

  3. 自定义tag标签的方法

    JSP1.0中可以通过继承TagSupport或者BodyTagSupport来实现自定义的tag处理方法. JSP2.0中也支持另外一种更为简单的自定tag的方法,那就是直接讲JSP代码保存成*.t ...

  4. jsp如何自定义tag的标签库?

    虽然和上一次的使用自定义的tld标签简化jsp的繁琐操作的有点不同,但是目的也是一致的.自定义tag比较简单. 1.新建tag标签 在WEB-INF目录下新建一个tags的文件夹,是自定义tag标签的 ...

  5. Struts2自定义标签4自定义分页标签

    第一步:webroot/web-inf下的str.tld文件 <?xml version="1.0" encoding="UTF-8"?> < ...

  6. Struts2自定义标签3模仿原有的s:if s:elseif s:else自定义自己的if elsif else

    第一步:webroot/web-inf下简历str.tld文件 <?xml version="1.0" encoding="UTF-8"?> < ...

  7. Struts2自定义标签2自定义一个按班级id查询出该班级下的学生,存放进值栈,并遍历出来。

    Struts2自定义标签的流程概念: (1)需要两个类:标签类(继承相应的tag类),基本类(继承Component).标签类专门负责从客户端取得用户输入的一些属性,这个普通的jsp自定义标签一样,取 ...

  8. 自定义简单的struts2的s标签

    一:自定标签前需要了解的知识: BodyTagSupport类的方法: 编写标签对应的实现类时,需要重载BodyTagSupport类几个方法:doStartTag(), setBodyContent ...

  9. [JavaWeb基础] 012.Struts2 自定义标签使用

    在做开发中,我们会把一些比较经常使用到的代码封装起来,这样可以加快开发的速度和减少错误,并且在修改bug可以一次修改多次修复.那么在前端页面上,如果我们要经常用到公用的显示功能,并涉及到服务端逻辑操作 ...

随机推荐

  1. idea中哪些好用到飞起的插件,偷懒神器

    idea中开发人员的偷懒神器-插件  本期推荐一些开发人员常用的一些idea插件.偷懒神器在此,不再秃头! 1. idea安装插件的方法.  file->setting->plugins ...

  2. 浅析Java7中的ConcurrentHashMap

    引入ConcurrentHashMap 模拟使用hashmap在多线程场景下发生线程不安全现象 import java.util.HashMap; import java.util.Map; impo ...

  3. Redis学习与应用-位图

    什么是位图 位图bitmap是通过一个bit来表示某个元素对应的值或者状态,是由一组bit位组成,每个bit位对应0和1两个状态,虽然内部还是采用string类型进行存储,但是redis提供了直接操作 ...

  4. Java IO 流-- 字节数组流ByteArrayInPutStream ByteArrayOutPutStream

    字节数组流输于缓冲流,放在jvm内存中,java可以直接操作.我们使用时可以不用关闭,交给GC垃圾回收机制处理. 当然我们为了保持良好习惯和代码一致性也可以加上关闭语句. 当其实我么打开ByteArr ...

  5. sqlilab less15-17

    less15 试了很多符号,页面根本不显示别的信息,猜测为盲注 可是怎么检测闭合? 万能密码登录 最终试出来'闭合 uname=1' or 1=1 # 接下来就要工具跑 less16 同上用万能密码试 ...

  6. PHP $_FILES的应用

    关于文件上传这块,如果处理不好的话,很容易成为黑客入侵的开口,例如黑客在你这个上传接口里放一段木马的文件,那只能祝你好运了. 所以,我们上传文件的时候都会先判断, 但是一般的操作是先上传,再判断,如果 ...

  7. tp5 -- join注意事项

    使用数据库关联查询的时候,有时候会避免不了两个表格字段名称都一样的尴尬, 这时候管理查询出来的只有其中一个表格字段名称的数据,因为在相同字段名称的情况下,数据会自动覆盖. 这时候,我们只需要给其中一个 ...

  8. thinkphp5.1生成缩略图很模糊

    缩略图一定要从大分辨率往小生成 $image->thumb(400,400,\think\Image::THUMB_CENTER)->save(Env::get('root_path'). ...

  9. Win10 及 Google 浏览器显示界面异常

    win10 和 google 界面显示异常 win10 个别 ui 组件花屏,google 界面直接黑屏 解决方式 更新集成显卡或者重装显卡驱动,最好使用 驱动人生 !!!

  10. 自建Git服务器 - 创建属于你自己的代码仓库

    最近有线上朋友私信问我怎么搭建个人博客,也有咨询我个人项目的代码是如何保管的,还有一个朋友问我买了服务器玩了一段时间,等新鲜感过了就不知道做什么了. 关于这些问题并没有一个标准答案,每个人都有自己的使 ...