开发者

Calling application.getRealPath() from within a class in JSP

开发者 https://www.devze.com 2023-01-08 18:10 出处:网络
I am writing a class in JSP to retrieve a bunch of config values from an XML file. My plan is to have a class \"XMLConfig\" that loads in the 开发者_JAVA百科values from the file, and then uses access

I am writing a class in JSP to retrieve a bunch of config values from an XML file. My plan is to have a class "XMLConfig" that loads in the 开发者_JAVA百科values from the file, and then uses access methods to get at the values in the config object.

My problem is that i cannot seem to call application.getRealPath() from within the class, since eclipse tells me that "application cannot be resolved". I suspect that I must change "application" to something else but I am unsure what.

My code for the class:

<%!
//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;

 }
}
%>


application isn't a global var. If you want to use it in your method then you'll need to pass it as a parameter.

Not sure why you're defining the class within the jsp though instead of just creating a 'normal' java class.


That's a job for a servlet instead of JSP. Create a class which extends HttpServlet and implement the doGet() method as follows:

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);
}

Map this servlet in web.xml on an url-pattern of for example /config and invoke it by for example http://example.com/context/config. It'll run the code in doGet().

See also:

  • Beginning and intermediate JSP/Servlet tutorials
  • How to avoid Java code in JSP?
  • Hidden features of JSP/Servlet
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号