2012-06-18 11 views
14

Mi empresa está rehaciendo nuestro sitio web en los próximos meses, yendo de un sitio web de ColdFusion a uno escrito en Java. Solo estoy aprendiendo Java y tengo curiosidad sobre cómo puedo establecer las variables de ámbito de aplicación en una aplicación web Java. ColdFusion tiene el archivo application.cfm que contiene variables a las que pueden acceder todas las páginas/componentes de ColdFusion dentro de la aplicación. Java, obviamente, no tiene un equivalente directo a ese archivo, por lo que me preguntaba cómo volver a crear algo similar en Java. Quiero tener un lugar central al que puedan acceder todas las páginas jsp, servlets, clases, etc. en la aplicación web.Uso de variables de ámbito de aplicación en java

Entonces, ¿cuál es la mejor manera de hacer algo como eso?

¿Alguien tiene algún ejemplo de algo similar que hicieron?

¿Deben colocarse las variables de ámbito de aplicación en una clase? un archivo xml? una página jsp? ¿algo más?

¿Es incluso factible tener variables de ámbito de aplicación a en la aplicación web Java? Sería un lugar que contiene la ruta a una carpeta de imágenes, así que en páginas o clases JSP individuales o lo que sea necesario acceder a esa carpeta de imágenes, podría hacer referencia a la variable de ámbito de la aplicación para esa ruta de escribirlo en cada lugar. Entonces, si por alguna razón necesitábamos mover la ubicación de esa carpeta de imágenes, simplemente cambiaríamos la variable de ruta en la única ubicación y no tendríamos que actualizar 20 lugares que hacen referencia a esa carpeta de imágenes.

He tenido problemas para encontrar cualquier información sobre este tipo de cosas en mi investigación en línea, por lo que estoy preguntando al respecto aquí. Sé que es mucho pedir una explicación para este tipo de cosas, pero pensé que podría preguntar y ver qué tipo de respuestas podría obtener.

Gracias por cualquier ayuda que pueda brindar sobre este tema.

Respuesta

23

El equivalente es probablemente el ServletContext

En su controlador servlet:

ServletContext context = request.getSession().getServletContext(); 

Al igual que en el objeto de sesión se puede almacenar atributos en el contexto de servlet, así

context.setAttribute("someValue", "aValue"); 

Object attribute = context.getAttribute("someValue"); 

Si estás comenzando con Java y tienes una aplicación no trivial para construir, te recomendaría usar un framework popular como Spring o Struts

+0

Gracias. Cuando configura un atributo en el contexto del servlet, ¿caduca cuando la sesión expira? Hasta ahora, he descubierto que puedo establecer etiquetas en mi archivo web.xml y acceder a ellas a través del contexto de servlet, pero dudo que usar el método setAttribute realmente cambie el archivo web.xml, especialmente en tiempo de ejecución. Entonces, ¿cuál sería el objetivo de establecer un atributo en el contexto del servlet? ¿Es realmente diferente de establecer un atributo de sesión? Tengo curiosidad. – kei23th

+3

Puede pensar en el 'ServletContext' como un espacio global compartido por todos los Servlets, JSP, etc. La' HttpSession' por otro lado es específica para cada usuario. El ServletContext puede ser inicializado por web.xml, pero las aplicaciones J2EE nunca escriben en web.xml. Por lo general, es una tienda de solo lectura. La mejor práctica es definir valores de "ámbito de aplicación" utilizando un marco como Springs ['ApplicationContext'] (http://static.springsource.org/spring/docs/2.0.x/api/org/springframework/context/ApplicationContext.html) y no contaminar el web.xml. Recomiendo revisar algunos [Tutorial] (http://www.springsource.org/tutorials) documentos – Brad

Cuestiones relacionadas