struts拦截器权限设置 struts2拦截器登陆权限 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 估计你配置问题,你要在你的loginAction里增加拦截器配置,比如:<action name="loginAction" class="类全路径">......<!-- 引用系统默认的拦截器 --><interceptor-ref name="defaultStack"/><interceptor-ref name="拦截器名或拦截器栈名"/></action>或者全局配置也行。 <package name="xix" extends="struts-default" namespace="/admin"> <interceptors> <interceptor name="logger" class="interceptor.LoggerInteceptor" /> <interceptor-stack name="mydefaultstack"> <interceptor-ref name="logger" /> <interceptor-ref name="defaultStack" /> </interceptor-stack> </interceptors> <!-- 当前package下的所有的action 都被默认的拦截器mydefaultstack所拦截 --> <default-interceptor-ref name="mydefaultstack"></default-interceptor-ref> <action name="doLogin" class="action.LoginAction" method="doLogin"> <result name="usercheck">/admin/welcome.jsp</result> <result name="input">/admin/login.jsp</result> </action></package>配置是没错,拦截器中,总是走return input,就是不给你登陆,我也检查了多次,配置没问题的。 拦截器引用顺序不对,要先引defaultStack,先把数据存入Context中,再执行你的logger拦截器。 顺序换一下:<interceptor-stack name="mydefaultstack"> <interceptor-ref name="defaultStack" /> <interceptor-ref name="logger" /></interceptor-stack> 错了,你这个不是顺序问题,是逻辑不对。设置了默认拦截器以后,所有的请求都被拦截,就连doLogin请求本身都被拦截,故拦截器实现需要修改,正确的如下所示:public String intercept(ActionInvocation arg0) throws Exception { System.out.println("拦截了没有"); ActionContext ac = arg0.getInvocationContext(); Users user = (Users) ac.getSession().get("user"); if (user == null) { String actionName = arg0.getProxy().getActionName(); if(!actionName.equals("doLogin")) { ac.getSession().put("user", "请先登录"); return "input"; } } return arg0.invoke();} 直接换成if (user == null) { return "input"; }这样行不行,拦截器拦截看账号密码是否为空就行,如果空直接返回失败页面 输出”拦截了没有“?拦截器配置如楼上上说的,先配置,默认的,后配置自定义的,顺序问题。把user这个输出看看? 你这样不行,必须加上action判断,解释就是:登陆action不拦截,其他action才拦截。 <interceptors> <interceptor name="logger" class="interceptor.LoggerInteceptor" /> <interceptor-stack name="mydefaultstack"> <interceptor-ref name="defaultStack" /> <interceptor-ref name="logger" /> </interceptor-stack> </interceptors>是这样吗 HttpSession session=request.getSession();//根据请求获取会话session session.setAttribute("键","值");//向session中设置值 String info=(String)session.getAttribute("键")//session中取出特定的键对应的值 是不是没有获取到session中的值 那你在Action那边继承和引用了没?控制台输出“拦截了没有”? base href在ie中不作用于location.href?? 关于IE机制 帮我翻译下这段代码! 怎么也想不通的问题 一个非常奇特的怪问题,唉 高分急求:sql生成工具的web版本 有关 事件源、事件监听者、事件监听者接口 初来乍到,请问如何在jsp中写一个function,在其他地方又如何调用,在线等待 jsp或servlet作mis太差,交互性不好,和c/s差多了,我感觉这种方案比较好: tomcat 初始页面不出现 对数据库操作过程中的一个问题。 数据库里的图像显示问题
<action name="loginAction" class="类全路径">
......
<!-- 引用系统默认的拦截器 -->
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="拦截器名或拦截器栈名"/>
</action>或者全局配置也行。
<interceptors>
<interceptor name="logger" class="interceptor.LoggerInteceptor" />
<interceptor-stack name="mydefaultstack">
<interceptor-ref name="logger" />
<interceptor-ref name="defaultStack" />
</interceptor-stack>
</interceptors>
<!-- 当前package下的所有的action 都被默认的拦截器mydefaultstack所拦截 -->
<default-interceptor-ref name="mydefaultstack"></default-interceptor-ref>
<action name="doLogin" class="action.LoginAction" method="doLogin">
<result name="usercheck">/admin/welcome.jsp</result>
<result name="input">/admin/login.jsp</result>
</action>
</package>
配置是没错,拦截器中,总是走return input,就是不给你登陆,我也检查了多次,配置没问题的。
<interceptor-stack name="mydefaultstack">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="logger" />
</interceptor-stack>
设置了默认拦截器以后,所有的请求都被拦截,就连doLogin请求本身都被拦截,故拦截器实现需要修改,正确的如下所示:public String intercept(ActionInvocation arg0) throws Exception {
System.out.println("拦截了没有");
ActionContext ac = arg0.getInvocationContext();
Users user = (Users) ac.getSession().get("user");
if (user == null) {
String actionName = arg0.getProxy().getActionName();
if(!actionName.equals("doLogin")) {
ac.getSession().put("user", "请先登录");
return "input";
}
}
return arg0.invoke();
}
}
这样行不行,拦截器拦截看账号密码是否为空就行,如果空直接返回失败页面
把user这个输出看看?
你这样不行,必须加上action判断,解释就是:登陆action不拦截,其他action才拦截。
<interceptor name="logger" class="interceptor.LoggerInteceptor" />
<interceptor-stack name="mydefaultstack">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="logger" />
</interceptor-stack>
</interceptors>
是这样吗
session.setAttribute("键","值");//向session中设置值
String info=(String)session.getAttribute("键")//session中取出特定的键对应的值 是不是没有获取到session中的值