나는 스프링 빈을 정의했다.스프링 빈에서 클라이언트 IP 주소를 얻는 방법
<beans>
<bean id="remoteService" class="edu.wustl.catissuecore.CaTissueApplictionServicImpl" />
</beans>
이 클래스에 클라이언트의 IP 주소를 가져 오는 방법이 있습니까? 서블릿에서와 유사하게 request.getRemoteAddr()
;
나는 스프링 빈을 정의했다.스프링 빈에서 클라이언트 IP 주소를 얻는 방법
<beans>
<bean id="remoteService" class="edu.wustl.catissuecore.CaTissueApplictionServicImpl" />
</beans>
이 클래스에 클라이언트의 IP 주소를 가져 오는 방법이 있습니까? 서블릿에서와 유사하게 request.getRemoteAddr()
;
간단한 (그리고 추한) 접근 방식은 RequestContextHolder
을 사용하는 것입니다
String remoteAddress = ((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes())
.getRequest().getRemoteAddr();
여러분의 빈에 대한 자세한 내용을 알고이 최대 유선 어떻게하지 않으면, 그게 내가 제안 할 수있는 것이 가장 좋습니다. 빈이 컨트롤러 인 경우 (AbstractController
을 서브 클래 싱하거나 @Controller
으로 주석 처리 된 경우) 요청 객체에 직접 액세스 할 수 있어야합니다.
Bean이 AbstarctController를 상속하지 않습니다. bean은 다음과 같습니다. xml version = "1.0"encoding = "UTF-8"?>
localhost와 나중에 서버 측에서 코드를 실행 중이다. 서버 측은 완벽하게 작동합니다. 하지만 localhost는'0 : 0 : 0 : 0 : 0 : 0 : 0 : 1'을 반환하고'getLocalAddr()'을 사용하는 경우도 –
"요청 객체에 직접 액세스 할 수 있어야합니다" ? – jameshfisher
구성이 :
@Autowired(required = true)
private HttpServletRequest request;
과 같이 사용
request.getRemoteAddr()
클라이언트 IP를 얻을 수있는 가장 좋은 방법은
private static final String[] IP_HEADER_CANDIDATES = {
"X-Forwarded-For",
"Proxy-Client-IP",
"WL-Proxy-Client-IP",
"HTTP_X_FORWARDED_FOR",
"HTTP_X_FORWARDED",
"HTTP_X_CLUSTER_CLIENT_IP",
"HTTP_CLIENT_IP",
"HTTP_FORWARDED_FOR",
"HTTP_FORWARDED",
"HTTP_VIA",
"REMOTE_ADDR" };
public static String getClientIpAddress(HttpServletRequest request) {
for (String header : IP_HEADER_CANDIDATES) {
String ip = request.getHeader(header);
if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) {
return ip;
}
}
return request.getRemoteAddr();
}
1.)이인가 헤더를 통해 루프입니다 webapp 또는 그냥 임의의 봄 애플 리케이션? 2.) edu.wustl.catissuecore.CaTissueApplictionServicImpl (또는 gov.nih.nci.system.comm.server.ApplicationServiceServerImpl?) *은 AbstractController를 구현하지 않지만 * 구현 한 것은 무엇입니까? 컨트롤러 자체가 아니라면, 컨트롤러 위에이 클래스에 이것을 전달할 수있는 컨트롤러가 있습니까? 3) 클래스의 Spring 설정이 이미 주요 질문에 게시되었습니다. 코드를 게시하거나 상속 계층 구조와 클래스가 상호 작용하는 다른 bean을 설명해야합니다. – Nate