本人所在学院正在开发一个项目,借这个机会研究了下StrutsMenu和TOMCAT的权限验证功能,在此给大家分享一下,希望能给初学者一点启发,也请大家提出建议,谢谢。
首先配置角色权限,在web.xml中配置如下
<security-constraint>
<web-resource-collection>
<web-resource-name>main function web</web-resource-name>
<url-pattern>*.jsp</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
<role-name>student</role-name>
<role-name>guest</role-name>
</auth-constraint>
</security-constraint>
<!--MD5验证-->
<login-config>
<auth-method>DIGEST</auth-method>
<realm-name>Login Realm</realm-name>
</login-config>
<security-role>
<role-name>admin</role-name>
</security-role>
<security-role>
<role-name>guest</role-name>
</security-role>
<security-role>
<role-name>student</role-name>
</security-role>
在TOMCAT的server.xml中配置JDBC域验证
<Realm className="org.apache.catalina.realm.JDBCRealm"
driverName="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mydb"
connectionName="root" connectionPassword="novell"
userTable="users" userNameCol="user_name" userCredCol="user_pass"
userRoleTable="user_roles" roleNameCol="role_name" />
<!--当然别望了在Mysql中建立相应的数据表和字段 -->
配置struts-menu插件,导入struts-menu2.4.2.jar,还需要jstl,standard库
struts-config.xml配置插件
<plug-in className="net.sf.navigator.menu.MenuPlugIn">
<set-property property="menuConfig"
value="/WEB-INF/menu-config.xml" />
</plug-in>
在menu-config.xml中制作菜单
<?xml version="1.0" encoding="UTF-8" ?>
<MenuConfig>
<Displayers>
<!--这里只用到ListMenu风格的菜单 -->
<Displayer name="ListMenu"
type="net.sf.navigator.displayer.ListMenuDisplayer" />
</Displayers>
<Menus>
<!--对应admin,student,guest三个权限的功能菜单 -->
<Menu name="adminMenu" title="admin function" roles="admin">
<Item name="add" title="admin-add"
toolTip="Show admin-add function" page="" />
<Item name="add" title="admin-del"
toolTip="Show admin-del function" page="" />
<Item name="extra functions" title="extra functions">
<Item name="fun1" title="fun1" />
<Item name="fun2" title="fun2" />
</Item>
</Menu>
<Menu name="studentMenu" title="student function" roles="admin,student">
<Item name="add" title="student-add"
toolTip="Show student-add function" page="" />
<Item name="del" title="student-del"
toolTip="Show student-del function" page="" />
</Menu>
<Menu name="guestMenu" title="guest function">
<Item name="add" title="guest-add"
toolTip="Show guest-add function" page="" />
<Item name="del" title="guest-del"
toolTip="Show guest-del function" page="" />
</Menu>
</Menus>
</MenuConfig>
最后就是index.jsp了
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts-menu.sf.net/tag" prefix="menu"%>
<%@ taglib uri="http://struts-menu.sf.net/tag-el" prefix="menu-el"%>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://java.sun.com/jstl/sql" prefix="sql"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Struts Menu</title>
</head>
<body>
<!--permissions="rolesAdapter" 权限验证打开-->
<menu:useMenuDisplayer name="ListMenu" permissions="rolesAdapter"
bundle="org.apache.struts.action.MESSAGE">
<menu:displayMenu name="adminMenu" />
<menu:displayMenu name="studentMenu"></menu:displayMenu>
<menu:displayMenu name="guestMenu"></menu:displayMenu>
</menu:useMenuDisplayer>
</body>
</html>
至此一个简单的struts-menu就完成了,希望能给初学者一点启发,也请给为提出意见,谢谢。