您所在的位置: 首页>>读书频道>>设计开发>>Java系列>>

12.10.2 控制器组件CheckPowerAction.java

http://book.51cto.com  2008-05-15 16:01  计磊/李里/周伟  人民邮电出版社  我要评论(0)
  • 摘要:《精通J2EE--Eclipse、Struts、Hibernate及Spring整合应用案例》第12章主要讲述的是公告管理系统(Eclipse+Struts),本节为大家介绍的是控制器组件CheckPowerAction.java。
  • 标签:J2EE  Eclipse  控制器组件  Struts  Hibernate  系统  Spring  案例

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】

回书目   上一节   下一节
系统应用日志分析管理
网络管理系统如何支撑ITSM
企业Web安全威胁在线评估系统
赛门铁克诺顿误杀Windows系统文件 导致百万系统崩溃
Windows系统加固专题
 
 验证码: (点击刷新验证码)   匿名发表
  • Visual C++ 完全自学宝典

  • 作者:强锋科技,朱洪波
  • Visual C++ 6.0是微软公司为程序人员提供的Visual Studio 6.0工具套件中的重要组成部分。本书由浅入深地介绍使用Visual C++ 6.0..
Copyright©2005-2008 51CTO.COM 版权所有