Java 프레임워크 만들기 - JSP

자바 서블릿으로 요청 처리 2 - Java Servlet(DispatcherServlet) Request, 이클립스(Eclipse)

carrotweb 2021. 4. 7. 20:00
728x90
반응형

5. "test2" 프로젝트의 "Java Resources"에서 "src/main/java"의 "com.home.project.test2"를 선택한 후 오른쪽 버튼을 클릭하여 컨텍스트 메뉴 [New > Package]를 클릭합니다.

 

"New Java Package"창이 나타납니다.

"Name"에서 기존 패키지명에 ".service"를 추가하고 "Finish"버튼을 클릭합니다.

추가된 "com.hom.project.test2.service"에서 오른쪽 버튼을 클릭하여 컨텍스트 메뉴 [New > Class]를 클릭합니다.

 

"New Java Class"창이 나타납니다.

"Name"에서 "TestService1"를 입력하고 "Finish"버튼을 클릭합니다.

"test2" 프로젝트의 "Java Resources"에서 "src/main/java"의 "com.hom.project.test2.service"에 "TestService1.java"파일이 생성됩니다.

 

"process"메소드를 생성하여 코딩합니다.

public void process(HttpServletRequest request) {
	request.setAttribute("name", "철수");
}

 

"HttpServletRequest"가 "import"되어 있지 않아서 오류가 납니다. 마우스를 "HttpServletRequest"위로 이동하면 컨텍스트 메뉴가 나타납니다. 여기서 "import 'HttpServletRequest' (javax.servlet.http)"를 클릭합니다.

저장합니다.

 

반응형

 

6. "TestDispatcherServlet.java"의 "service"메소드에 "RequestDispatcher"클래스와 "forward"를 이용하여 코딩합니다. 이전에 만들어 놓은 "testservlet.jsp"를 이용하겠습니다.

RequestDispatcher requestDispatcher = null;
if ("/test1.do".equals(requestURI)) {
	TestService1 testService1 = new TestService1();
	testService1.process(request);
	requestDispatcher = request.getRequestDispatcher("/WEB-INF/jsp/testservlet.jsp");
}
if (requestDispatcher != null) {
	requestDispatcher.forward(request, response);
}

"RequestDispatcher"클래스와 "TestService1"클래스가 "import"되어 있지 않아서 오류가 납니다. 마우스를 "RequestDispatcher"클래스와 "TestService1"클래스 위로 이동하면 컨텍스트 메뉴가 나타납니다. 여기서 "import 'RequestDispatcher' (javax,servlet)"와 "import 'TestService1' (com.home.project.test2.service)"를 클릭하고 저장합니다.

 

7. "Servers"탭에서 "Tomcat8"를 선택하고 "start"버튼(start the server)을 클릭합니다. 웹 브라우저에서 "http://localhost:8080/test2/test1.do"를 입력합니다.

"TestService1.java"의 "process"에서 적용한 "철수"가 출력됩니다.

"Servers"탭에서 "Tomcat8"를 선택하고 "stop"버튼(stop the server)을 클릭합니다.

8. 위와 동일한 방식으로 "TestService2.java"를 만들고 "process"를 코딩하고 저장합니다.

public void process(HttpServletRequest request) {
	request.setAttribute("name", "영희");
}

 

9. "TestDispatcherServlet.java"의 "service"메소드"test2.do"처리에 대한 코딩을 추가하고 저장합니다.

} else if ("/test2.do".equals(requestURI)) {
	TestService2 testService2 = new TestService2();
	testService2.process(request);
	requestDispatcher = request.getRequestDispatcher("/WEB-INF/jsp/testservlet.jsp");
}

 

"TestService2"클래스가 "import"되어 있지 않아서 오류가 납니다. 마우스를 "TestService2"클래스 위로 이동하면 컨텍스트 메뉴가 나타납니다. 여기서 "import 'TestService2' (com.home.project.test2.service)"를 클릭하고 저장합니다.

 

10. "Servers"탭에서 "Tomcat8"를 선택하고 "start"버튼(start the server)을 클릭합니다. 웹 브라우저에서 "http://localhost:8080/test2/test2.do"를 입력합니다.

 

이처럼 모든 요청들을 하나의 서블릿에서 받고 요청 URL별로 서비스를 호출하여 처리한 후 JSP를 호출하여 화면을 출력하게 해보았습니다. 이는 "프론트 컨트롤러(Front Controller)"처리방식을 간단하게 구현하 것으로 "Spring Framework"의 "DispatcherServlet" 처리방식을 이해하는데 도움이 될겁니다.

복잡하지 않은 일반적인 웹 프로젝트를 만드실때도 JSP 보안 취약점을 해결하는데 도움될 겁니다.

728x90
반응형