技术开发 频道

JSF web编程中的JavaBean路径访问问题

  【IT168技术文档】

  使用JSF编写web程序的时候,JavaBean无法直接通过相对路径来访问文件。经过一天的研究主要发现两类解决方案,一是,通过FacesContext,二是,通过ClassLoader。

  下面通过实例来说明。

  首先是介绍web程序目录的大致结构:

  D:"......"Tomcat 6.0"webapps"imatrixb ------> 程序的更目录

  --META-INF

  --WEB-INF

  ---------------classess

  ---------------------------cn

  ----------------------------------com

  --------------------------------------------…… ----------->class 文件

  ---------------------------XmlData

  ---------------------------------path-config.xml (1)

  --------------- path-config.xml (2)

  …….

  Index.jsp

  一:FacesContext

  获得(2)号path-config.xml文件信息,

  代码如下:

  String partPath=/ WEB-INF/ path-config.xml”;   1. getRealPath():   FacesContext context = FacesContext.getCurrentInstance();   HttpServletRequest rst = (HttpServletRequest)context.getExternalContext().getRequest();   String fullPath=rst.getRealPath(xmlfile); // 获得xml文件的系统路径,xmlfile为相对路径

  采用这个方法存在一些隐患:比方说对一个打包的应用来说,是没有RealPath的概念的,调用getRealPath只会简单地返回null。

  2. getResourceAsStream():

  FacesContext context = FacesContext.getCurrentInstance();   InputStream xmlStream = context.getExternalContext()   .getResourceAsStream(xmlfile);

  用于只读的形式。

  二:ClassLoader

  获得(1)号path-config.xml文件信息,

  代码如下:

  String partPath =/XmlData/path-config.xml”;   String fullPath=this.getClass().getClassLoader().getResource(partPath).getPath();   //使用的时候还是存在一些问题,无法正常使用,暂时没有发现解决的办法   InputStream xmlStream=this.getClass().getClassLoader().getResourceAsStream(partPath);   //用于只读的形式下,通过测试能够正常的使用
0
相关文章