RequestContextHolder in Spring MVC

RequestContextHolder ist eine Spring-API zum Festlegen der Werte auf einen der drei Bereiche „Anfrage“, „Sitzung“ oder „Globale Sitzung“. Beachten Sie, dass wir in einigen Situationen möglicherweise nicht in der Lage sind, die eigentliche Anfrage aus der Anfrage abzurufen. Wir können einfach RequestContextHolder verwenden, um die Anfrageattribute abzurufen und die Werte festzulegen. Wir müssen die Bereichs-ID explizit als Parameter übergeben. RequestContextHolder verfügt über die folgenden drei Methoden:

  • currentRequestAttributes() – Gibt die aktuell an den Thread gebundenen RequestAttributes zurück.
  • getRequestAttributes() – Gibt die aktuell an den Thread gebundenen RequestAttributes zurück.
  • resetRequestAttributes() – Setzt die RequestAttributes für den aktuellen Thread zurück.
  • setRequestAttributes(RequestAttributes attributes) – Binden Sie die angegebenen RequestAttributes an den aktuellen Thread und machen Sie sie nicht als vererbbar für untergeordnete Threads verfügbar.
  • setRequestAttributes(RequestAttributes attributes, boolean inheritable) – Binden Sie die angegebenen RequestAttributes an den aktuellen Thread.

Schauen wir uns das Beispiel an.

1. Spring MVC-Controller

SpringMVCController.java

package javabeat.net.spring.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;

@Controller
public class SpringMVCController {

	@RequestMapping(value = "/springmvctest", method = RequestMethod.GET)
	public String redirectTest() {

		//Setting value to HttpSession object
		RequestContextHolder.getRequestAttributes().setAttribute("KEY_VALUE",
				"TEST_VALUE", RequestAttributes.SCOPE_SESSION);
		return "hello";
	}
}

2. Ansichten

hallo.jsp

<html>
<body>
	<h1>JavaBeat Spring MVC - RequestContextHolder</h1>
	<h2>Session Value : ${KEY_VALUE}</h2>
</body>
</html>

3. Federkonfigurationen

spring-dispatcher-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
	<context:component-scan base-package="javabeat.net.spring.controller" />
	<bean id="jspViewResolver"
		 >
		<property name="prefix" value="/WEB-INF/jsp/" />
		<property name="suffix" value=".jsp" />
	</bean>
</beans>

4. Bereitstellungsdeskriptor

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>Spring MVC Web Application</display-name>
	<servlet>
		<servlet-name>spring-dispatcher</servlet-name>
		<servlet-class>
			org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>spring-dispatcher</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
</web-app>

5. RequestContextHolder-Demo

RequestContextHolder in Spring MVC

(wpdm_file id=96)

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen