httpservletrequest 소개
httpservletrequest 객체는 클라이언트의 요청을 나타냅니다. 클라이언트가 HTTP 프로토콜을 통해 서버에 액세스하면 HTTP 요청 헤더의 모든 정보 가이 개체에서 캡슐화됩니다. 이 객체가 제공 한 방법을 통해 클라이언트가 요청한 모든 정보를 얻을 수 있습니다.
소개
이 기사는 주로 httpservletrequest의 스프링 MVC 직접 주입의 보안에 대한 관련 내용을 소개합니다. 매우 간단한 질문처럼 보이므로 Spring의 소스 코드 처리를 추적 할 수 있습니다.
컨트롤에는 SpringMVC를 작성하는 이러한 종류의 코드가 많이 있습니다.
좋다:
@controller@requestmapping (value = "/user") public class loanactionpage는 acpractAction {@requestmapping (value = "/page/active") public string loanaaccountactivePage (httpservletRequest request) {// dosomethingstring pathInfo = recipting에 대한 요청을 가져옵니다.컨트롤을 작성하고 싶을 때마다 요청을 매개 변수로 전달 해야하는 것 같습니다.
실제로 컨트롤에서 요청 객체를 정의하고 주입 한 다음 언제든지 사용할 수 있습니다.
좋다:
공개 클래스 추상 AbstractAction {@autowiredprotected httpservletrequest 요청; ... ...그런 다음 제어에서 직접 사용하십시오.
@controller@requestmapping (value = "/user") public class loanactionpage는 acpractAction {@requestMapping (value = "/page/active") public String loanaAccountActivePage () {// doSomethingString PathInfo = reture.getPathInfo (); return "active"; }}따라서 문제는 Sevlet이 멀티 스레드이며 요청할 때마다 요청이 실제로 새로운 개체입니다. 참조 공유는 직접 스레드가 불안하지 않습니까?
편리하고 문제도 여기에 있습니다. Servert는 실제로 멀티 스레드입니다. 요청을 공유하는 데 보안 문제가 있습니까? 스프링 코드를 분석하십시오
1. 주입 된 요청은 어디에서 왔습니까?
주입이 실제로 webapplicationcontextutils로 이동하여 requestObjectFactory를 통해 값을 얻고 추적하는 것으로 나타났습니다.
RequestContexTholder에서 값을 반환합니다. 요청 ContexTholder를 추적합니다
요청은 실제로 구현 클래스 Servletwebrequest (ServletRequestAttributes)의 요청입니다. requestAttributes는 threadLocal에 속하기 때문에 주입 된 요청은 또한 Sured-Safe입니다.
2. 스프링으로 요청 객체는 언제 설정됩니까?
httpservlet 구현 클래스 FrameworkServlet-> service()->processRequst()
각 요청은 최신 요청을 설정하고 값을 설정합니다.
요약
위는이 기사의 전체 내용입니다. 이 기사의 내용에 모든 사람의 연구 나 작업에 대한 특정 참조 가치가 있기를 바랍니다. 궁금한 점이 있으면 의사 소통을 위해 메시지를 남길 수 있습니다. Wulin.com을 지원 해주셔서 감사합니다.