java自定义标签获得session等一些属性

本文深入探讨了自定义标签的实现方法,包括如何使用Tag接口、JspTag接口以及具体应用示例,同时介绍了如何利用Spring框架进行标签注入,提供了详细的操作步骤和代码演示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自定义标签的主要接口类
TagSupport 使用最为频繁的类,可设置属性。
BodyTagSupport 可以处理body体部分的内容,使用不是很多。
SimpleTagSupport 简单标签实现类,是JSP2.0以后添加的新类,可以快速开发自定义标签。

JspTag接口:
所有的标签处理类,都要实现JspTag接口。这个接口只是一个标识接口,它里面没有定义任何方法。

Tag接口:定义了所有传统标签处理类要实现的基本方法。
[color=darkblue] setPageContext(PageContext ctx)由Servlet容器调用。向当前的标签处理类传递当前PageContext对像。
setParent(Tag t) – 由Servlet容器调用此方法,向当前Tag对象传递父标签的Tag对象。
doStartTag() – 当遇到标签体开始标记时执行的方法,需要用户实现。
doEndTag() – 当遇到标签体结束标记时执行的方法。需要用户实现。[/color]

其中doStartTag和doEndTag方法都要求用户返回一个int类型的值,此值决定标签的后续部分如何处理。
doStartTag的两个返回值是:
Tag.SKIP_BODY:表示标签的主体部分将被忽略。
If the TagLibraryDescriptor file indicates that the action must always have an empty action, by an <body-content> entry of "empty", then the doStartTag() method must return SKIP_BODY.
Tag.EVAL_BODY_INCLUDE:表示标签的主体部分将被正常执行。
Otherwise, the doStartTag() method may return SKIP_BODY or EVAL_BODY_INCLUDE
doEndTag的两个返回值是:
Tag.SKIP_PAGE:表示停止标签后面的JSP代码的执行。
Tag.EVAL_PAGE:表示按正常顺序执行标签的后续JSP代码。

[b]获得session方法1:[/b] 自定义标签与spring注入[url]http://tcrct.iteye.com/blog/258657[/url]
public class Options extends RequestContextAwareTag{

public int doStartTagInternal() throws JspTagException {
JspWriter out = pageContext.getOut(); // 重要
StringBuffer sb = new StringBuffer();
try {

sb.append(createHtml());

out.print(sb.toString());

} catch (Exception e) {
e.printStackTrace();
}

return EVAL_PAGE; // 表示处理完标签后继续执行以下的JSP网页
// return SKIP_PAGE; //表示不处理接下来的JSP网页
}

public string createHtml(){
...........
JdbcTemplate jdbc = (JdbcTemplate)this.getRequestContext().getWebApplicationContext().getBean("jdbcTemplate");
...............
}

}

直接使用变量pageContext


[b]获得session方法2:[/b]
 
public class PerssionTag extends SimpleTagSupport{
......
PageContext page = (PageContext) this.getJspContext();
......
}


[b]获得session方法3:[/b]
1.继承TagSupport, 或者Tag
2.定义private PageContext pageContext;
3.实现Tag接口的方法:
public void setPageContext(final javax.servlet.jsp.PageContext pageContext) { 

this.pageContext=pageContext;

}


JSP容器通过上面的方法调用标签,而且上面的方法用来设置标签的PageContext

pageContext.getOut();// 获取JSP页面的输出流 out 
pageContext.getRequest();// 获取JSP页面的请求对象 request
pageContext.getSession();// 获取JSP页面的会话对象 session
pageContext.getServletContext();// 获取JSP页面的应用对象 application[Page]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值