Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JSP/servlet read parameters from properties file?

My JSP pages need to display different information depending on which environment they're in (dev, production, sandbox, etc). I want to have a properties file for each of these environments that contain all the parameters they might need. How can I reference the properties from this file in a JSP page?

My thoughts are:

  • Have a servlet feed the properties in the form of a model object to all JSP pages so I can reference them like ${properties.propertyName}
  • Somehow reference this property file in the web.xml, then maybe I call something like ${context.properties.propertyName}?
  • Instead of a properties file, list parameters in web.xml and reference those in the JSP pages. Not sure how to do this, but I'd very much prefer a simpler properties file.

UPDATE - I should've mentioned I'm using Spring 3.0 and Spring webmvc. So if there's some best practices way to do this using Spring, that's ideal!

like image 616
at. Avatar asked Oct 13 '10 00:10

at.


People also ask

How read value from properties file in JSP?

Create a property file in the package with extension '. properties' and use those properties defined in the file in jsp by importing the resource bundle package in the jsp.

How do I read properties file in web application?

Expand the Web Applications folder, then highlight the icon that represents your application. Choose File | Web Application Properties.


1 Answers

  • You can load the properties using java.util.Properties (or commons-configuration) in a ServletContextListener's contextInitialized(..) method.

  • register the listener with <listener> in web.xml

  • You then store the Properties into the ServletContext (you can get it from the event) (ctx.setAttribute("properties", properties)

  • then access the properties using ${applicationScope.properties.propName} (as BalusC noted, applicationScope is optional)

Update:

Initially I thought spring had some ready-to-use facility for that, but it turns out it's not exactly the case. You have two options:

  • this article explains something similar to my suggestion above, but using spring's PropertyPlaceholderConfigurer

  • this answer and this answer allow you to expose all your beans, including a PropertyPlaceholderConfigurer to the servlet context.

like image 186
Bozho Avatar answered Sep 24 '22 08:09

Bozho