2011-10-26 2 views
2

나는 매우 간단한 JSP 파일을 가지고 있는데, 어느 정도는 get 변수를 표시합니다. 내가 webpage.jsp?name=Alice에 가면JSP에서 잘못된 요청을 "throw"하는 방법

<p>Hello, <%= request.getParameter("name") %></p> 

그래서, 나는 Hello, Alice을받을 것입니다. 반면에 webpage.jsp으로 가면 Hello, null이됩니다.

name 변수가 설정되지 않은 경우 대신 잘못된 요청을 보내려고합니다. 서블릿에서이 작업을 수행 할 것입니다 :

response.sendError(HttpServletResponse.SC_BAD_REQUEST); 
    return; 

어떻게 JSP 페이지에서 이와 비슷한 작업을 수행 할 수 있습니까?

답변

4

JSP의 <% %> 안에 동일한 코드를 넣으면됩니다. 그 시점에서 응답이 커밋되지 않도록해야합니다. 그렇지 않으면 IllegalStateException과 마주 칠 것입니다. 따라서 모든 HTML 템플리트 내용이 방출되기 전에 JSP 파일 맨 위에서 호출해야합니다.

말할 필요도없이 JSP는 요청/응답을 제어 할 수있는 정확한 장소 인 not입니다. 이 특별한 경우에는 세션 전체 로그인과 관련하여 servlet 또는 filter으로 작업하고 싶습니다. 또한 "Hello"행은 <p>Hello, <c:out value="${param.name}" /></p>으로 수행하는 것이 더 좋습니다. 유지 관리 기능이 향상 될뿐만 아니라 사이트가 거대한 XSS 공격으로부터 보호됩니다.

+0

c : out을 작동시키지 못했지만 '<% = StringEscapeUtils.escapeHtml (request.getParameter ("cid")) %>'로 바꿨습니다. 잘하면 작업을 수행합니다 :) – Svish

+0

JSTL을 설치하고 (컨테이너가 그것을 지원하지 않는다면)'c' taglib을 선언하십시오. 설치 및 선언에 대한 자세한 내용은 JSTL Wiki 페이지도 참조하십시오. http://stackoverflow.com/tags/jstl/info (서블릿 및 필터 wiki 페이지 링크도 내 대답에 포함 되었습니까?) – BalusC