2012-06-01 4 views

답변

0

물론 사전에

<% if (request.getHeader("User-Agent").toLowerCase().indexOf("msie") != -1) { %> 

덕분에, 가능성은 "사용자 에이전트"헤더의 모든 종류를 보내 해달라고 할 수있다. 이 경우 코드에서 NPE를 throw합니다. request.getHeader("User-Agent") == null => null에는 toLowerCase() 메서드가 없습니다.

이 경우 다음에 변경

: <% if (request.getHeader("User-Agent") != null && request.getHeader("User-Agent").toLowerCase().indexOf("msie") != -1) { %>

브라우저가 서버에 자신을 소개하는 방법을 결정, 당신이 원하는대로 텍스트에 사용자 에이전트를 변경할 수 gazillion 브라우저 애드온있다. 또 다른 예로, 당신의 인터넷 게이트웨이는 확실하게 그것을 통해 오는 모든 http 패킷으로부터 user-agent을 변경/제거 할 수 있습니다.

+0

빠른 응답을 보내 주셔서 감사합니다. 헤더 사용자 에이전트 속성이 null 인 시나리오를 제안 해 주시겠습니까? – user1430423

+1

브라우저가 서버에 자신을 소개하는 방법을 결정하면 원하는 텍스트로 사용자 에이전트를 변경할 수있는 gazylion 브라우저 추가 기능이 있습니다. 또 다른 예로, 인터넷 게이트웨이는 반드시 사용자 에이전트를 통해 오는 모든 http 패킷에서 사용자 에이전트를 변경/제거 할 수 있습니다. – IProblemFactory

+1

JSP에서는 null 체크를해서는 안되지만 다음과 같이 작성해야합니다. if! empty request.getHeader ("User-Agent")' –

5

request.getHeader("User-Agent")User-Agent 헤더가 클라이언트에서 전송되지 않은 경우 (필수는 아니지만) null을 반환 할 수 있습니다. 에 코드를 변경합니다

String userAgent = request.getHeader("User-Agent"); 
if (userAgent != null && userAgent.toLowerCase().indexOf("msie") != -1) 
11

아니,

request.getHeader("User-Agent") 

NPE을 던져해서는 안됩니다, 그것은 그러나 NPE를 통해이 경우 코드는 것에 null을 반환 할 수 있습니다.

브라우저 나 클라이언트의 대부분이있는 경우, request.getHeader("User-Agent")가 널 안 User-Agent header을 보내

+0

이것은 request.getHeader ("User_Agent")가 null이므로 null ponter 예외가 발생합니다. 즉, 요청 헤더에 user-agent가있는 속성이 없습니다. – user1430423

+0

예. 그래서 귀하의 질문에 대한 대답은 "아니오"입니다 - 당신의 의도 된 질문에 대한 대답은 "예"입니다 (그것은 null을 돌려 줄 수 있습니다). – esej

+0

요청이 null 인 경우 어떻게됩니까? :) – anotherdave

0

(나는 믿고있어 요청 HTTPServletRequest 또는 유사한의 인스턴스입니다).

그러나 일부 클라이언트/브라우저는 User-Agent header을 전송하지 않을 수 있으며,이 경우 코드가 NPE를 전송할 수 있습니다.

null 대소 문자를 처리해야합니다.

관련 문제