- 浏览: 200465 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (121)
- java_基础 (26)
- java_web (15)
- javascript (9)
- extJS (0)
- dwr (0)
- guobin_ETL (1)
- guobin_ssh (17)
- guobin_webservice (1)
- guobin_jbpm (0)
- guobin_jquery (0)
- guobin_acegi (1)
- guobin_poi/jxl (2)
- guobin_multiThread (0)
- guobin_名称解释 (0)
- guobin_FLEX (0)
- guobin_php (0)
- guobin_ORACLE (1)
- guobin_mysql (0)
- guobin_linux (0)
- guobin_powerDesigner (0)
- guobin_visol (0)
- guobin_ER/STUDIO (0)
- guobin_jmesa (0)
- guobin_weblogic (0)
- guobin_kettle (0)
- guobin_一路风雨 (5)
- guobin_spark (0)
- java_xml (7)
- guobin_规则引擎 (0)
- 插件开发 (2)
- 软件管理 (3)
- spring mvc (2)
- java_jni (1)
- eclipse (1)
- oracle (0)
- 项目学习笔记 (1)
- java多线程学习记录 (9)
- websphere性能设置和日常维护 (2)
- (1)
- 系统软件架构设计 (1)
- ces (1)
- 需求分析 (2)
- IBM-CICS GATEWAY (1)
- 工具使用 (1)
- 网络信息安全编程 (1)
最新评论
-
yzh__:
学习一个
Hibernate 自关联注解方式 -
xiaoyahuang:
"2)将Sysdeo Plugin下的DevLoad ...
eclipse项目引用 -
guobin6125:
guobin6125 写道sfasshahhah评论的评论
欢迎使用Kit! -
guobin6125:
sfass
欢迎使用Kit! -
guobin6125:
tst23
欢迎使用Kit!
struts2拦截器 获得请求方法名+获得请求参数
SSI框架为基础开发的,hulian平台
struts2拦截器里如何知道你请求的是那个方法
使用:invocation.getInvocationContext().getName(); //输出Priv_queryPriv,这正是我访问的Action中的方法。
1.struts.xml中这么定义的
- <struts>
- <!-- character filter -->
- <constant name="struts.i18n.encoding" value="utf-8" />
- <constant name="struts.multipart.saveDir" value="/tmp" />
- <constant name="struts.multipart.maxSize" value="1000000000" />
- <!-- CONFIG Global Exception -->
- <package name="basePriv" extends="struts-default">
- <interceptors>
- <interceptor name="myPrivInterceptor" class="PrivInterceptor"/>
- <interceptor-stack name="b2cplatPrivInterceptor">
- <interceptor-ref name="myPrivInterceptor">
- <param name="includeMethods"></param>
- <param name="excludeMethods">
- loginMain,loginTop,loginSwitch,loginRight,login,leftMenuShow,
- queryCityList,queryInOrOutAreaList,queryDistricts
- </param>
- </interceptor-ref>
- <interceptor-ref name="defaultStack"/>
- </interceptor-stack>
- </interceptors>
- <default-interceptor-ref name="b2cplatPrivInterceptor"/>
- <global-results>
- <result name="privError">/errorPrivPage.jsp</result>
- <result name="updateEmpPassword">/jsp/phone/xxxx.jsp</result>
- <result name="loginPage" type="redirect">/jsp/phone/login/trunToLogin.jsp</result>
- </global-results>
- <global-exception-mappings>
- <exception-mapping result="error" exception="java.lang.Exception">/errorPage.jsp
- </exception-mapping>
- </global-exception-mappings>
- </package>
- <package name="managerPlatform" extends="basePriv" namespace="/">
- <action name="*_*" class="{1}Action" method="{2}">
- <result name="success">${successPath}</result>
- <result name="error">${errorPath}</result>
- <result name="input">${inputPath}</result>
- <result name="redirectAction" type="redirectAction">${redirectActionPath}</result>
- <result name="doChain" type="chain">${chainPath}</result>
- <result name="redirect" type="redirect">${redirectPath}</result>
- <result name="print" type="stream">
- <param name="contentType">application/vnd.ms-excel</param>
- <param name="inputName">inputStream</param>
- <param name="contentDisposition">filename="${printFileName}"</param>
- <param name="bufferSize">1024</param>
- </result>
- </action>
- </package>
- </struts>
<struts> <!-- character filter --> <constant name="struts.i18n.encoding" value="utf-8" /> <constant name="struts.multipart.saveDir" value="/tmp" /> <constant name="struts.multipart.maxSize" value="1000000000" /> <!-- CONFIG Global Exception --> <package name="basePriv" extends="struts-default"> <interceptors> <interceptor name="myPrivInterceptor" class="PrivInterceptor"/> <interceptor-stack name="b2cplatPrivInterceptor"> <interceptor-ref name="myPrivInterceptor"> <param name="includeMethods"></param> <param name="excludeMethods"> loginMain,loginTop,loginSwitch,loginRight,login,leftMenuShow, queryCityList,queryInOrOutAreaList,queryDistricts </param> </interceptor-ref> <interceptor-ref name="defaultStack"/> </interceptor-stack> </interceptors> <default-interceptor-ref name="b2cplatPrivInterceptor"/> <global-results> <result name="privError">/errorPrivPage.jsp</result> <result name="updateEmpPassword">/jsp/phone/xxxx.jsp</result> <result name="loginPage" type="redirect">/jsp/phone/login/trunToLogin.jsp</result> </global-results> <global-exception-mappings> <exception-mapping result="error" exception="java.lang.Exception">/errorPage.jsp </exception-mapping> </global-exception-mappings> </package> <package name="managerPlatform" extends="basePriv" namespace="/"> <action name="*_*" class="{1}Action" method="{2}"> <result name="success">${successPath}</result> <result name="error">${errorPath}</result> <result name="input">${inputPath}</result> <result name="redirectAction" type="redirectAction">${redirectActionPath}</result> <result name="doChain" type="chain">${chainPath}</result> <result name="redirect" type="redirect">${redirectPath}</result> <result name="print" type="stream"> <param name="contentType">application/vnd.ms-excel</param> <param name="inputName">inputStream</param> <param name="contentDisposition">filename="${printFileName}"</param> <param name="bufferSize">1024</param> </result> </action> </package> </struts>
2.Action这么写
- /**
- * 权限信息控制
- * @author ken
- * @date 2011-9-13 下午15:00:46
- */
- @Scope("prototype")
- @Controller("PrivAction")
- public class PrivAction extends BaseAction{
- private static final long serialVersionUID = 1L;
- static final Logger log = Logger.getLogger(PrivAction.class);
- @Autowired
- private PrivService privService;
- /* 权限模型 */
- private TEmployeePriv employeePriv;
- /**
- * 权限查询
- * @return
- */
- public String queryPriv(){
- if(employeePriv==null){
- employeePriv = new TEmployeePriv();
- successPath = "/jsp/phone/priv/priv/privList.jsp";
- return SUCCESS;
- }
- try {
- entitys = this.privService.queryAllPriv(employeePriv);
- } catch (Exception e) {
- log.error("",e);
- }
- successPath = "/jsp/phone/priv/priv/privList.jsp?flag=true";
- return SUCCESS;
- }
- }
/** * 权限信息控制 * @author ken * @date 2011-9-13 下午15:00:46 */ @Scope("prototype") @Controller("PrivAction") public class PrivAction extends BaseAction{ private static final long serialVersionUID = 1L; static final Logger log = Logger.getLogger(PrivAction.class); @Autowired private PrivService privService; /* 权限模型 */ private TEmployeePriv employeePriv; /** * 权限查询 * @return */ public String queryPriv(){ if(employeePriv==null){ employeePriv = new TEmployeePriv(); successPath = "/jsp/phone/priv/priv/privList.jsp"; return SUCCESS; } try { entitys = this.privService.queryAllPriv(employeePriv); } catch (Exception e) { log.error("",e); } successPath = "/jsp/phone/priv/priv/privList.jsp?flag=true"; return SUCCESS; } }
3.struts2拦截器
- /**
- * 权限拦截器Interceptor
- * @author mengxianjun
- * @date 2011-4-8 下午03:07:24
- *
- */
- @SuppressWarnings("serial")
- @Component( "PrivInterceptor" )
- @Scope("prototype")
- public class PrivInterceptor extends MethodFilterInterceptor{
- @Resource(name = "EmployeeService")
- private EmployeeService empSafeService;//工号安全Service
- @Resource(name="EmployeeRoleService")
- private EmployeeRoleService empRoleService;
- /* (non-Javadoc)
- * @see com.opensymphony.xwork2.interceptor.MethodFilterInterceptor#doIntercept(com.opensymphony.xwork2.ActionInvocation)
- * @author mengxianjun
- * @date 2011-4-8 下午03:07:24
- */
- @SuppressWarnings("unchecked")
- @Override
- protected String doIntercept(ActionInvocation invocation) throws Exception {
- System.out.println("============"+invocation.getInvocationContext().getName());
- System.out.println("============"+invocation.getInvocationContext().getLocale());
- System.out.println("============"+invocation.getInvocationContext().getParameters());
- System.out.println("执行到拦截器里。。。。");
- ActionContext act = invocation.getInvocationContext();
- //获得session
- Map session = invocation.getInvocationContext().getSession();
- TEmployeeInfo sessionInfo = (TEmployeeInfo) session.get("user");
- String employee_id="";
- /**
- * 一、是否登录
- */
- try
- {
- employee_id = sessionInfo.getEmployeeId();
- }
- catch( NullPointerException e )
- {
- act.put("message", "Session过期,请重新登录!");
- return "loginPage";
- }
- /*=========================================================单点登录判断============================================*/
- HashMap<String, String> map = (HashMap<String, String>) ServletActionContext.getServletContext().getAttribute("userList");
- String sessionID_User = map.get( employee_id ); //登录用户session的ID
- String sessionID_Now = ServletActionContext.getRequest().getSession().getId(); //当前session的ID
- if( ! sessionID_User.trim().equals(sessionID_Now) )
- {
- act.put("message", "此账号已登录!");
- return "privError";
- }
- /*=========================================================单点登录判断============================================*/
- /**
- * 二、登录成功后,根据URL进行权限判断
- */
- if( !"".equals(employee_id.trim()) && null!=employee_id )
- {
- /**
- * 2.1判断工号登录后,业务密码是否为123456,是跳转到商户安全设置,修改业务密码
- */
- /*TEmployeeSafe empSafe = empSafeService.queryEmployeSafe(employee_id);
- if( null!=empSafe )
- {
- String MD5password = KeyedDigestMD5.getKeyedDigest("123456","").toUpperCase();//获得123456的MD5值
- String employeePass = empSafe.getEmployeePass();//获得登录密码
- String employeePass2 = empSafe.getEmployeePass2();//获得工号业务密码
- if( MD5password.equals(employeePass) || MD5password.equals(employeePass2) )
- {
- act.put("message", "欢迎使用本系统,您的登录密码、业务密码过于简单,请修改!");
- return "updateEmpPassword";
- }
- }*/
- /**
- * 2.2截取请求URL
- */
- HttpServletRequest request = ServletActionContext.getRequest();
- String currentURL = request.getRequestURI();
- String targetURL = "";
- if( -1 != currentURL.indexOf("?") )//普通<form>标签是?分隔传来的参数
- {
- String paramURL = currentURL.substring(currentURL.indexOf("?",0), currentURL.length());//参数URL
- int targetLength = currentURL.length() - paramURL.length();//去掉请求参数Length
- targetURL = currentURL.substring(currentURL.indexOf("/",1), targetLength);
- System.out.println("去掉请求参数路径URL:"+targetURL);
- }
- else if( -1 != currentURL.indexOf(";") )//struts2标签<s:form>标签是;分隔传来的参数
- {
- String paramURL = currentURL.substring(currentURL.indexOf(";",0), currentURL.length());//参数URL
- int targetLength = currentURL.length() - paramURL.length();//去掉请求参数Length
- targetURL = currentURL.substring(currentURL.indexOf("/",1), targetLength);
- System.out.println("去掉请求参数路径URL:"+targetURL);
- }
- else
- {
- targetURL = currentURL.substring(currentURL.indexOf("/",1), currentURL.length());
- System.out.println("请求路径URL:"+targetURL);
- }
- /**
- * 2.3必须保证当前用户:1.工号必须开启2.角色已分配 3.角色已启用 4.角色有权限集合
- */
- if("12".equals(sessionInfo.getState()))
- {
- act.put("message", "工号已锁定!");
- return "privError";
- }
- else if("15".equals(sessionInfo.getState()))
- {
- act.put("message", "工号已注销!");
- return "privError";
- }
- else if( sessionInfo.getRoleState()==null || "".equals(sessionInfo.getRoleState()) )
- {
- act.put("message", "未分配角色!");
- return "privError";
- }
- else if( !"10".equals(sessionInfo.getRoleState()) )
- {
- act.put("message", "该角色未启用!");
- return "privError";
- }
- else
- {
- try
- {
- /*1.得到中间表TRolePriv集合*/
- TRolePriv rp = new TRolePriv();
- rp.setRoleNum(sessionInfo.getRoleNum());
- List<TRolePriv> rolePrivList = empRoleService.queryRolePriv(rp);
- /*2.根据中间表TRolePriv,生成TEmployeePriv集合*/
- List<TEmployeePriv> privList = new ArrayList<TEmployeePriv>();
- for( TRolePriv trp : rolePrivList )
- {
- TEmployeePriv myPriv = empRoleService.queryPrivById(trp.getPrivNum());
- if(myPriv!=null&&myPriv.getPrivUrl()!=null&&!"".equals(myPriv.getPrivUrl())){
- privList.add(myPriv);//去掉一级菜单添加进privList,privUrl为空是一级菜单
- }
- }
- /*3.权限privUrl与targetURL比较*/
- if( privList.size()>0 )
- {
- int privState = 0;
- for( TEmployeePriv p : privList )
- {
- /**
- * 对比去掉请求参数后的URL是否一致,即/Login_login
- */
- String privUrl = p.getPrivUrl();//TEmployeePriv中privUrl,可能带参数,可能不带参数
- if(-1!=privUrl.indexOf("?",0)){
- String paramPrivURL = privUrl.substring(privUrl.indexOf("?",0), privUrl.length());//参数URL
- int targetPrivLength = privUrl.length() - paramPrivURL.length();//去掉请求参数Length
- privUrl = privUrl.substring(privUrl.indexOf("/",0), targetPrivLength);//TEmployeePriv中privUrl去掉参数
- }
- if( privUrl.equals(targetURL) )
- {
- privState = 1;
- }
- }
- if( 1 == privState )
- {
- return invocation.invoke();
- }
- else
- {
- System.out.println("-------得到Priv权限集合,但是无访问权限---------");
- act.put("message", "您没有权限 , 拒绝访问!");
- return "privError";
- }
- }
- else
- {
- act.put("message", "您没有相应权限 , 拒绝访问!");
- return "privError";
- }
- }
- catch( NullPointerException e )
- {
- act.put("message", "您没有权限 , 拒绝访问!");
- return "privError";
- }
- }
- }
- else
- {
- act.put("message", "Session过期,请重新登录!");
- return "loginPage";
- }
- }
- }
相关推荐
内容概要:本文详细介绍了基于MATLAB GUI界面和卷积神经网络(CNN)的模糊车牌识别系统。该系统旨在解决现实中车牌因模糊不清导致识别困难的问题。文中阐述了整个流程的关键步骤,包括图像的模糊还原、灰度化、阈值化、边缘检测、孔洞填充、形态学操作、滤波操作、车牌定位、字符分割以及最终的字符识别。通过使用维纳滤波或最小二乘法约束滤波进行模糊还原,再利用CNN的强大特征提取能力完成字符分类。此外,还特别强调了MATLAB GUI界面的设计,使得用户能直观便捷地操作整个系统。 适合人群:对图像处理和深度学习感兴趣的科研人员、高校学生及从事相关领域的工程师。 使用场景及目标:适用于交通管理、智能停车场等领域,用于提升车牌识别的准确性和效率,特别是在面对模糊车牌时的表现。 其他说明:文中提供了部分关键代码片段作为参考,并对实验结果进行了详细的分析,展示了系统在不同环境下的表现情况及其潜在的应用前景。
嵌入式八股文面试题库资料知识宝典-计算机专业试题.zip
嵌入式八股文面试题库资料知识宝典-C and C++ normal interview_3.zip
内容概要:本文深入探讨了一款额定功率为4kW的开关磁阻电机,详细介绍了其性能参数如额定功率、转速、效率、输出转矩和脉动率等。同时,文章还展示了利用RMxprt、Maxwell 2D和3D模型对该电机进行仿真的方法和技术,通过外电路分析进一步研究其电气性能和动态响应特性。最后,文章提供了基于RMxprt模型的MATLAB仿真代码示例,帮助读者理解电机的工作原理及其性能特点。 适合人群:从事电机设计、工业自动化领域的工程师和技术人员,尤其是对开关磁阻电机感兴趣的科研工作者。 使用场景及目标:适用于希望深入了解开关磁阻电机特性和建模技术的研究人员,在新产品开发或现有产品改进时作为参考资料。 其他说明:文中提供的代码示例仅用于演示目的,实际操作时需根据所用软件的具体情况进行适当修改。
少儿编程scratch项目源代码文件案例素材-剑客冲刺.zip
少儿编程scratch项目源代码文件案例素材-几何冲刺 转瞬即逝.zip
内容概要:本文详细介绍了基于PID控制器的四象限直流电机速度驱动控制系统仿真模型及其永磁直流电机(PMDC)转速控制模型。首先阐述了PID控制器的工作原理,即通过对系统误差的比例、积分和微分运算来调整电机的驱动信号,从而实现转速的精确控制。接着讨论了如何利用PID控制器使有刷PMDC电机在四个象限中精确跟踪参考速度,并展示了仿真模型在应对快速负载扰动时的有效性和稳定性。最后,提供了Simulink仿真模型和详细的Word模型说明文档,帮助读者理解和调整PID控制器参数,以达到最佳控制效果。 适合人群:从事电力电子与电机控制领域的研究人员和技术人员,尤其是对四象限直流电机速度驱动控制系统感兴趣的读者。 使用场景及目标:适用于需要深入了解和掌握四象限直流电机速度驱动控制系统设计与实现的研究人员和技术人员。目标是在实际项目中能够运用PID控制器实现电机转速的精确控制,并提高系统的稳定性和抗干扰能力。 其他说明:文中引用了多篇相关领域的权威文献,确保了理论依据的可靠性和实用性。此外,提供的Simulink模型和Word文档有助于读者更好地理解和实践所介绍的内容。
嵌入式八股文面试题库资料知识宝典-2013年海康威视校园招聘嵌入式开发笔试题.zip
少儿编程scratch项目源代码文件案例素材-驾驶通关.zip
小区开放对周边道路通行能力影响的研究.pdf
内容概要:本文探讨了冷链物流车辆路径优化问题,特别是如何通过NSGA-2遗传算法和软硬时间窗策略来实现高效、环保和高客户满意度的路径规划。文中介绍了冷链物流的特点及其重要性,提出了软时间窗概念,允许一定的配送时间弹性,同时考虑碳排放成本,以达到绿色物流的目的。此外,还讨论了如何将客户满意度作为路径优化的重要评价标准之一。最后,通过一段简化的Python代码展示了遗传算法的应用。 适合人群:从事物流管理、冷链物流运营的专业人士,以及对遗传算法和路径优化感兴趣的科研人员和技术开发者。 使用场景及目标:适用于冷链物流企业,旨在优化配送路线,降低运营成本,减少碳排放,提升客户满意度。目标是帮助企业实现绿色、高效的物流配送系统。 其他说明:文中提供的代码仅为示意,实际应用需根据具体情况调整参数设置和模型构建。
少儿编程scratch项目源代码文件案例素材-恐怖矿井.zip
内容概要:本文详细介绍了基于STM32F030的无刷电机控制方案,重点在于高压FOC(磁场定向控制)技术和滑膜无感FOC的应用。该方案实现了过载、过欠压、堵转等多种保护机制,并提供了完整的源码、原理图和PCB设计。文中展示了关键代码片段,如滑膜观测器和电流环处理,以及保护机制的具体实现方法。此外,还提到了方案的移植要点和实际测试效果,确保系统的稳定性和高效性。 适合人群:嵌入式系统开发者、电机控制系统工程师、硬件工程师。 使用场景及目标:适用于需要高性能无刷电机控制的应用场景,如工业自动化设备、无人机、电动工具等。目标是提供一种成熟的、经过验证的无刷电机控制方案,帮助开发者快速实现并优化电机控制性能。 其他说明:提供的资料包括详细的原理图、PCB设计文件、源码及测试视频,方便开发者进行学习和应用。
基于有限体积法Godunov格式的管道泄漏检测模型研究.pdf
嵌入式八股文面试题库资料知识宝典-CC++笔试题-深圳有为(2019.2.28)1.zip
少儿编程scratch项目源代码文件案例素材-几何冲刺 V1.5.zip
Android系统开发_Linux内核配置_USB-HID设备模拟_通过root权限将Android设备转换为全功能USB键盘的项目实现_该项目需要内核支持configFS文件系统
C# WPF - LiveCharts Project
少儿编程scratch项目源代码文件案例素材-恐怖叉子 动画.zip
嵌入式八股文面试题库资料知识宝典-嵌⼊式⼯程师⾯试⾼频问题.zip