12.10.2 控制器组件CheckPowerAction.java
CheckPowerAction类的作用是检查权限,以验证当前登录用户是否可以进行某项操作,以下是它的源代码。
package nm; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import javax.sql.DataSource; import nm.user.model.NoticeBean; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionMessage; import org.apache.struts.action.ActionMessages; public final class CheckPowerAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { //获取用户想要进行的操作的类型 String functiontype = request.getParameter("functiontype"); //使用struts-config.xml配置文件的数据源信息生成数据库操作类DB的对象 ServletContext context = servlet.getServletContext(); DataSource dataSource = (DataSource) context .getAttribute(Constants.DATASOURCE_KEY); DB db = new DB(dataSource); //新建需要用到的对象,并为其初始化。其中表示转发页面的pageForward 被初始化为ToErrorPage HttpSession session = request.getSession(); ActionMessages errors = new ActionMessages(); String pageForward = "ToErrorPage"; User loginuser = (User) session.getAttribute(Constants.LOGIN_USER_KEY); … //如果用户想要进行的操作的类型为编辑用户(useredit), //则验证该用户等级是否为管理员(admin),如果是就使用User.search方法, //从数据库中查到待编辑用户的信息存入session中,将转发页面设置为ToUserEdit else if (functiontype.equals("useredit")) { if (loginuser.getGrade().equals("admin")) { String username = request.getParameter("username"); User curUser = (User) User.search(db, username).get(0); session.setAttribute(Constants.CUR_USER_KEY, curUser); pageForward = "ToUserEdit"; } else { //否则,在ActionMessage对象中封装消息(由error.power.edit.notadmin所代表), //并保存到request范围内,此时表示转发页面的pageForward对象仍然为初始值ToErrorPage errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage( "error.power.edit.notadmin")); if (!errors.isEmpty()) { saveErrors(request, errors); } } } … //关闭数据库连接,并根据pageForward值将请求转发到相应路径 db.close(); return (mapping.findForward(pageForward)); } } |
【责任编辑:
夏书 TEL:(010)68476606】