기본 xml 파일
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app id="WebApp_ID">
<display-name>day039</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.xhtml</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
<welcome-file>default.xhtml</welcome-file>
</welcome-file-list>
</web-app>
다른게 추가된 xml 파일
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app id="WebApp_ID">
<display-name>day039_FactoryPattern</display-name>
<servlet>
<servlet-name>JoinServlet</servlet-name>
<display-name>JoinServlet</display-name>
<description></description>
<servlet-class>controller.JoinServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>SearchServlet</servlet-name>
<display-name>SearchServlet</display-name>
<description></description>
<servlet-class>controller.SearchServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>FrontController</servlet-name>
<display-name>FrontController</display-name>
<description></description>
<servlet-class>controller.common.FrontController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>JoinServlet</servlet-name>
<url-pattern>/JoinServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>SearchServlet</servlet-name>
<url-pattern>/SearchServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>FrontController</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.xhtml</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
<welcome-file>default.xhtml</welcome-file>
</welcome-file-list>
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/error/error01</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/error/error02</location>
</error-page>
</web-app>

서블릿을 만들게 되면 servlet 태그를 준다
2개가 한쌍으로 이루어져있음
1. 서블릿을 만들어줘 태그와
2. 이때 가줘! 태그로 구성되어 있다
한쌍이지만 붙여서 사용은 어렵다
Controller ( =FrontController)도 서블릿인데 .do로 끝나면 나에게 와! 라고 되어 있다
java는 설정 파일인 xml을 따로 수정해줘야 한다.. 자동으로 바뀌지 않아서 에러가 나는 경우가 있다

FrontController의 변경전
1. 가독성이 안좋음
2. new가 너무 많음 == 싱글톤 패턴이 깨졌다 ㅠㅠ
싱글톤 패턴유지를 위해 많이 활용되는 패턴인 팩토리 패턴을 이용해보겠다
<디자인 패턴 4가지>
🍓 1. MVC 패턴
핵심
역할 분리 패턴
▪ Model : 데이터와 비즈니스 로직 담당
▪ View : 사용자 화면(UI) 담당
▪ Controller : 요청 처리 및 Model ↔ View 연결 담당
장점
▪ 협업 용이 (프론트/백엔드 분리)
▪ 코드 유지보수 용이
▪ 병렬 개발 가능
🍓 2. 싱글톤 패턴
핵심
▪ 객체를 하나만 들어서 재사용
( 하나만 있어도 동작을 하는데 왜 2, 3개 가져오니? 메모리를 아끼자)
▪ 전역에서 접근 가능하도록 허용
장점
▪ 메모리 절약
▪ 상태 공유 용이
▪ 로그, 설정 관리, DB 연결 등에서 유용
🍓 3. 팩토리 패턴
자판기식 구조일 때
싱글톤 패턴유지를 위해 많이 활용되는 패턴
핵심
▪ 객체 생성 로직을 별도의 공장(Factory) 클래스에 위임
▪ 클라이언트는 구체 클래스 이름 몰라도 됨
장점
▪ 객체 생성 책임 분리 -> 코드 유연
▪ 새로운 객체 추가 시 클라이언트 수정 최소화
▪ 싱글톤 패턴과 함께 자주 사용됨
but 기능이 많을 수록 초기에 로딩이 느려진다는 단점이 있다
🍓 4. 템플릿 패턴 -> Util, JDBCUtil
핵심
▪ 반복되는 알고리즘의 골격(템플릿)을 상위 클래스에 정의
▪ 변경되는 부분만 하위 클래스에서 구현
장점
▪ 코드 중복 제거
▪ 공통 로직과 세부 구현 관리
▪ 유지보수 쉬움
'JSP' 카테고리의 다른 글
| XML 설정과 어노테이션 (0) | 2025.12.01 |
|---|---|
| 커스텀 태그로 페이지 구조 가독성 향상시키기 (0) | 2025.12.01 |
| 프론트 컨트롤러 FrontController (0) | 2025.11.27 |
| 🍄 JQuery 아이디 중복 확인하기 (0) | 2025.11.25 |
| DML(Data Manipulation Language) (0) | 2025.11.24 |