MVC Architecture 구조
Model View Controller
소프트웨어 디자인 패턴 중 하나로 애플리케이션의 코드를 논리적으로 분리하여 유지 보수 및 확장성을 향상시킨다.
Model | 비지니스 로직을 처리하는 부분으로 DB와의 상호작용을 담당한다 (Servlet, DAO, VO, DB파일) |
View | 사용자 인터페이스를 나타냄 (JSP파일) |
Controller | Model과 View사이의 중간자 역할을 하며 동작을 제어한다. |
아파치 톰캣 (Apache Tomcat)
- 자바 웹 애플리케이션 서버(JWAS)로 Apache 소프트웨어 재단에서 관리되고 있는 오픈소스 프로젝트
- 톰캣은 자바 서블릿(Servlet)과 JSP(JavaServerPages)를 실행하기 위한 환경을 제공한다.
- 서블릿과 JSP는 자바 언어를 사용하여 웹 애플리케이션을 개발하는 기술이다.
언어 | 서블릿 | JSP |
역할 | - 클라이언트의 요청을 처리하여 응답을 전송(컨트롤러 역할) - 동적인 웹 페이지 생성 기능 - HTML, XML, JSON등의 웹 콘텐츠 형식으로 제공될 수 있다. |
- 웹페이지의 뷰(view)역할을 수행 - HTML코드 내에 자바 코드를 삽입하여 웹 페이지를 동적으로 생성 할 수 있으며 이는 클라이언트에게 응답으로 제공된다. - jsp는 서블릿으로 변환되어 실행된다. |
[과정]
컨트롤러(url요청) -> model (db연결 및 데이터 요청 처리) -> browser 출력(요청 응답 - jsp파일)
이클립스 JSP & Servlet 생성
▶ apache-tomcat-8.0.5설치
- 설치 시 오라클과 서버 충돌 위험이 있어 HTTP포트를 8088로 변경해 준다
- 설치 후 [서비스] - 상태유형(중지) - 시작유형(수동)으로 설정해야 된다.
1. Dynamic Web Project로 프로젝트 생성 (안 보일 경우 other에서 지정)
2. 서버 생성 [window - show view - server]
- Tomcat v8.5 server 지정
- Tomcat installation directory - [browse] 버튼 - [programfiles]-[Apache Software Foundation] - Tomcat 8.0 폴더 선택
- run as로 서버 실행
3. 인코딩 타입 설정 [window - preferences] - [Web] - css, html, jsp 파일 인코딩 UTF-8로 설정
* 이 작업을 해줘야 한글이 깨지지 않고 출력된다*
4. jsp파일 생성 후 run on server로 톰캣 지정해서 실행하면 자바 내에서 페이지가 실행된다.
** window탭 - Web Browser - Default system web browser로 설정하면 웹으로 볼 수 있다
5. 서버 중지 후 더블클릭해서 Overview - Modules - path 선택 후 Edit를 눌러 "/" 기본 루트로 지정한다.
- localhost:8088/프로젝트명이 기본 url로 설정되어 있어 프로젝트명을 지워 "/" (루트)를 기본으로 설정한다.
6. Java Resources 폴더
컨트롤러 패키지 생성
- servlet 파일, 라우터 관리하는 패키지 (doGet, doPost)
모델 패키지 생성
- java 클래스 파일, vo와 dao관리 및 db연결하는 파일을 담고 있는 패키지
[홈 컨트롤러 - 기본 출력 페이지]
package controller;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/")
public class HomeController extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
RequestDispatcher dis = request.getRequestDispatcher("/home.jsp");
request.setAttribute("pageName","about.jsp");
dis.forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
1) @WebServlet("/") 어노테이션은 서블릿 클래스가 "/" 경로에 매핑됨을 명시해 줌 - 루트에 대한 요청 처리
2) doGet( ) 메서드는 HTTP GET요청을 처리해주며 RequestDispatcher를 사용하여 "/home.jsp" 페이지로 요청 전달
3) request객체에 pageName 속성 설정해서 about.jsp 페이지를 넘겨준다.
4) doPost( )메소드는 HTTP POST요청을 처리해 준다.
* 처리할 URL이 여러 개인 경우 value={ } 안에 경로를 담아 , (콤마)로 구분해 준다.
예) @WebServlet(value={"/posts","/posts/insert","/posts/update","/posts/delete","/posts/read"})
HTTPServlet
- Java Servlet API에서 제공하는 클래스 중 하나로 HTTP 프로토콜을 기반으로 하는 웹 애플리케이션 개발에 사용된다.
- 클라이언트로부터의 HTTP요청을 처리하고 HTTP응답으로 반환하는 서블릿을 만들 수 있다.
- 이를 통해 동적인 웹 페이지 생성, 사용자 인증과 권한관리, 데이터 베이스 연동 등의 기능을 활용할 수 있다.
- doGet( ), doPost( ), doPut( ), doDelete( )등 HTTP요청에 대한 다양한 메서드를 제공한다.
[ RequestDispatcher ]
웹 애플리케이션에서 서블릿, JSP 등의 자원을 다른 자원으로 전송할 수 있도록 지원하는 인터페이스 (연결다리 같은 역할)
- forward( ) : 현재 실행중인 서블릿의 제어를 전달하여 다른 자원으로 제어를 이전한다 (이동수단 역할)
- include( ) : 현재 실행중인 서블릿과 호출한 자원의 응답결과를 합쳐 클라이언트에게 전송한다.
request.setAttribute("속성명","속성값") | HTTPServlet의 속성을 설정하는데 사용되며 이를 통해 받은 속성은 같은 HTTP요청에 대한 자원(jsp, html, 서블릿) 등에서 공유되어 사용될 수 있다. - 뷰에 자원 넘겨줄때 쓰는 메소드 |
request.getParameter("값") | 브라우저에서 넘겨준 값을 서버에서 꺼내오는 메소드 |
request.getSession( ) |
세션 생성메소드, HttpSession 클래스를 사용해 생성한다. HttpSession session = request.getSession(); |
request.setCharacterEncoding("인코딩타입") |
"utf-8"을 작성해주면 클라이언트에게 받은 값이 깨지지 않고 전송된다. |
response.sendRedirect("이동할경로") | 경로이동 메소드 |
response.setContentType("인코딩타입") | "text/html;charset=utf-8" 작성시 모든 언어를 인코딩하여 한글깨짐을 방지한다. |
response.getWriter( ) | 출력 메소드, printWriter 클래스를 사용해 생성한다. PrintWriter out = response.getWriter(); |
'BE > Java [Servlet , Spring]' 카테고리의 다른 글
[이클립스] 자바 라이브러리 JSP활용 - Gson, jstl, cos, mysql-connector (0) | 2023.04.04 |
---|---|
핸들바로 JSP 데이터 출력하기 (mysql 데이터 json타입 변환) (0) | 2023.03.31 |
Oracle(SQL Developer) & JAVA 상품 주문 관리 프로그램 리뷰 - 1. SQL문 (0) | 2023.01.24 |
Oracle (SQL Developer) 테이블 생성 + JAVA 연결 (0) | 2023.01.17 |
JAVA 주소목록 출력 DAO + getter&setter메서드 (자바빈), 접근제한자 (0) | 2023.01.17 |