2017-05-16 2 views
0

매개 변수를 추가하고 게시 방법의 요청 만 허용하는 페이지로 리디렉션하려고합니다. 내 서블릿에서이 코드를 사용하고 있으며 URL로 전달하지 않습니다.게시 방법의 URL로 리디렉션 보내기

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
    String url = "http://www.thisone.com"; 
    InputStream in = null; 
      try { 
        HttpClient client = new HttpClient(); 
        PostMethod method = new PostMethod(url); 

        //Add any parameter if u want to send it with Post req. 
        method.addParameter("User", "xyz"); 
        method.addParameter("Name", "abc"); 

        int statusCode = client.executeMethod(method); 
        System.out.println(statusCode); 
        if (statusCode != -1) { 
         response.sendRedirect(response.encodeRedirectURL(url)); 
         in = method.getResponseBodyAsStream(); 
        } 

       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
} 

답변

0

이 방법을 사용하여 post 방법으로 리디렉션 할 수 있다고 생각하지 않습니다. 당신이 할 수있는 것은 클라이언트에게 응답을 얻고 따라서 응답으로 위치 헤더를 설정하는 것입니다. 당신의 조건이 만족되면

: 동일한에 대한 구현은 아래와 같습니다

response.setStatus(307); 
response.addHeader("Location", "<url>"); 

는 307 상태 코드의 중요성을 확인하십시오. 가 URL을 수신하면 여기서

는 AJAX 요청을 시작하여 원하는 URL를 가져 서블릿 충돌 자바 스크립트 코드이며, ...하는 HTML 양식 객체를 생성 값을 설정하고 양식을 제출

<script> 
    var xhttp = new XMLHttpRequest(); 
    xhttp.onreadystatechange = function() { 
     if (this.readyState == 4 && this.status == 200) { 
      callURL(this.responseText); 
     } 
    }; 
    xhttp.open("GET", "TestServlet", true); 
    xhttp.send(); 

    function callURL(url){ 
     var form = document.createElement("form"); 
     form.setAttribute('method', 'POST'); 
     form.setAttribute('action', url); 
     form.setAttribute('id', 'frmProduct'); 
     form.style.display = 'none'; 

     var i = document.createElement('input'); 
     i.setAttribute('type', 'text'); 
     i.setAttribute('name', 'name'); 
     i.setAttribute('value', 'Neeraj'); 
     form.appendChild(i); 
     document.getElementsByTagName('body')[0].appendChild(form); 
     form.submit(); 
    } 
</script> 

다음은 어떻게

@WebServlet("/TestServlet") 
public class TestServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    /** 
    * @see HttpServlet#HttpServlet() 
    */ 
    public TestServlet() { 
     super(); 
    } 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     String url = "http://www.thisone.com"; 
     PrintWriter out = response.getWriter(); 
     out.print(url); 
    } 
} 
+0

내가이 –

+0

날 sendRedirect을 작동 방식을 명확히하자 사용하여 매개 변수를 전달 내 Testservlet의 구현입니다. sendRedirect를 실행하면 요청이 클라이언트로 되돌아 가고 브라우저의 URL이 변경된 다음 리디렉션됩니다. 어쨌든 클라이언트 측에서 리디렉션하고 있습니다. 당신이 할 수있는 것은 클라이언트 측에서 URL을 얻는 것입니다. javascript를 사용하여 매개 변수를 전달한 다음 요청을 원하는 URL에 게시하십시오. 동일한 구현을 쓰려면 ... –

+0

예. 도울 수 있습니다. .. –