xx.tld标签开发之权限管理标签开发
来源:互联网 发布:真人快打x没有网络链接 编辑:程序博客网 时间:2024/06/05 05:51
以前将 xx.tld 类的自定义标签开发看得很神秘,其实它只是个纸老虎,其实它是相当的简单。要实现它,只需要三个步骤便可。
前沿: xx.tld 是一种正式的标签开发,每个标签要对应一个 java 类。
一、操作步骤:
1、创建标签的逻辑处理类;
2、创建 xx.tld 文件,用于对标签属性的定义与说明。文件放置的位置: WEB-INF/tld/ ;
3、jsp 页面头部引入标签,然后便可以 正常实用了。
二、下面按照这个步骤将 权限标签开发 代码贴出来。
1、创建标签的逻辑处理类;(PermissionTag.java)
- <span style="font-size:18px;">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 {
- // 因为 PermissionTag 继承了 TagSupport 所以可以使用 pageContext 来获取session对象
- HttpSession session = pageContext.getSession();
- ServletRequest request = pageContext.getRequest();
- 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;
- }
- }
- </span>
2、创建 xx.tld 文件,用于对标签属性的定义与说明。文件放置的位置: WEB-INF/tld/ ;(permission-tags.tld)
- <span style="font-size:18px;"><?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>1.2</tlib-version>
- <jsp-version>1.1</jsp-version>
- <short-name>html</short-name>
- <uri>http://com.wsy.baobaotao/html/permission</uri>
- <description>
- <![CDATA[customized taglib for our java development framework according to servlet Taglib]]>
- </description>
- <tag>
- <name>permission</name>
- <tag-class>com.wsy.baobaotao.front.tags.PermissionTag</tag-class>
- <body-content>JSP</body-content>
- <attribute>
- <name>authType</name>
- <required>true</required>
- <rtexprvalue>false</rtexprvalue>
- <description>
- <![CDATA[authType : admin/manager/user ; Multivalued please ',' space.]]>
- </description>
- </attribute>
- </tag>
- </taglib> </span>
3、jsp 页面头部引入标签,然后便可以 正常实用了。(permissionControl.jsp)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@taglib prefix="pager" tagdir="/WEB-INF/tags" %>
<%@taglib prefix="html" uri="http://com.wsy.baobaotao/html/permission" %>
<%
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/";
request.setAttribute("path", basePath);
%>
<html>
<head>
<base href="<%=basePath%>">
<title>用户创建成功</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript" src="${path}/js/commons/jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="${path}/js/commons/jquery.json-2.4.js"></script>
<style type="text/css">
body{
font-size: 12pt;
margin: 0;
padding: 0;
}
.button{
margin:0;
padding-left:5px;
padding-right:5px;
height: 30px;
line-height: 30px;
border: 2px solid black;
background-color: yellow;
}
</style>
</head>
<body>
<form action="${path }/user/loadUserList.shtml" id="user_loadUserList">
用户名:<input type="text" id="userName" name="userName" maxlength="20" value=""/>
<input type="submit" class="button" value="提交"/>
</form>
<br>
<html:permission authType="admin,manager">
<table id="friends" width="700" border="1" cellspacing="0" cellpadding="0" >
<caption style="margin-bottom:10px;">查看所有好友信息</caption>
<thead>
<tr bgcolor="yellow" height="30">
<th width="30%">用户名</th>
<th width="30%">密码</th>
<th width="40%">真是姓名</th>
</tr>
</thead>
<tbody>
<tr height="30">
<td colspan="3" align="center">没有数据</td>
</tr>
</tbody>
</table>
</html:permission>
</body>
<script type="text/javascript">
$(function(){
//alert("aaaaaaaaaaaaaaaa");
});
</script>
</html>
- xx.tld标签开发之权限管理标签开发
- JSP自定义标签开发(七)—— xx.tld标签开发之权限管理标签开发
- 自定义标签的开发之tld文件
- taglib和自定义标签的开发之tld文件
- 自定义标签开发之函数标签开发
- JSP自定义标签开发+TLD文件元素详解+实例
- JSP自定义标签开发+TLD文件元素详解
- JSP自定义标签开发+TLD文件元素详解
- JSP自定义标签开发+TLD文件元素详解
- JSP自定义标签开发+TLD文件元素详解
- JSP自定义标签开发+TLD文件元素详解
- tld标签配置---tld
- JSP自定义标签开发(八)—— xx.tag自定义标签开发之分页标签(jquery + div +css 美化)
- Android开发之--标签选择
- tld自定义标签之基础入门篇
- 自定义权限模块2——自定义tld标签
- springboot 自定义权限标签(tld),在freemarker引用
- TLD自定义标签
- 欢迎使用CSDN-markdown编辑器
- C++与C#互转
- iOS开发之WKWebView怎么加载请求并且传参数
- 将数据写入SD卡
- JAVA常用api — Object详解
- xx.tld标签开发之权限管理标签开发
- 最小距离之和 CODEVS
- java中的四种访问控制修饰符
- 斐波那契数列Java编程题
- mysql 查看事务
- WIN7使用Anaconda配置tensorflow(研究生狗)
- ORACLE读取CSV文件时对CSV格式的要求
- Django返回html和js代码
- 四大基本组件之Activity(生命周期)