2013-04-10 3 views
0

HttpURLConnection을 사용하여 서블릿에 연결하는 Java 애플리케이션이 있습니다. 애플리케이션은 연결할 때 url에있는 서블릿에 전달할 매개 변수를 포함합니다. 서블릿은 doGet()을 사용하여 이러한 매개 변수에 액세스하고 처리 할 수 ​​있습니다. 나는이 부분을 다룰 것이다. (매개 변수에 액세스하여 서블릿에 전달할 수있다.)서블릿의 RequestDispatcher.forward() 메소드가 작동하지 않습니다.

다음으로 서블릿에서 JSP로이 매개 변수를 전달하고 싶습니다. 나는 그것을하기 위해 request.setAttribute()를 사용하고있다. 그러나 RequestDispatcherObj.forward(request, response) 이후에도 JSP는 열리지 않습니다. 심지어 response.sendRedirect(url) 시도했습니다.

그러나 서블릿을 독립적으로 실행하면 위의 메소드 (forward() 및 sendRedirect())가 모두 제대로 작동하고 JSP 페이지가 열립니다.

내가 뭘 잘못하고 있는지 궁금해.

미리 도움을 주셔서 감사합니다.

CODE :

자바 응용 프로그램

serverAddress = new URL("http://localhost:8080/WebApp/ServletPath"+"?message1"+"="+message); 
(HttpURLConnection)serverAddress.openConnection(); 
connection.setRequestMethod("GET"); 
connection.setRequestProperty("Accept-Charset", charset); 
connection.setReadTimeout(10000); 
connection.connect(); 

서블릿

message = request.getParameter("message1");//working 
request.setAttribute("message1", message);//to be read in the jsp 
url="/index.jsp"; 
RequestDispatcher dispatcher=getServletContext().getRequestDispatcher(url); 
dispatcher.forward(request, response);//Works when servlet is run independently but not when the servlet is called from the App 

}

+0

일부 코드는 더 명확해질 것입니다 ... –

+0

Java 응용 프로그램을 실행할 때 어떤 일이 발생할 것으로 예상합니까? 그리고 "서블릿이 독립적으로 실행될 때"는 무엇을 의미합니까? 앱이 서블릿에 요청을 보낼 때 브라우저에 JSP가 표시 될 것으로 예상하지 않습니까? –

+0

예 실제로 그런 일이 일어날 것으로 예상하고있었습니다. – CCGooner

답변

0

HttpURLConnection 브라우저가 및 디스플레이 연결하는 내용을 변경하는 데 사용되지 않습니다. Java 응용 프로그램 자체에서 HTTP 연결을 만드는 데 사용됩니다.

Java 프로그램이 URL에 연결하고 응답을 읽으면 브라우저는 그것에 대해 알지 못하며 마술처럼 아무것도 표시하지 않습니다. Java 응용 프로그램에서 URL에 연결하면 브라우저에서와 동일한 작업을 수행하지만 자신의 프로그램에서 수행합니다. 따라서 연결의 응답을 읽고 웹 응용 프로그램이 보낸 것을 표시 할 수 있습니다.

+0

설명해 주셔서 감사합니다. 다음 작업을 수행 할 수있는 다른 방법이 있습니까? a) 내 Java 응용 프로그램에서 특정 매개 변수를 서블릿에 전달하십시오. b) 서블릿에서 매개 변수를 처리하고 처리 된 항목을 웹 브라우저에서 열리는 jsp로 보냅니다. – CCGooner

+0

셀레늄을 사용하십시오. Java API를 통해 브라우저를 "구동"할 수 있습니다. –

+0

고마워요. 그것은 효과가 있었다. :디 – CCGooner

관련 문제