Introducción a httpservletrequest
El objeto httpservletRequest representa la solicitud del cliente. Cuando el cliente accede al servidor a través del protocolo HTTP, toda la información en el encabezado de solicitud HTTP se encapsula en este objeto. A través del método proporcionado por este objeto, se puede obtener toda la información solicitada por el cliente.
introducción
Este artículo presenta principalmente contenido relacionado sobre la seguridad de la inyección directa de Spring MVC de HttpservletRequest. Parece una pregunta muy simple, por lo que podemos rastrear el procesamiento del código fuente de la primavera
Hay mucho de este tipo de código en el control que escribe SpringMVC, si necesita obtener el objeto de solicitud para hacer algo
como:
@Controlador@requestmapping (value = "/user") Public Class Lo PrestActionPage extiende AbstractAction {@RequestMapping (value = "/Page/Active") public String loanAccountActivePage (httpservletRequest request) {// Obtener solicitud a dosmetTingring pathInfo = request.getpathinfo (); regreso "activo";}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}Parece que cada vez que quiero escribir un control, tengo que aprobar la solicitud como parámetro, que es muy redundante.
De hecho, puede definir un objeto de solicitud en el control, inyectarlo y luego usarlo en cualquier momento.
como:
public class AbstractAction {@aUtowired Proprotected httpservletRequest solicitud; ... ...Luego úselo directamente en el control:
@Controlador@requestmapping (value = "/user") public class prestationPage extiende AbstractAction {@RequestMapping (value = "/page/activo") public String loanaAccountActivePage () {// Obtenga solicitud a DosomethingString pathInfo = request.getPathInfo (); return "activo"; }}Entonces, la pregunta es que los sevlets son de múltiples subprocesos, y la solicitud cada vez que solicitan es en realidad un objeto nuevo. ¿Compartir referencias causará directamente insegura de subprocesos?
Es conveniente y el problema también está aquí. Servert es en realidad múltiple. ¿Hay algún problema de seguridad al compartir una solicitud? Analizar el código de primavera
1. ¿De dónde viene la solicitud inyectada?
Se encuentra que la inyección en realidad va a la aplicación webcontextutils para obtener el valor a través de request toObCactory y rastrearlo
Devuelve el valor en requestContexTholder. Rastrea requestContexTholder
La solicitud devuelta cada vez es en realidad la solicitud en la clase de implementación ServletWebRequest (ServLetRequestattributes). Debido a que requestattributes pertenece a ThreadLocal, la solicitud inyectada también es segura.
2. ¿Cuándo se establece el objeto de solicitud por primavera?
Httpservlet Clase de implementación FrameworkServlet-> service()->processRequst()
Cada solicitud establecerá la última solicitud y establecerá el valor
Resumir
Lo anterior es todo el contenido de este artículo. Espero que el contenido de este artículo tenga cierto valor de referencia para el estudio o el trabajo de todos. Si tiene alguna pregunta, puede dejar un mensaje para comunicarse. Gracias por su apoyo a Wulin.com.