JAVA过滤器ServletRequest如何转换成HttpServletRequest

我想对某一URL进行过滤,然后获取发起该请求的URL,为什么转换总报错?我的写法是:HttpServletRequestrequest=(HttpServletReque... 我想对某一URL进行过滤,然后获取发起该请求的URL,为什么转换总报错?
我的写法是:HttpServletRequest request=(HttpServletRequest) arg1;
但却报
org.apache.catalina.connector.ResponseFacade cannot be cast to javax.servlet.http.HttpServletRequest

我的需求就是,只能从a或者b页面里的超链接到达c页面,而不能直接在浏览器中输入c页面的URL,我想到的是通过过滤器的方法,请问前辈们还有更好的方法吗?谢谢!!!
展开
 我来答
an0011121
推荐于2018-03-04 · TA获得超过1.1万个赞
知道大有可为答主
回答量:3948
采纳率:55%
帮助的人:2366万
展开全部

问题1:

org.apache.catalina.connector.ResponseFacade cannot be cast to javax.servlet.http.HttpServletRequest

错误提示似乎挺明显的了,说一个类型不能强制转化为另一个类型。

待转型类型是:org.apache.catalina.connector.ResponseFacade 
目标类型是:javax.servlet.http.HttpServletRequest


我想你应该看出来了,ResponseFacade -->HttpServletRequest肯定是不行的?

也就是说你是用的那个arg1肯定是一个response,你写错了而已。

改过来就好。也建议你把arg这种的参数名字写作res或者rep比较容易识别,并且可以提高代码可读性的变量名。


问题2:

关于过滤器实现地址的拦截,那么首先获得请求的地址,也就是通过request对象,它有好多个获得url的不同不同部分的方法。比如可以使用getServletPath()方法获得请求的路径,然后判断是否合法,不合法跳转到指定页面,合法那么继续chain.doFilter()。

Storm代理
2023-07-25 广告
StormProxies是一家可靠的代理服务提供商,提供原生IP(住宅原生IP)和高匿名代理服务。以下是关于StormProxies的原生IP服务的一些信息:1. 住宅原生IP:StormProxies提供的住宅原生IP是指从真实的家庭或企... 点击进入详情页
本回答由Storm代理提供
伏冰安7x
2014-05-23 · TA获得超过128个赞
知道小有建树答主
回答量:165
采纳率:100%
帮助的人:134万
展开全部
哥们 我很久没写servlet了 但是你这个异常很明显啊
你把一个request强转为一个response 肯定不行啊
分析你这个代码 你应该是 把arg1写错了
应该是 (HttpServletRequest)arg0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式