JAVA过滤器ServletRequest如何转换成HttpServletRequest

JAVA过滤器ServletRequest如何转换成HttpServletRequest,第1张

问题1:

orgapachecatalinaconnectorResponseFacade cannot be cast to javaxservlet

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

待转型类型是:orgapachecatalinaconnectorResponseFacade 

目标类型是:javaxservlet

我想你应该看出来了,ResponseFacade -->>

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

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

问题2:

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

当我们访问indexjsp/时,其实并不是我们浏览器真正访问到了服务器上的indexjsp 文件,而是先由代理服务器去访问indexjsp。

代理服务器再将访问到的结果返回给我们的浏览器,因为是代理服务器去访问indexjsp的。

所以indexjsp中通过 requestgetRemoteAddr()的方法获取的IP实际上是代理服务器的地址,并不是客户端的IP地址。

于是可得出获得客户端真实IP地址 的方法:

public class Myfilter implements Filter { 

public void destroy() {

}

private >

private >

public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {

request = (>

response = (>

Systemoutprintln(requestgetRequestURI());

Systemoutprintln("===ff===="+requestgetQueryString());

if("1"equals(requestgetRequestURI()substring(("/"+requestgetContextPath())length()))){

requestgetRequestDispatcher("/myjsp")forward(request, response);

return;

}

arg2doFilter(request, arg1);

}

public void init(FilterConfig arg0) throws ServletException {

}

}

展开

Request中的各种方法

2017年02月09日 10:36:55  现龙在田丶  阅读数:7250 标签:  java web  web  Request  更多

个人分类:  JAVA  Web  Request

原文地址:>

java文件中获得路径

ThreadcurrentThread()getContextClassLoader()getResource("") //获得资源文件(class文件)所在路径

ClassLoadergetSystemResource("")

Class_NameclassgetClassLoader()getResource("")

Class_Nameclass getResource("/")

Class_Nameclass getResource("") // 获得当前类所在路径

SystemgetProperty("userdir") // 获得项目根目录的绝对路径

SystemgetProperty("javaclasspath") //得到类路径和包路径

打印输出依次如下:

file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/

file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/

file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/

file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/

file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/com/xml/imp/

F:\work_litao\uri_test

F:\work_litao\uri_test\WebContent\WEB-INF\classes;F:\work_litao\uri_test\WebContent\WEB-INF\lib\dom4jjar

2、 JSP中获得当前应用的相对路径和绝对路径

根目录所对应的绝对路径:requestgetRequestURI()

文件的绝对路径:applicationgetRealPath(requestgetRequestURI());

当前web应用的绝对路径 :applicationgetRealPath("/");

取得请求文件的上层目录:new File(applicationgetRealPath(requestgetRequestURI()))getParent()

31 JSP中获得当前应用的相对路径和绝对路径

根目录所对应的绝对路径:requestgetRequestURI()

文件的绝对路径:applicationgetRealPath(requestgetRequestURI());

当前web应用的绝对路径 :applicationgetRealPath("/");

取得请求文件的上层目录:new File(applicationgetRealPath(requestgetRequestURI()))getParent()

3、Servlet中获得当前应用的相对路径和绝对路径

根目录所对应的绝对路径:requestgetServletPath();

文件的绝对路径 :requestgetSession()getServletContext()getRealPath(requestgetRequestURI())

webapp路径:requestgetSession()getServletContext()getRealPath("/")

当前web应用的绝对路径 :servletConfiggetServletContext()getRealPath("/");

(ServletContext对象获得几种方式:

javaxservlet>

我当初在利用Struts2实现电子商务购物系统的时候,也遇到这个问题,想记录用户之前访问的URL,包括点击的所有参数信息,后面给我解决了。我是利用拦截器去做的,然后把用户的URL存到Session当中。这是我的源码,你可以按照这个思路去做,应该没有问题的,我的项目已经验收通过了。希望能够帮到你,谢谢

/

方便用户返回上一个浏览界面

/

import javaxservlet>

>

servlet中获得项目绝对路径

String filePath=thisgetServletConfig()getServletContext()getRealPath("/");

根目录所对应的绝对路径:requestgetServletPath();

文件的绝对路径 :requestgetSession()getServletContext()getRealPath(requestgetRequestURI())

当前web应用的绝对路径 :servletConfiggetServletContext()getRealPath("/");

ServletContext对象获得几种方式:

Javaxservlet>

以上就是关于JAVA过滤器ServletRequest如何转换成HttpServletRequest全部的内容,包括:JAVA过滤器ServletRequest如何转换成HttpServletRequest、java filter 如何中获取请求地址、Request中的各种方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9482412.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存