从JSP中的类中调用application.getRealPath()

时间:2010-07-21 09:51:43

标签: java jsp

我在JSP中编写一个类来从XML文件中检索一堆配置值。我的计划是让一个类“XMLConfig”加载文件中的值,然后使用访问方法来获取配置对象中的值。

我的问题是我似乎无法从类中调用application.getRealPath(),因为eclipse告诉我“应用程序无法解析”。我怀疑我必须将“申请”更改为其他内容,但我不确定是什么。

我的课程代码:

<%!
//Config object
public class XMLConfig {

 public boolean loadConfigFile(String strName) {
  String XMLfileName = application.getRealPath(strName);
  try {
   DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
   Document doc = null;
   doc = db.parse(XMLFileName);
  }catch(Exception e)
  {
   System.out.println(e.getMessage());
   return false;
  }
  return true;

 }
}
%>

2 个答案:

答案 0 :(得分:0)

应用程序不是全局变量。如果你想在你的方法中使用它,那么你需要将它作为参数传递。

不确定为什么要在jsp中定义类,而不是仅创建一个“普通”java类。

答案 1 :(得分:0)

这是servlet而不是JSP的工作。创建一个extends HttpServlet的类,并按如下方式实现doGet()方法:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String strName = getOrDefineItSomehow();
    Document doc = loadConfigFile(getServletContext().getRealPath(strName));
    // Do whatever you want with it and then display JSP page.
    request.getRequestDispatcher("/WEB-INF/config.jsp").forward(request, response);
}

web.xmlurl-pattern将此servlet映射到例如/config的{​​{1}},并通过例如http://example.com/context/config调用它。它将运行doGet()中的代码。

另见: