标签类中要是能够取到 request 和 session 这样的对象,对于一个web开发员来说,那是一件多么幸福的事情啊!懂得了这个知识,标签开发与servlet结合的开发将变得随心所欲。
实例:
package com.wsy.baobaotao.front.tags;
import java.util.List;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
import org.springframework.util.StringUtils;
import com.wsy.baobaotao.base.cons.CommonConstant;
import com.wsy.baobaotao.front.entity.User;
public class PermissionTag extends TagSupport {
private static final long serialVersionUID = 1L;
private String authType;
@Override
public int doStartTag() throws JspException {
<span style="color:#ff0000;"><strong> HttpSession session = pageContext.getSession();
ServletRequest request = pageContext.getRequest();</strong></span>
User u = (User) session.getAttribute(CommonConstant.USER_CONTEXT);
System.out.println("/==================================/");
System.out.println(u);
boolean flag = hasPermission(authType, u);
if (flag) {
return EVAL_BODY_INCLUDE;
}
return SKIP_BODY;
}
private static boolean hasPermission(String authType, User u){
boolean hasPermission_flag = false;
if(StringUtils.isEmpty(authType) || u == null){
return false;
}
//String[] userPermisssions = {"admin", "manager", "user"};
List<String> userAurthTypes = u.getAuthTypes();
String[] permisssions = authType.split(",");
boolean flag = false;
for (String ua : userAurthTypes) {
for (String p : permisssions) {
if(ua.equals(p)){
hasPermission_flag = true;
flag = true;
break;
}
}// end inner for loop
if(flag){
break;
}
}// end outer for loop
return hasPermission_flag;
}
public String getAuthType() {
return authType;
}
public void setAuthType(String authType) {
this.authType = authType;
}
}
因为 继承了
TagSupport 类,所以就能够使用
pageContext
对象
来源: http://blog.sina.com.cn/s/blog_6b1c9ed50100ll5q.html
pageContext对象是JSP中很重要的一个内置对象,不过在一般的JSP程序中,很少用到它,所以知道request对象、response对象的人比较多,知道pageContext对象的人就比较少了。它是javax.servlet.jsp.PageContext类的实例对象,可以使用PageContext类的方法。实际上,pageContext对象提供了对JSP页面所有的对象及命名空间的访问,正如前面所介绍的一样,使用pageContext对象可以访问application对象、exception对象,还有session对象等。pageContext对象的方法可以访问除本身以外的8个JSP内部对象,还可以直接访问绑定在application对象、page对象、request对象、session对象上的Java对象。pageContext对象相当于JSP程序中所有对象功能的集成者。不过,这里存在着一个问题,既然可以直接访问JSP内部对象,为什么还要多此一举,通过pageContext对象来访问它们呢?这也正是pageContext对象应用较少的原因。话虽这样说,pageContext对象总是JSP中9个内置对象不可或缺的一部分,读者还是需要掌握它的用法的。
在JSP程序中,我们可以使用pageContext来代表pageContext对象:
|
pageContext对象的主要用法如下。
1)getOut()
该方法返回一个JspWriter类的实例对象,也就是JSP内置对象--out对象,可以往客户端写入输入流。它的使用方法如下::
JspWriter myout=pageContext.getOut(); myout.println("myout write: hello world"+"<br>"); out.println("out write: hello world"); %> 2)getSession() 该方法的返回值是一个HttpSession接口的实例对象,即JSP内置对象--session对象,可以保存不同用户的信息。它的使用方法如下:
|