spring 화면 음악 에 직접 주입 되 는 Http ServletRequst 안전 합 니까?

HttpServletRequest 소개
HttpServletRequest 대상 은 클 라 이언 트 의 요청 을 대표 합 니 다.클 라 이언 트 가 HTTP 프로 토 콜 을 통 해 서버 에 접근 할 때 HTTP 요청 헤더 의 모든 정 보 는 이 대상 에 봉 인 됩 니 다.이 대상 이 제공 하 는 방법 을 통 해 클 라 이언 트 가 요청 한 모든 정 보 를 얻 을 수 있 습 니 다.
머리말
본 고 는 주로 spring mvc 가 Http ServletRequst 안전 에 직접 주입 하 는 것 과 관련 된 내용 을 소개 하 는데 매우 간단 해 보 이 는 문제 입 니 다.이 를 통 해 다음 spring 의 소스 코드 처 리 를 추적 합 니 다.
springMVC 를 쓰 는 Control 에는 request 대상 을 가 져 와 서 뭔 가 를 해 야 할 코드 가 많 습 니 다.
예:

@Controller
@RequestMapping(value = "/user")
public class LoanActionPage extends AbstractAction {
@RequestMapping(value = "/page/active")
public String loanAaccountActivePage(HttpServletRequest request) {
// get request to dosomething
String pathInfo = request.getPathInfo();
return "active";
}
}
control 을 쓸 때마다 request 를 매개 변수 로 전달 해 야 하 는 것 같 아서 지루 합 니 다.
사실 control 에서 request 대상 을 정의 하고 주입 한 다음 언제든지 사용 할 수 있 습 니 다.
예:

public class AbstractAction {
 @Autowired
protected HttpServletRequest request;
... ...
그리고 control 에서 직접 사용:

@Controller
@RequestMapping(value = "/user") 
public class LoanActionPage extends AbstractAction {

@RequestMapping(value = "/page/active") 
public String loanAaccountActivePage() { 
// get request to dosomething
String pathInfo = request.getPathInfo();
return "active"; 
}
}
그러면 문제 가 생 겼 습 니 다.sevlet 은 다 중 스 레 드 입 니 다.매번 요청 한 request 는 새로운 대상 입 니 다.이렇게 직접 인용 을 공유 하면 스 레 드 가 안전 하지 않 습 니까?
편리 합 니 다.문제 도 왔 습 니 다.server.lt 는 다 중 스 레 드 입 니 다.request 를 공유 하면 안전 문제 가 있 을 수 있 습 니까?spring 의 코드 를 분석 하 십시오.
1.주입 한 request 는 어디에서 옵 니까?

주입 인 것 으로 밝 혀 졌 습 니 다.사실은 WebapplicationContextUtils 에 RequestObject Factory 를 통 해 값 을 가 져 와 추적 합 니 다.

Request ContextHolder 의 값 을 되 돌려 줍 니 다.Request ContextHolder 추적

매번 되 돌아 오 는 것 은 RequestAttributes 의 실현 클래스 인 ServletWebRequest(ServletRequestAttributes)의 request 입 니 다.RequestAttributes 는 threadLocal 에 속 하기 때문에 주 입 된 request 도 라인 이 안전 합 니 다.
2,spring 은 언제 request 대상 을 설정 합 니까?
HttpServlet 실현 클래스 FrameworkServlet-> service()->processRequst()
요청 할 때마다 최신 request,값 을 설정 합 니 다.
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기