다른 서블릿에서 서블릿 POST 메서드를 호출하고 서블릿 매개 변수에서 BLOB를 전달해야합니다. 이것이 가능하면 어떻게 할 수 있습니까? 추신 : 아파치 HttpClient를 사용할 수 없습니다.다른 서블릿에서 서블릿 호출하기
답변
직접 HTTP 요청을 만들어 보내야합니다. 방법을 GET에서 POST로 변경하고 multipart/form-data
요청을 보내려고하기 때문에 forward/redirect/include를 사용할 수 없습니다.
HttpClient (및 다른 타사 라이브러리?)는 분명히 옵션이 아니기 때문에 가장 좋은 방법은 java.net.URLConnection
으로 제공된 표준 Java SE API를 사용하는 것입니다. 길고 길게 짧음 : Using java.net.URLConnection to fire and handle HTTP requests 하단에는 multipart/form-data
예제가 있습니다.
이 문제는 서블릿과 관련이 없습니다. 즉, main()
메서드를 사용하는 일반 바닐라 Java 응용 프로그램에서이 코드를 실행할 수 있어야합니다. 이를 통해보다 쉽게 테스트하고 미세 조정할 수 있습니다. 일단 작동 시키면 서블릿이 동일한 코드를 실행하게하십시오. 이 문제에 관련없는
, 나는 모두 서블릿 같은 웹 어플리케이션 컨텍스트에서 실행 확실히 경우, 어딘가 주요 설계 오류가 있다는 인상을 가지고있다. POST 요청을 보내려는 다른 서블릿은 너무 빡빡하게 결합되어 있으므로 리팩터링해야합니다.
응용 프로그램에서 다른 웹 서비스로 전화를 걸고 싶습니까? 그렇다면 HttpClient과 같은 것이 당신이 원하는 것입니다. 앱에서 프로그래밍 방식으로 다른 서블릿을 호출하려는 경우 forward to it 또는 include it 중 하나를 찾고 있습니다.
내 앱에서 다른 서블릿을 호출하려하지만 POST 메서드에 있어야합니다. 일반적으로 response.redirect (...)하지만 GET 메서드를 호출합니다 ... POST를 어떻게 호출 할 수 있습니까? – fernandohur
내가 말한 것은 : 당신이하고자하는 것에 따라 앞으로 또는 포함하기. 자세한 내용은 JEE 튜토리얼의 [ "다른 웹 자원 호출] (http://download.oracle.com/javaee/6/tutorial/doc/bnagi.html)을 참조하십시오. –
발송자를 애플리케이션의 다른 서블릿으로 가져 와서 전달하거나 @ Ryan이 제안한대로 포함시킬 수 있습니다. 코드는 첫 번째 서블릿 내부에서 이와 같아야합니다.
ServletContext context = this.getServletContext();
RequestDispatcher dispatcher = context.getRequestDispatcher("/otherurltoservlet");
// change your request and response accordingly
dispatcher.forward(request, response);
내가 필요한 건 내 애플 리케이션의 다른 서블릿에서 POST 메소드를 호출하는 것이다. 그 전화를 "otherurlososervlet"의 POST 메서드라고할까요? – fernandohur
첫 번째 서블릿이 게시를 통해 호출 된 경우 두 번째 호출은 dispatcher.forward 체인의 게시물을 통해 호출됩니다. – rmarimon
여기 GET to POST 관련 질문이 있습니다. http://stackoverflow.com/questions/4374548/does-jspforward-or-requestdispatcher-forward-use-get-or-post – rmarimon
- 1. 다른 서블릿에서 서블릿 호출하기
- 2. 다른 서블릿에서 서블릿 서비스 호출()
- 3. 자바 서블릿에서 스레드 호출하기
- 4. 서블릿에서 자바 클래스 호출하기 서블릿에서
- 5. 서블릿에서 jsp 호출하기
- 6. 서블릿에서 JSP 페이지 호출하기
- 7. 서블릿에서 생성 된 서블릿 생성 콘텐츠
- 8. 서블릿에서 사용할 수없는 서블릿 doFilter setAttributes
- 9. 서블릿에서 서블릿 컨테이너를 종료하는 방법은 무엇입니까?
- 10. 복수가 같은 형태가 다른 서블릿
- 11. Struts2의 다른 서블릿에서 보낸 스트림 요청을 읽으려고합니다.
- 12. 서블릿에서 글로벌 변수 동기화하기
- 13. 서블릿
- 14. 다른 컨트롤러에서 컨트롤러 호출하기
- 15. 다른 클래스의 클래스 호출하기
- 16. 다른 클래스의 메소드 호출하기
- 17. 다른 곳에서 컨트롤러 호출하기
- 18. 다른 활동 호출하기
- 19. 다른 액티비티의 메소드 호출하기
- 20. 다른 템플릿에서 템플릿 호출하기
- 21. 다른 함수를 인자로 호출하기
- 22. 다른 viewController에서 메서드 호출하기
- 23. 다른 폼에서 클래스 호출하기
- 24. 전에 다른 메소드 호출하기
- 25. 다른 뷰에서 클래스 호출하기
- 26. 다른 UIViewController에서 함수 호출하기
- 27. 다른 페이지에 다른 서블릿 사용
- 28. 하나의 서블릿에서 다른 서버에있는 다른 서블릿으로 파일 전송
- 29. 서블릿
- 30. 서블릿 다른 서버로 communticating
Apache HttpClient는 오픈 소스입니다 ... 복사하여 붙여 넣으시겠습니까? –
Google App Engine을 사용하기 때문에 사용할 수없는 일부 클래스에 제한을 부과합니다. – fernandohur