[好久没来提问了]取不到servlet实例的情况下,如何得到网站根目录实际路径 本帖最后由 java2000_net 于 2008-08-05 13:46:45 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 面包会有的,servlet实例也会有的。 比如说,servlet 调用静态对象来取得一份文本文件中的内容,但没有把自己传递过去。而这个文件在网站根目录下,使用文件对象来读取,想利用网站根目录 + 相对路径来读取,该怎么做? 斗胆问下你 你这个调用静态对象的servlet是什么?放心,回答了这个问题还有问题等着你。 你是想得到网站根目录吧?比如: http://localhost:8080/servlet/path/test request.getPathInfo(); // 返回/path/test request.getRequestURL(); // 返回http://localhost:8080/servlet/path/test request.getRequestURI(); // 返回/servlet/path/test request.getServletPath();// 返回/servlet 呃。我的意思是我要写一个类给 servlet 用,但又不需要传递 servlet 对象,这种场合下,如何取得 servlet 上下文。象 httpServlet, request, respone, session 等等对象,我无法直接取到。这样说,能理解么? 在这个servlet里先把网站目录获得,然后作为参数传递给静态对象 不知道 ResourceBundle.getBundle 是如何实现的。 把servlet传入访问文件的类中,不觉得耦合度有点高么?建议楼主重新审视一下自己程序的结构。 回楼上是啊,就是为了解耦,不想传,结果,就不知道怎么取WEB目录位置了。 用 ThreadLocal类,可以实现 写一个static的String,先在servlet初始化,全局变量啊,就可以了吧.是不是这个意思?你看我的昵称就知道我这个人理解能力差,呵呵 问题是人家怎么样才能在一个一般的类中去取啊?用getInitParameter("")吗?好像一般的类不行哦. String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 如:http :// 127.0.0.1 : 8080 /项目名/ jsp默认的 在你的这个类中无法直接得到 request,response 等对象,当然了可以利用其他的技术来得到他们.如果你仅想得到一些资源的路径,可以用 Class.getResource(path) 方法 你有没有过滤器啊,在过滤器中搞嘛,把config.getServletContext().getRealPath("\\")保存到一个static变量里,别的地方用到就用这个变量搞了 取不到一般在 Servlet 中获得根路径,当作参数传给业务逻辑方法,而不是把 Servlet 侵入到业务逻辑中去。 楼主的所说的这个是做不到的。被调用的这个bean类并没有生存在servlet容器中,自然无法获取容器相关信息。简单的就传个servlet对象进去就是了 呃,看来是不行了。记得在.net里,通过静态方法能取到吧,以为javaservlet也一样,失望了。结帖了,我就随便给分了。 可以往ThreadLocal里放东西,线程安全的,不过好象归容器管,JDK1.5里面的特性 做不到,那样的话怎么做啊,直接写死算了,比如:http://localhoist:8080/test/ struts中多个类似struts.xml文件配置怎么能? 有包,还是报ClassNotFoundException - - mysql插入时报错 邪了门儿了 这么多技术怎么学啊 高分求计算机毕业论文 求WEB编辑器 大家谁有时间帮我写个JSP的系统! 放分庆祝今天有8个结贴得分,得分147 有谁不用数据库连接池写了聊天室。 向ORACLE数据库插入一条记录时,未插入值的字段显示时能不是'NULL'字符串吗?? 好久没露头了,提供个供大家学习JPA+SPRING+JSF+RICHFACES的地方
而这个文件在网站根目录下,使用文件对象来读取,想利用网站根目录 + 相对路径来读取,该怎么做?
request.getRequestURL(); // 返回http://localhost:8080/servlet/path/test
request.getRequestURI(); // 返回/servlet/path/test
request.getServletPath();// 返回/servlet
我的意思是我要写一个类给 servlet 用,但又不需要传递 servlet 对象,这种场合下,如何取得 servlet 上下文。
象 httpServlet, request, respone, session 等等对象,我无法直接取到。这样说,能理解么?
在这个servlet里先把网站目录获得,然后作为参数传递给静态对象
建议楼主重新审视一下自己程序的结构。
是啊,就是为了解耦,不想传,结果,就不知道怎么取WEB目录位置了。
问题是人家怎么样才能在一个一般的类中去取啊?用getInitParameter("")吗?好像一般的类不行哦.
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
如:http :// 127.0.0.1 : 8080 /项目名/ jsp默认的
如果你仅想得到一些资源的路径,可以用 Class.getResource(path) 方法
记得在.net里,通过静态方法能取到吧,以为javaservlet也一样,失望了。
结帖了,我就随便给分了。