我在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;
}
}
%>
答案 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.xml
上url-pattern
将此servlet映射到例如/config
的{{1}},并通过例如http://example.com/context/config调用它。它将运行doGet()
中的代码。