No estoy seguro de cómo expresar el título aquí, y por eso tampoco estoy seguro de cómo buscar la respuesta.¿Hay un contexto de solicitud en Java?
Tengo un motor de servlet java que maneja las solicitudes. Digamos que tenemos una solicitud doGet:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//set up user data
//do whatever the user requested
SomeClass c = new SomeClass();
c.doSomething();
}
Ahora en doSomething, quiero ser capaz de acceder el usuario que hizo la solicitud. En este momento lo estoy haciendo mediante la creación de un objeto java y pasándolo a donde quiera que necesito:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//set up user data
MyUserObj userObj = new MyUserObj();
userObj.setId('123');
//do whatever the user requested
SomeClass c = new SomeClass(userObj);
c.doSomething();
}
Al hacer esto, tienen acceso a la instancia de MyUserObj, y se puede pasar más adelante si es necesario.
Esto se siente descuidado. En asp.net MVC3 (actualmente lo estoy aprendiendo, comencé después de que comencé a aprender Java, pero encontré que esto era realmente conveniente, así que me hizo replantearme cómo lo estaba haciendo en Java). Puedo, por ejemplo, almacenar elementos para la versión actual. hilo como este: HttpContext.Current.Items.Add("myId", "123")
. HttpContext
está entonces disponible en otras funciones sin que tenga que pasar alrededor de un objeto.
¿Hay alguna manera en java para establecer algunas variables por solicitud (o incluso configurar el MyUserObject
para acceder más tarde) sin pasar el objeto como un parámetro?
Si esta es una pregunta común ya respondida, siéntase libre de apuntarme en la dirección correcta ya que no estaba seguro de cómo pronunciarla.
Me tomé la libertad de editar su título. Verifique si es bueno – Bozho
Me gustaría pasarlo de forma explícita, el estado implícito y las dependencias son malas para la mantenibilidad. Los marcos como Spring deberían ayudar a eliminar parte de la repetición y el desorden al hacer esto explícitamente. – millimoose
Si entendiste mi pregunta, confío en que la edición de tu título es mejor que mi título original :) – Two13