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

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

使用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);

         //用于只读的形式下,通过测试能够正常的使用



你可能感兴趣的:(JSF web编程中的JavaBean路径访问问题)