2016-09-27 5 views
0

jsp 페이지와 서블릿을 사용하여 프로젝트를하고 있습니다.jsp 페이지에서 서블릿을 호출하는 방법을 알고 싶습니다.

내 서블릿에서 요청을 처리하는 JSP 페이지를 식별해야합니다.

어떻게하면됩니까?

+0

어떤 종류의 요청을? 브라우저의 외부 요청 또는 일부 내부 include/dispatch? – Thilo

+0

jsp 페이지에서 웹 페이지에 게시물을 쓰는 양식이 있습니다 @ Thhilo – untruste

+2

요청에 referer 속성을 읽을 수는 있지만 안전하지는 않습니다. 이 옵션에 대한 첫 번째 해결책은 http : // stackoverflow를 참조하십시오.com/questions/10791109/request-getheaderreferer-back-button-reload-the-page –

답변

1

해결책을 찾았습니다.

제출 버튼에 이름을 설정했습니다.

<input type="submit" name="button" value="button1"> 

는 서블릿에서 나는

String r = request.getParameter("button"); 

내가 요청이 요청하고자에서 제공되는 양식을 식별 할 수

2

가장 간단한 방법은 어디에서 왔는지 알고 것을 이렇게 확인 양식 식별자가 들어있는 숨겨진 필드를 추가하십시오. 그러나 이것은 매우 드문 요구 사항입니다. 동일한 URL에 게시하는 경우 일반적으로 게시물의 원본이 중요하지 않음을 의미합니다. 중요한 경우 (이유는?) 차이점은 게시 된 데이터 (숨겨진 필드 제안)에 있어야합니다. 그렇지 않으면 다른 URL에 게시해야합니다. 서블릿은 너무 비싸지 않아서 번호를 제한해야합니다.

+0

다른 JSP 페이지가 있고 모든 사람들이 사용자 정의 양식을 가지고 있고 서블릿 하나만을 관리해야하기 때문에 중요합니다 (내 결정이 아니라면 모든 페이지에 대해 서블릿을 작성하지만 운동은 하나). 그래서 그것이 어떤 JSP 페이지 나 폼이 생성되었는지를 알 필요가있는 요청이 왔을 때! Btw 난 내 해결책을 찾았습니다 :) 모두 감사합니다! – untruste

+0

@untruste 데이터를 보내는 사용자에 따라 어떤 형식이 기대되는지 알고 있어야합니다. – AxelH

1

서블릿의 경우 doGet/doPost를 사용하여 요청을 처리하고 응답을 반환한다고 가정하고 jsp의 요청에서 숨겨진 입력 필드를 추가하여 서블릿이 다음 JSP 서블릿에서

<input type="hidden" name="jspname" value="jspname" /> 

:

새로운 숨겨진 입력 텍스트 필드를 추가

사용의 getParameter의 m : 당신의 JSP에서

의 doGet에 대한의 doPost 또는 대해 getQueryString()에 대한 ethod :의 doPost에

:

String jspname = request.getParameter("jspname"); 

jspname 문자열을 사용함으로써, 당신은 쉽게하는 그것을 사용하고 JSP 확인할 수 있습니다.

0

hidden input을 사용하면 다른 답변을 얻을 수 있습니다. 하지만 hidden input 없이는 그렇게 할 수 있습니다.

String referer = new URI(request.getHeader("referer")).getPath(); 

referer 문자열 URI 당신이 가득 차 있습니다. 또한 jsp 페이지 이름을 얻으려면 java code을 사용할 수 있습니다.

String[] uriNames = referer.split("/"); 
    String jspPageName = uriNames[uriNames.length-1]; 

또한 regex 당신은 jsp 페이지 이름을 얻을 수 있습니다.

Pattern pattern = Pattern.compile("(\\w+)(\\.)(jsp)"); 
    Matcher matcher = pattern.matcher(mydata); 
    String jspPageName = ""; 
    while(matcher.find()) { 
     jspPageName = matcher.group(); 
    } 
관련 문제