
传递一个参数进去不就有了,没办法传递那就 ThreadLocalset 然后在另一个地方 ThreadLocalget 再拿回来就是了。
pubblic class A {
private static final ThreadLocal instances = new ThreadLocal();
public static void put (Object target) { instancesset(target);}
public static Object get() {return instancesget();}
}
在请求之后调用 Aput(ServletContext); 在你的普通 java 类中调用 Aget();
ThreadLocal 像它的名字一样,它能保证这个 set 和 get 能对线程进行隔离,get 到的肯定是这个线程在之前 set 进去的东西,不会拿到其它线程的东西,因为 servlet 一个请求由一个线程服务的,我们需要保证请求完成后清理掉现场 set(null) 就可以了。
public void doGet(request, response) {
try {
Aset(requestgetServletContext());
// 其它正常的 *** 作。
} finally {
Aset(null);
}
}
你的普通类 Aget() 得到刚才那个 ServletContext。这个 try / finally 配对是必须的,因为 >
requestgetScheme()得到协议如:>
思路:在JSP页面中使用request内置对象,requestgetServletContext()getContextPath()获取路径。
代码如下:
首先得到ServletContext对象(jsp中的application)
其次得到WEB项目的的真实路径
String add=applicationgetRealPath("/"); super指得是GenericServlet类
最后,可以得到任意一个网站文件的地址:
add+requestgetServletPath();
以上就是关于在java web项目中,如何获取项目的绝对路径(考虑到后期移植不能写死),大神帮忙!全部的内容,包括:在java web项目中,如何获取项目的绝对路径(考虑到后期移植不能写死),大神帮忙!、web根目录在哪儿、在一个Java WEB项目里然后获取项目工程的路径 不要Tomcat下的路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)