`
highriver
  • 浏览: 71768 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于如何在fitler中使用转发到.do的问题

    博客分类:
  • java
阅读更多
现在需要使用filter实现一个网站登陆时”记住用户名“的功能。步骤如下:
1.action中保存用户第一次登陆时正确的登陆名与密码到cookie.
2.filter实现功能。如果filter能从请求中取到对应的cookie,则请求/login/loginLoginAction.do,否则到登陆页,接着登陆。

在web.xml中配置针对/index.jsp进行filter:
<filter>
<filter-name>CheckCookieFilter</filter-name>
<filter-class>
com.tongcard.merchant.web.filter.CheckCookieFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>CheckCookieFilter</filter-name>
<url-pattern>/index.jsp</url-pattern>
</filter-mapping>

filter如下:
package com.tongcard.merchant.web.filter;

import java.io.IOException;
import javax.servlet.FilterConfig;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class CheckCookieFilter implements Filter {
FilterConfig filterConfig;
public void destroy() {
// TODO Auto-generated method stub
}

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletResponse res = ((HttpServletResponse) response);
HttpServletRequest req = ((HttpServletRequest) request);
Cookie[] cookies = req.getCookies();
String path=req.getRequestURI();
if (cookies != null) {
String loginName = "";
String loginPasswd = "";
for (Cookie cookie : cookies) {
if (cookie.getName().equalsIgnoreCase("loginName")) {
loginName = cookie.getValue();
}
if (cookie.getName().equalsIgnoreCase("loginPasswd")) {
loginPasswd = cookie.getValue();
}
}
if (loginName != "" && loginPasswd != "") {
req.setAttribute("loginUser.loginName", loginName);
req.setAttribute("loginUser.loginPasswd", loginPasswd);
//ServletContext context = filterConfig.getServletContext();
req.getRequestDispatcher("/login/loginLogin.do").forward(req,res);
//context.getRequestDispatcher("/login/loginLogin.do").forward(req,res);
} else {
chain.doFilter(req, res);
}
} else {
chain.doFilter(req, res);
}
}

public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}

}
url中login代表方法,Login代表action.
为什么当我从cookie中得到上一次保存到用户本地的登陆名与密码后,然后想执行/login/loginLogin.do时总是提示HTTP Status 404 - /mmp/login/loginLogin.do
forward难道只能到jsp页面?为了这个问题试了一下午。郁闷。
分享到:
评论
4 楼 JavaStart 2008-04-04  
这个问题我遇到过,返回的时候在req.getRequestDispatcher("list").forward(req,res);
然后在Struts的配置文件里面将
<forward name="list"  path="/login/loginLogin.do" redirect="true"/>
就行了!!!
3 楼 highriver 2007-11-22  
自己顶一下,哪一位朋友遇到过这样的问题。forward到jsp是没有问题的。就是到.do就提示找不到。怪怪怪
2 楼 highriver 2007-11-22  
你可以试一试。我将地址http://localhost/mmp/login/loginLogin.docopy到地址栏里可以执行,说明路径是没有问题的。
1 楼 wrong1111 2007-11-22  
404  一般都是路径不对,你可以看看路径.

相关推荐

    维普和万方的fitler

    在IT行业中,文献管理和引用是科研人员和学者日常工作中不可或缺的一部分。EndNote是一款非常流行的文献管理软件,它能够帮助用户整理、存储、引用和管理大量的学术文献资料。本篇文章将详细探讨如何使用EndNote的...

    matlab有些代码不运行-Kalman-Filter-for-Lidar-and-Radar:C++中的扩展卡尔曼过滤器(使用uWebSoc

    FusionEKF.h,kalman_filter.cpp,kalman_fitler.h,tools.cpp和tools.h 程序main.cpp已经填写完毕,但是可以对其进行修改。 这是main.cpp用于uWebSocketIO与模拟器进行通信时使用的主要协议。 输入:模拟器提供给C ...

    matlab爱心源代码-Extended-Kalman-Filter-Project:使用具有激光雷达和雷达数据的扩展卡尔曼滤波器来跟踪移动的

    在这个项目中,使用卡尔曼滤波器通过嘈杂的激光雷达和雷达测量来估计感兴趣的移动物体的状态。 通过该项目需要获得低于项目 reburic 中概述的容差的 RMSE 值。 本项目涉及可下载的Term 2 Simulator 此存储库包含两个...

    基于管道风格简单程序

    建立两个两个过虑器,一个是把输入的路径记录到一个文件中,另一个过滤器负责读取文件的内容,在实现的过程中可以加入其他的过滤器. 建立request类,response类表示过滤器的请求输入和过滤器的响应.

    SpringBoot的filter过滤器(源代码)

    2.2.4 在启动类中进行配置 2.4.3 第二种方式的另一种写法 2.4.4. 测试 2.3 过滤器的小案例 2.3.1 场景描述 2.3.2 Controller层 2.3.3 启动类 添加注解:@ServletComponentScan //添加过滤器使用 2.3.4自定义过滤器类...

    Debug Info Filter(二进制,非源码)

    具体内容参见blog DirectShow中用于调试的一个Inpladce Transform Filter,具有如下功能: ...这个可是好东西哦,当在使用一个Filter时,至少通过其提供的接口,猜到怎么用,及应该去查什么资料了。

    css入门笔记

    独立于任何网页位置处,声明一个样式文件(.css为后缀),在文件中声明样式,在使用的网页中引入.css文件。 使用步骤: 1.创建样式表文件(.css) 2.在样式文件中编写样式规则 3.在网页中对样式文件进行引入 &lt...

    SSH配置步骤

    配置SSH的步骤: 1 添加依赖库 2 启用Struts2,在Web.xml中配置它的fitler 3 添加Struts2的配置文件,在其中配置Action与请求路径的对应关系。 4 启用Spring,在web.xml中配置它的Lisener

    particle filter code

    `license.txt`文件通常包含软件授权信息,规定了代码的使用、修改和分发的条款,遵循这个文件中的协议,你可以在许可范围内使用这些代码。 在实际应用中,粒子滤波器首先对每个粒子进行预测,然后根据观测值更新...

    tibco-giants:TIBCO GI 附加工具包。 从谷歌代码迁移以进行备份,但 TIBCO GeneralInterface 已过时

    Filterable OpenFile Dialog 提供了打开文件对话框的过滤功能,您可以使用fitler 通过正则表达式快速定位要打开的文件。 增强映射提供了一种可视化工具,可根据更改的 wsdl 文件将映射从旧规则文件迁移到新文件。 ...

    sublime-filterlines, 快速查找匹配字符串或者正则表达式的所有行.zip

    sublime-filterlines, 快速查找匹配字符串或者正则表达式的...在编辑&gt; 行菜单上:使用 正规表达式 排除行排除带字符串的行在编辑&gt; 代码折叠菜单上:折叠不包括 正规表达式折叠排除字符串用 正规表达式 折叠用字符串折

    滤波软件工具

    在提供的文件列表中,“滤波器软件”可能是该软件工具的主程序或安装包,用户可以通过运行这个文件来安装和使用该滤波设计工具。使用过程中,应遵循软件的用户指南,理解各项功能,并结合自身的工程背景和需求,合理...

Global site tag (gtag.js) - Google Analytics