놀코에 오신 것을 환영합니다.

놀아보자 코드랑

KOSTA/WEB

21.7.14 Servlet 합치기, Distpatcher, SessionListener, AtrributeListener

놀코 2021. 7. 14. 18:03

 

 

참고 깃허브 주소

https://github.com/sblee1031/Kosta/tree/main/ORACLE_DB_THEOTY/Oracle_DB_project/myweb/mybackfrontcontroller4.0

 

 

 

 

기존에 웹 서블릿을 기능별로 1개의 Java파일로 작성 했었다면,

이제 하나의 FrontContoller의 형태로 작성하기.

DispatcherServlet으로 통합.

 

Tomcat 구조

기본 : 톰캣 내장에서는 url패턴을 / 표시일경우 .html, jpg의 경우에는 무시하도록 설정되어있으며, 

.jsp같은 형식 받도록 내장되어있음.

tomcat폴더 /conf/web.xml 파일
프로젝트 내 web.xml에 추가할 사항

스프링에서는 prop파일(단순한경우), xml파일(복잡한경우) 설정이 가능하다.

 

	@Override
	public String execute(HttpServletRequest request, HttpServletResponse response)
			throws IOException, ServletException {
		String contextPath = request.getContextPath();
		String servletPath = request.getServletPath();
		System.out.println("contextPath:" + contextPath +", servletPath:" + servletPath);
		String methodName = servletPath.split("/", 2)[1]; //"/login"
		//if("login".equals(servletPath)) {
		//	login(request, response);
		//}		
		try {
			Method method = this.getClass().getMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);
			method.invoke(this, request, response);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;

	}

Method 클래스를 사용하여 요청된 주소로 메서드이름을 호출하여 request, response 값을 파라미터 값으로 전달한다.

 

 

서블릿 2.5버전까지는 web.xml 파일이 필요하며

서블릿 3.0버전 이상부터는 web.xml파일이 필요 없이 @ 어노테이션으로 대체 가능하다.