关于Java URL重写之后过滤器的配置和拦截规则问题

问题描述

我现在项目是这样,项目使用的struts2,用了URL重写,但是重写之后我的过滤器就过滤不到我配置的规则(*.htm,我的struts.action.extension=htm)了,URL重写的过滤器是放在我的过滤器的前面的,问一下是不是请求经过URL重写的这一层过滤器之后就会把URL变成没有重写之前的样子呢?<!--URL重写--><filter><filter-name>UrlRewriteFilter</filter-name><!--过滤器类所在的路径:--><filter-class>com.jorke.base.filter.UrlRewriteFilter</filter-class><!--日志级别(可以不配置)--><init-param><param-name>logLevel</param-name><param-value>WARN</param-value></init-param></filter><filter-mapping><filter-name>UrlRewriteFilter</filter-name><!--拦截所有url--><url-pattern>*</url-pattern><dispatcher>REQUEST</dispatcher><dispatcher>FORWARD</dispatcher></filter-mapping><!--请求过滤器--><filter><filter-name>requestFilter</filter-name><filter-class>com.jorke.base.filter.RequestFilter</filter-class></filter><filter-mapping><filter-name>requestFilter</filter-name><url-pattern>*.htm</url-pattern></filter-mapping>

我的数据库的每个字段都是需要存操作人的ID的,所以在过滤器会放入请求信息publicvoiddoFilter(ServletRequestservletRequest,ServletResponseservletResponse,FilterChainfilterChain)throwsIOException,ServletException{HttpServletRequestrequest=(HttpServletRequest)servletRequest;HttpServletResponseresponse=(HttpServletResponse)servletResponse;AppContext.setRequest(request);try{//Stringheader=request.getHeader("REFERER");//请求的完整地址Stringurl=request.getRequestURI();if(url.endsWith("!save.htm")){Objectobj=request.getSession().getAttribute(JorkeConstant.USER_SESSION_KEY);if(obj==null){response.sendRedirect(request.getContextPath()+"/view/login/login.jsp");}else{filterChain.doFilter(servletRequest,servletResponse);}}else{filterChain.doFilter(servletRequest,servletResponse);}}catch(Exceptione){Logger.getLogger().error(e,e);}finally{}}

publicclassAppContext{/***当前线程中的用户信息*/privatefinalstaticThreadLocal<HttpServletRequest>currentRequest=newThreadLocal<HttpServletRequest>();/***设置用户信息**@paramuserInfo*用户信息*/publicstaticvoidsetRequest(HttpServletRequestrequest){currentRequest.set(request);}/***返回当前登陆用户**@return*/publicstaticBaseEntitygetUserInfo(){BaseEntitycurrentuser;try{currentuser=(BaseEntity)currentRequest.get().getSession().getAttribute(JorkeConstant.USER_SESSION_KEY);returncurrentuser;}catch(Exceptione){e.printStackTrace();}returnnull;}publicstaticvoidcleanRequest(){currentRequest.set(null);}}

我持久层会调用这个getUserInfo方法的,现在问题就是请求没有走到我的过滤器这里,然后去取用户信息发现request是空的

解决方案

解决方案二:
我去,人呢,求助啊来个大神帮我答疑解惑一下啊

时间: 2024-07-31 05:45:55

关于Java URL重写之后过滤器的配置和拦截规则问题的相关文章

apache url rewrite实现url重写配置详解

配置步骤: 第一步:找到apache的配置文件httpd.conf(文件在conf目录下) 第二步:你首先必须得让服务器支持mod_rewrite,如果你使用的是虚拟主机,请事先询问你的主机提供商. 打开httpd.conf,找到  代码如下 复制代码 #LoadModule rewrite_module modules/mod_rewrite.so 把#去掉 找到AllowOverride None 改成 AllowOverride All, 注:AllowOverride 的参数设置为ALL

配置DokuWiki的URL重写

使用Dokuwiki搭建了一个wiki,但是wiki的url感觉不大美观.于是就设置了url重写,让它和平时看到的wiki的url一样. DokuWiki的三种URL 默认情况下,DokuWiki不做任何的URL重写,它的原始URL是这样的: 1 http://wiki.qingxianyan.cn/doku.php?id=page 这样默认的URL不利于有些搜索引擎不收录,而且也不易于记忆. 通过设置DokuWiki的配置设置里面的高级设置的userwrite配置选项它可以支持两种URL重写方

Apache 2.x服务器中的URL重写的配置和应用

1.关于Apache 2.x URL别名的说明和设置: Apache 2.x 服务器中的URL别名规则的文档,它是通过rewrite模块来实现的.能过URL别名规则,我们能看到一个干净的URL,比如可以重写为类似静态网页的地址.比如 LinuxSir.Org 论坛中,每个帖子都有一个静态网页的地址.干净的URL,对于Google搜索引擎来说是极为受用的,能更快的收录. 这个重写,是通过Apache 2.x 内部实现的,只是表面上把Web应用程序的URL变的干净一点,原始的URL还是一样有效. 1

IIS7 asp.net URL重写配置

今天总算是费尽千辛万苦把Vista旗舰版装上了,本来是不用费什么事情的.之前把DVD刻录机送给了我一个朋友,所以ISO早就下了,一直没时间装上,因为 无光驱安装Vista我还从来没有试过,所以一直在等时间仔细研究. 之前有篇日志是写我修了6年电脑,所以对于微软从操作系统到应用软件,或 者是安全管理系统都曾经仔细研究过.然后得出的总结是以后我可以直接带手机 去修电脑.结果Vista的出现让我的美梦破灭了,我那1G的卡根本装不下,所以 以后还是要带个移动硬盘,历史就是给无赖逼着倒退的. 基本上从准备

nginx配置详解-url重写、反向代理、负载均衡

应用层的负载均衡 master/worker结构:一个master进程,生成一个或多个worker子进程 nginx请求的连接方式epoll 是Linux下多路复用IO接口select/poll的增强版本 select 遍历epoll无需遍历 1.nginx安装(未安装邮件服务器模块) ./configure --help查看编译选项 配置文件中路径没加/以prefix指定的路径开始./configure \--prefix=/usr \--sbin-path=/usr/sbin/nginx \

nginx支持codeigniter的pathinfo模式url重写配置写法示例_nginx

开发环境 codeigniter 2.14 PHP 5.4.18 nginx 1.4.2 Codeigniter配置 打开 codeignite 的 config.php 文件修改如下: $config['uri_protocol'] = "PATH_INFO"; nginx配置 打开 nginx 的配置文件 nginx.conf 文件,修改如下: # 我使用的是虚拟主机配置 server { listen 80; server_name dev.example.com; rewrit

Windows IIS 7.5配置301重定向(URL重写)

需求背景: 如果您需要按seo搜索引擎结果中所显示的样式更改网页网址,建议您使用服务器端 301 重定向.这是确保用户及搜索引擎定向至正确网页的最佳方法.301 状态代码表示某网页已被永久迁移至新位置. 301 重定向功能在以下情况下尤为有用: 1.您已将网站移至新域,希望尽可能顺畅地完成这一转换. 2.人们通过不同网址访问您的网站.例如,如果可通过多种方式访问您的主页,如 http://example.com/home.http://home.example.com 或 http://www.

htaccess中URL重写(Rewrite)与301重定向(Redirect)配置

URL重定向是.htaccess的重头戏,它可以将长地址转为短地址.将动态地址转为静态地址.重定向丢失的页面.防止盗链.实现自动语言转换等.笔者觉得难点是在正则表达式的运用和理解上.有关htaccess的正则表达式用法,请查阅本站<.htaccess正则表达式>一文. 一.准备开始:mod_rewrite 实现所有这些神奇功能的模块叫做mod_rewrite,请确保你的服务器安装并启用了该模块: sudo a2enmod rewrite 我们一般会把所有涉及URL重写或者重定向的代码这样放置:

URL重写的几种实现方式的总结

URL重写,其实就是把带一大堆参数的url,变成一个看上去很规矩的url,主要目的是为了搜索引擎. 举例 /viewthread.jsp?id=1234 /viewthread.jsp?id=1235 /viewthread.jsp?id=1236 重写后,可以用 /viewthread/1234.htm /viewthread/1235.htm /viewthread/1236.htm 我目前使用Tomcat+Apache,尝试过三种重写的方法 一.Tomcat的过滤器 最典型的就是用 url