为什么配置的拦截器,不起作用啊!!

Zhang987536341 2012-08-03 10:02:22

求高手指点迷津,配置 的拦截器,为什么不起作用啊 ,求解答?????????????


//拦截器类
public class CheckLoginInceptor implements Interceptor{
public void destroy() {

}

public void init() {

}

public String intercept(ActionInvocation arg) throws Exception {

HttpServletRequest request = ServletActionContext.getRequest();
LoginInfo login = (LoginInfo)request.getSession().getAttribute("info");

ServletActionContext.getResponse().setCharacterEncoding("GBK");
request.setCharacterEncoding("GBK");

if(request.getRequestURI().indexOf("/admin/")!=-1){
System.out.println("执行后台登录拦截器");
//System.out.println(login);
if(login==null){
if(request.getRequestURI().indexOf("admin/login!execute")!=-1){
return arg.invoke();
}
return "loginerror";
}
}
return arg.invoke();
}


}

//struts.xml
<!-- 用户登录拦截器 -->
<interceptors>
<interceptor name="checklogin" class="com.jy.interceptor.CheckLoginInceptor"></interceptor>

<interceptor-stack name="default">
<interceptor-ref name="checklogin"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>


<!-- 设置默认拦截器 -->
<default-interceptor-ref name="default"></default-interceptor-ref>

<!-- 全局跳转 -->
<global-results>
<result name="loginerror">/admin/login.jsp</result>
</global-results>

<!-- 管理员登录 -->
<action name="login" class="com.jy.action.LoginAction">

<result name="success">/admin/main.jsp</result>
<result name="input">/admin/login.jsp</result>
</action>
//登录的action
private LoginInfo info;

loginInfo 里面有name ,pwd ,age ,address 等属性

this.getSession().setAttribute("info",info); //将用户的对象放入session中
...全文
987 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
小柚子之舞 2014-01-05
  • 打赏
  • 举报
回复
默认的拦截器和自定义的拦截器的位置放反了。
xj1990129 2012-12-27
  • 打赏
  • 举报
回复
看了楼主下面的很多回答,都坑爹..不是什么没在action中加拦截器,就是说没加struts的defaultStack.仔细看楼主配置了在回答好不,楼主的自定义拦截器包含了defaultStack,.而这句配置<default-interceptor-ref name="default"></default-interceptor-ref> 指定默认的全局拦截器.就不需要重复在action中加拦截了...我今天也遇到这个问题..楼主你解决了没有?
LucEaspe 2012-08-20
  • 打赏
  • 举报
回复
拦截器没有放到action 中,怎么起作用?
road_16 2012-08-20
  • 打赏
  • 举报
回复
<!-- 管理员登录 -->
<action name="login" class="com.jy.action.LoginAction">

<result name="success">/admin/main.jsp</result>
<result name="input">/admin/login.jsp</result>
</action>
先把你配的拦截器,再把默认的放到action里边
Zhang987536341 2012-08-20
  • 打赏
  • 举报
回复
请问你是拦截什么请求啊 ,
learningBird 2012-08-20
  • 打赏
  • 举报
回复
不好意思。刚刚的回复错了。。
我看了以前写的配置文件,和你一样。
1. 没有使用自定义默认拦截器栈
2. 在Action中配置自己写的拦截器和系统默认的拦截器

测试过了。没什么问题。应该是你其它地方出问题了。。


<interceptors >
<interceptor name="myInterceptor01" class="com.intercept.MyInterceptor">
<param name="ref">value</param>
</interceptor>
<interceptor-stack name="myInterceptorStack">
<interceptor-ref name="myInterceptor01"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>

<!--
<default-interceptor-ref name="myInterceptorStack"></default-interceptor-ref>
-->

<action name="*loginPerson" class="com.test.action.LoginAction" method="{1}">
<result name="success">/com/test/loginSuccess.jsp</result>
<result name="input">/com/test/login.jsp</result>
<interceptor-ref name="myInterceptor01">
<param name="ref">newValue</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>

learningBird 2012-08-20
  • 打赏
  • 举报
回复
测试完毕,没问题。

<%
out.print(request.getParameter("password"));
%>

<form action="#">
<input type="password" name="password">
<input type="submit" value="test">
</form>
Zhang987536341 2012-08-20
  • 打赏
  • 举报
回复
没解决啊
learningBird 2012-08-20
  • 打赏
  • 举报
回复
如果是放在同一包下,应该没什么问题的。楼主解决了吗?求解。我也想知道哪里有问题。
Zhang987536341 2012-08-20
  • 打赏
  • 举报
回复
10 楼, 不是你说的那个原因啊 ,我在回复8 楼的时候,就说过这个 问题啊啊
wwwww112233 2012-08-20
  • 打赏
  • 举报
回复
在struts.xml里指明一下
<interceptor-ref name="....Interceptor0"/>
kuailexiaobuding4 2012-08-20
  • 打赏
  • 举报
回复
自己写一个拦截器继承struts的拦截器然后配置上自己的。
Zhang987536341 2012-08-19
  • 打赏
  • 举报
回复
回复8 楼,你说没有配置??不太懂,你是说要在里面在<interceptor-ref name="default"></interceptor-ref>
这样啊 ,这样我也试了啊,不行啊 。。你说的在具体点啊
jiangjoexing 2012-08-19
  • 打赏
  • 举报
回复
你在前面相当于创建一个拦截器,并没有把对应的拦截器在action里面配置!
Zhang895341748 2012-08-19
  • 打赏
  • 举报
回复
你的拦截器拦截的是所有.action的请求,没有拦截.jsp 或 .html等的其他请求
Zhang987536341 2012-08-04
  • 打赏
  • 举报
回复
我的功能是这样的,用户不登录 ,就无法访问后台其他的页面,如果用户访问登录后的页面,就让它调回到登录的页面,我的竟然可以在不登录的情况下,访问到登录后的页面,那肯定是拦截器没有器作用啦 ??
下浪淘沙 2012-08-04
  • 打赏
  • 举报
回复
设置断点调试一下看.先确认已经可以拦截,然后再排除你的判断逻辑是否正确.
Zhang987536341 2012-08-04
  • 打赏
  • 举报
回复
我不是在上面贴struts.xml的代码了吗??
风尘中国 2012-08-04
  • 打赏
  • 举报
回复
你的拦截器都配置在哪里了,如果在其他action上没有配置拦截器,就单纯在LoginAction配置什么用都没有,没有看到你具体拦截器配置的xml片段

比如有个a.jsp,是通过ActionA控制导航的,那么就必须在ActionA前面配置使用这个拦截器,现在无从知道你在哪里配置的
风尘中国 2012-08-03
  • 打赏
  • 举报
回复
你怎么知道拦截器没有发挥作用的

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧