Java 从JSP中的类内调用application.getRealPath()
我正在用JSP编写一个类,从XML文件中检索一组配置值。我的计划是使用一个类“XMLConfig”加载文件中的值,然后使用访问方法获取config对象中的值 我的问题是,我似乎无法从类内调用application.getRealPath(),因为eclipse告诉我“应用程序无法解决”。我怀疑我必须将“应用程序”更改为其他内容,但我不确定是什么 我的课程代码:Java 从JSP中的类内调用application.getRealPath(),java,jsp,Java,Jsp,我正在用JSP编写一个类,从XML文件中检索一组配置值。我的计划是使用一个类“XMLConfig”加载文件中的值,然后使用访问方法获取config对象中的值 我的问题是,我似乎无法从类内调用application.getRealPath(),因为eclipse告诉我“应用程序无法解决”。我怀疑我必须将“应用程序”更改为其他内容,但我不确定是什么 我的课程代码: <%! //Config object public class XMLConfig { public boolean loa
<%!
//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;
}
}
%>
应用程序不是全局变量。如果要在方法中使用它,则需要将其作为参数传递
不确定为什么要在jsp中定义类,而不是仅仅创建一个“普通”java类。应用程序不是一个全局变量。如果要在方法中使用它,则需要将其作为参数传递
不知道为什么要在jsp中定义类,而不仅仅是创建一个“普通”java类。这是一个servlet而不是jsp的工作。创建一个
扩展的类
,并实现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);
}
将此servlet映射到web.xml
的url模式上,例如/config
,并通过调用它。它将在doGet()
中运行代码
另见:
这是一个servlet作业,而不是JSP作业。创建一个扩展的类
,并实现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);
}
将此servlet映射到web.xml
的url模式上,例如/config
,并通过调用它。它将在doGet()
中运行代码
另见:
在JSP中定义类是一种糟糕的做法。我强烈建议您将其重写为servlet。我无法使此代码高亮显示正常工作。有人帮我一下吗?也不推荐使用getRealPath()
,因为根据servlet容器的不同,您的webapp可能无法实际映射到文件系统上的真实路径。我明白了,您能推荐一个可行的替代方案吗?另外,纯粹出于兴趣,为什么application.getRealPath()在类声明之外工作,而不是在类声明内部工作?因为应用程序对象是在JSP上下文中提供的,所以我们的类是一个子上下文。您可以通过将应用程序对象作为参数传递给loadConfigFile()
方法来“修复”此问题。(顺便说一句,getRealPath()
也出现在ServletContext
接口中。)在JSP中定义类是错误的做法。我强烈建议您将其重写为servlet。我无法使此代码高亮显示正常工作。有人帮我一下吗?也不推荐使用getRealPath()
,因为根据servlet容器的不同,您的webapp可能无法实际映射到文件系统上的真实路径。我明白了,您能推荐一个可行的替代方案吗?另外,纯粹出于兴趣,为什么application.getRealPath()在类声明之外工作,而不是在类声明内部工作?因为应用程序对象是在JSP上下文中提供的,所以我们的类是一个子上下文。您可以通过将应用程序对象作为参数传递给loadConfigFile()
方法来“修复”此问题。(顺便说一句,getRealPath()
也出现在ServletContext
界面中。)感谢您的提示。我阅读了有关导入自己的java类的内容,现在将该类放在一个单独的.java文件中。getRealPath()问题不再是一个真正的问题,但这非常有用。谢谢你的提示。我阅读了有关导入自己的java类的内容,现在将该类放在一个单独的.java文件中。getRealPath()问题不再是一个真正的问题,但这非常有用。