* 编写PermissionComponent,该类需继承org.apache.struts2.components.Component类
package com.bjsxt.oa.web.tag;
import java.io.Writer;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.components.Component;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import com.bjsxt.oa.manager.AclManager;
import com.opensymphony.xwork2.util.ValueStack;
public class PermissionComponent extends Component {
private AclManager aclManager;
private int userId;
private String resourceSn;
private int pn;
public PermissionComponent(ValueStack stack, HttpServletRequest request) {
super(stack);
this.setAclManager(request);
}
@Override
public boolean start(Writer writer) {
boolean result = aclManager.hasPermissionByResourceSn(userId,
resourceSn, pn);
System.out.println("result=" + result);
// try {
// if (result) {
// writer.write("true");
// return result;
// }
// writer.write("false");
// } catch (IOException e) {
// e.printStackTrace();
// }
//当返回值为true时,body的内容被输出;false时,则被忽略,即不输出
return result;
}
@Override
public boolean end(Writer writer, String body) {
return super.end(writer, body);
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getResourceSn() {
return resourceSn;
}
public void setResourceSn(String resourceSn) {
this.resourceSn = resourceSn;
}
public int getPn() {
return pn;
}
public void setPn(int pn) {
this.pn = pn;
}
public void setAclManager(AclManager aclManager) {
this.aclManager = aclManager;
}
public void setAclManager(HttpServletRequest request) {
WebApplicationContext wac = WebApplicationContextUtils
.getRequiredWebApplicationContext(request.getSession()
.getServletContext());
this.aclManager = (AclManager) wac.getBean("aclManager");
}
}
* 编写PermissionTag类,该类需继承org.apache.struts2.views.jsp.ComponentTagSupport类
package com.bjsxt.oa.web.tag;
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 PermissionTag extends ComponentTagSupport {
private static final long serialVersionUID = 1631842497771460718L;
private int userId;
private String resourceSn;
private int pn;
@Override
public Component getBean(ValueStack stack, HttpServletRequest request,
HttpServletResponse arg2) {
return new PermissionComponent(stack, request);
}
@Override
protected void populateParams() {
super.populateParams();
PermissionComponent pct = (PermissionComponent) component;
pct.setUserId(userId);
pct.setPn(pn);
pct.setResourceSn(resourceSn);
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getResourceSn() {
return resourceSn;
}
public void setResourceSn(String resourceSn) {
this.resourceSn = resourceSn;
}
public int getPn() {
return pn;
}
public void setPn(int pn) {
this.pn = pn;
}
}
* 编写permission.tld文件,将该文件放到WEB-INF下面
<?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.2.3</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>my</short-name>
<uri>/jtime</uri>
<tag>
<name>permission</name>
<tag-class>com.bjsxt.oa.web.tag.PermissionTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>userId</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>resourceSn</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>pn</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
需要注意<body-content>JSP</body-content>这句话的含义,不同的参数表示对自定义标签的body的不同处理
* 在jsp中进行引用
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="my" uri="/WEB-INF/permission.tld"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transictional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>Tagtest</title>
</head>
<body>
This is my JSP page.
<br>
<my:permission userId='3' pn='1' resourceSn='orgmgr'>has</my:permission>
</body>
</html>
分享到:
相关推荐
实现登录,实现权限验证,自定义权限标签,人员角色资源的增删改查,集成spring+hibernate+struts2
6.使用拦截器实现权限验证 35 7.拦截器中的注解 37 8.使用PreResultListener实现回调 39 六、使用标签 40 1.基础表单标签 40 2.单选按钮和复选框: 41 3.三种方式实现下拉列表 41 4.二级联动 42 5.其它表单标签 44 6...
28.2.2 Java EE容器认证 220 29. LDAP认证 220 29.1概述 220 29.2在Spring Security中使用LDAP 221 29.3配置LDAP服务器 221 29.3.1使用嵌入式测试服务器 222 29.3.2使用绑定认证 222 29.3.3加载权限 223 29.4实现类 ...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接与浏览,Java源码下载 1个目标文件 摘要:Java源码,网络相关,HTTP Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件...
Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接与浏览,Java源码下载 1个目标文件 摘要:Java源码,网络相关,HTTP Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。 HashMap允许将null作为一个entry的key或者...