求助servlet做个登录的过滤器居然反复执行 一直反复执行的结果是什么?一直输出System.out.println(request.getRemoteAddr()+request.getRemoteHost())这个? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 改了一样呀一直在重复执行Login info = (Login) ((HttpServletRequest) request).getSession() .getAttribute("userinfo"); System.out.println(request.getRemoteAddr()+request.getRemoteHost()); try { if (info != null) { filter.doFilter(request, response); } else { response.setContentType("text/html;charset=utf-8"); ((HttpServletResponse) response).sendRedirect("/kqgl/login.jsp"); } } catch (Exception e) { System.out.println(e); // TODO: handle exception }这一段 把请求的url打出来不就知道了目测是在请求什么css拉js拉icon之类的东西 怎么打印 我用request.getRequestedURI()提示我没有这个方法 <filter-mapping> <filter-name>loginFilter</filter-name> <url-pattern>/login/*</url-pattern> </filter-mapping>改为<filter-mapping> <filter-name>loginFilter</filter-name> <url-pattern>/login/</url-pattern> </filter-mapping> 反复的执行 你看看你这里执行这个过滤器时 filter.doFilter(request, response); 这时候的url是什么不会又发送到类似与/login/##这样的地址去了吧 你登陆成功就进入这个判断吧:if (info != null) { filter.doFilter(request, response);这样不就一直会用这个过滤器了? 个人认为Struts2为我们提供了拦截器、何必这么复杂、action继承一个自定义的拦截器不就行了<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "struts-2.0.dtd"><struts> <package name="struts-interceptor" extends="struts-default"> <interceptors> <interceptor name="l" class="com.cn.utils.Fileter"><!--自定义拦截器路径--> </interceptor> <interceptor-stack name="m"> <interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="l"></interceptor-ref> </interceptor-stack> </interceptors> <default-interceptor-ref name="m"/> <global-results> <result name="loginover" type="redirect">/login.jsp</result> </global-results> </package> <package name="default" extends="struts-interceptor"> <action name="useraction" class="com.cn.action.UserAction"> <result>/list.jsp</result> <result name="pagelist">/pagelist.jsp</result> <result name="list" type="redirect">/useraction!list.action</result> <result name="up">/up.jsp</result> <result name="login">/login.jsp</result> <result name="adduser">/add.jsp</result> </action> </package> <package name="default-login" extends="struts-default"> <action name="useralogin" class="com.cn.action.UserAction"> <result name="list" type="redirect">/useraction!list.action</result> <result name="login">/login.jsp</result> </action> </package></struts> 这个每次请求肯定会 执行doFilter的 因为要判断是否登录 一直反复执行的结果是什么?一直输出System.out.println(request.getRemoteAddr()+request.getRemoteHost())这个?嗯 对 也不会跳转到本来超链接的页面另外 执行了doFilter 不会跳转到 本来超链接的页面 那么是跳转到了 登录页面吗?? struts 显示jsp页面 servlet oracle 如何连接 servlet 定向 frameset 中的 求一JDK1.5 中文帮助文档下载,CHM格式,多谢! 谁能给个思路?技术问题 java对象的网络迁移试验 用session判断用户超时的一点疑问 文件路问题 servlet数据库操作,javaBean保存数据,返回jsp页面,jsp页的css失效??? 在 线紧急 求救 ! 聊聊爬虫 请问MethodInvocation是位于什么包下面的?
改了一样呀一直在重复执行
Login info = (Login) ((HttpServletRequest) request).getSession()
.getAttribute("userinfo");
System.out.println(request.getRemoteAddr()+request.getRemoteHost());
try {
if (info != null) {
filter.doFilter(request, response);
} else {
response.setContentType("text/html;charset=utf-8");
((HttpServletResponse) response).sendRedirect("/kqgl/login.jsp");
}
} catch (Exception e) {
System.out.println(e);
// TODO: handle exception
}这一段
<filter-name>loginFilter</filter-name>
<url-pattern>/login/*</url-pattern>
</filter-mapping>改为<filter-mapping>
<filter-name>loginFilter</filter-name>
<url-pattern>/login/</url-pattern>
</filter-mapping>
filter.doFilter(request, response);
这时候的url是什么
不会又发送到类似与/login/##这样的地址去了吧
filter.doFilter(request, response);
这样不就一直会用这个过滤器了?
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"struts-2.0.dtd">
<struts>
<package name="struts-interceptor" extends="struts-default">
<interceptors>
<interceptor name="l" class="com.cn.utils.Fileter"><!--自定义拦截器路径-->
</interceptor>
<interceptor-stack name="m">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="l"></interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="m"/>
<global-results>
<result name="loginover" type="redirect">/login.jsp</result>
</global-results>
</package> <package name="default" extends="struts-interceptor">
<action name="useraction" class="com.cn.action.UserAction">
<result>/list.jsp</result>
<result name="pagelist">/pagelist.jsp</result>
<result name="list" type="redirect">/useraction!list.action</result>
<result name="up">/up.jsp</result>
<result name="login">/login.jsp</result>
<result name="adduser">/add.jsp</result>
</action>
</package>
<package name="default-login" extends="struts-default">
<action name="useralogin" class="com.cn.action.UserAction">
<result name="list" type="redirect">/useraction!list.action</result>
<result name="login">/login.jsp</result>
</action>
</package>
</struts>