Einführung in httpServletRequest
Das HTTPServletRequest -Objekt repräsentiert die Anfrage des Kunden. Wenn der Client über das HTTP -Protokoll auf den Server zugreift, sind alle Informationen im HTTP -Anforderungsheader in diesem Objekt eingekapselt. Durch die von diesem Objekt bereitgestellte Methode können alle vom Client angeforderten Informationen erhalten werden.
Einführung
In diesem Artikel wird hauptsächlich verwandte Inhalte über die Sicherheit der Spring MVC Direct Injection von httpServletRequest eingeführt. Es scheint eine sehr einfache Frage zu sein, sodass wir die Quellcode -Verarbeitung von Frühling verfolgen können
Es gibt eine Menge dieser Art von Code im Steuer
wie:
@Controller@RequestMapping (value = "/user") Public Class LoanActionPage erweitert die AbstractAction {@RequestMapping (value = "/page/active") public String loanaAccountActActActivePage (httpServletrequest) {// Anforderung an die Dosenstraße pateinfo = Anfrage.Es scheint, dass ich jedes Mal, wenn ich eine Kontrolle schreiben möchte, die Anfrage als Parameter bestehen muss, was sehr überflüssig ist.
Tatsächlich können Sie ein Anforderungsobjekt in der Steuerung definieren, es injizieren und dann jederzeit verwenden.
wie:
öffentliche Klasse AbstractAction {@autowired -Protected HttpServletRequest Anfrage; ... ...Verwenden Sie es dann direkt unter Kontrolle:
@Controller@RequestMapping (value = "/user") öffentliche Klasse LoanActionPage erweitert AbstractAction {@RequestMapPing (value = "/page/active") public String loanaAccountActActActActActive () {// Anforderung an die Dosenstringung pathinfo = request.getPathInfo (); }}Die Frage ist also, dass Sevlets Multi-Threaded sind und die Anfrage jedes Mal, wenn sie anfordern, tatsächlich ein neues Objekt ist. Bewirken Sie direkt den Thread -Thread unsicher?
Es ist bequem und das Problem ist auch hier. Servert ist tatsächlich multi-thread. Gibt es ein Sicherheitsproblem bei der Weitergabe einer Anfrage? Analysieren Sie den Federcode
1. Woher kommt die injizierte Anfrage?
Es wird festgestellt, dass die Injektion tatsächlich zu WebApplicationContextutils geht, um den Wert über die RequestObjectFactory zu erhalten und ihn zu verfolgen
Gibt den Wert in RequestContexTHolder zurück. Tracks RequestContexTHolder
Die Anfrage, die jedes Mal zurückgegeben wurde, ist tatsächlich die Anfrage in der Implementierungsklasse ServletWebRequest (ServletRequestAttributes). Da Anfragen der ThreadLocal gehören, ist die injizierte Anforderung auch Thread-Safe.
2. Wann wird das Anforderungsobjekt von Frühjahr festgelegt?
HttpServlet-Implementierungsklassen FrameworkServlet-> service()->processRequst()
Jede Anfrage setzt die neueste Anfrage und legt den Wert fest
Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Referenzwert für das Studium oder die Arbeit eines jeden hat. Wenn Sie Fragen haben, können Sie eine Nachricht zur Kommunikation überlassen. Vielen Dank für Ihre Unterstützung bei Wulin.com.