본문 바로가기

백엔드 개발/SpringMVC

서블릿과 JSP(3) 1.URL 패턴 @WebServlet("/Hello") public class HelloServlet extends HttpServlet{ } 우리는 위와 같이 하나의 클래스에 대해 한번의 맵핑만 해왔다. 따라서 HelloServlet에 결과 처리를 요청하려면 무조건 "~~/Hello" 라는 유일무이한 통로만 이용해야 했다. @WebServlet(urlPatterns={"/hello", "/hello/*"}, ;loadOnStartup=1) public class HelloServlet extends HttpServlet{ } 하지만 위와 같이 하나의 클래스에 대하여 여러가지 통로로 매핑할 수 있다. urlParttern은 하나의 클래스에 갈 수 있는 여러가지 통로를 배열로서 나타낸 형태이다. 위의 예제.. 더보기
서블릿과 JSP(2) - 서버 안에 저장소에 대하여 요청에서 응답까지의 과정에서 서블릿과 JSP가 사용하는 4개의 저장소가 있다. 이 저장소들은 Map의 형태로 이루어져 있고, 각각 접근 범위와 생존기간이 서로 다르다. 이번에는 이 4개의 저장소에 관해서 알아보겠다. ** 참고: 저장소가 필요한 이유** HTTP 는 상태정보를 저장하지 않는다. 따라서 같은 클라이언트가 2번의 요청을 보낸다고 해도 servlet은 첫 번째 요청과 두 번째 요청이 같은 사람에게서 왔는지 알 방도가 없다. 하지만 첫 번째 요청이 A 클라이언트의 로그인이고, 두 번째 요청이 A 클라이언트가 로그인 후 할 수 있는 행동이라면, 첫 번째 요청이 A 클라이언트가 한 것이고 그 사람이 로그인 했다는 상태 정보가 Servlet 어딘가에는 저장되어 있어야 한다. 이러한 상태 정보들을 저장.. 더보기
서블릿과 JSP (1) 1. 서블릿과 컨트롤러의 비교 2. 서블릿의 생명주기 3.JSP란? 4. JSP와 서블릿의 비교 5.JSP 호출 과정 6.JSP와 서블릿으로 변환된 JSP의 비교 7.JSP의 기본 객체 1. 서블릿과 컨트롤러의 비교 : 스프링 프레임워크는 서블릿에서의 불편한 점을 개선한 버전이다. 둘의 차이점을 말해보겠다. 비교 서블릿 컨트롤러 Mapping @WebServlet 어노테이션을 사용 이는 @Controller와 @RequestMapping의 기능이 합쳐진 어노테이션이다. 클래스 단위로만 매핑이 가능하다. 따라서 요청 마다 클래스를 새로 만들어야 해서 사용 코드량이 커질 수 있다. @Controller로 클래스를 서버에 등록하고, @RequestMapping을 이용하여 Method와 요청 주소를 Mappin.. 더보기
SpringMVC 관심사의 분리, MVC 패턴 - 원리 (2) 1. methodcall2 package com.fastcampus.ch2; import java.io.File; import java.io.IOException; import java.lang.reflect.Method; import java.util.Iterator; import java.util.Map; import java.util.Scanner; import org.springframework.ui.Model; import org.springframework.validation.support.BindingAwareModelMap; public class MethodCall2 { public static void main(String[] args) throws Exception{ // 1. Yoi.. 더보기
관심사 분리와 MVC 패턴의 원리(1) 1. 클래스의 매개변수 정보를 보여주는 예제 public class MethodInfo { public static void main(String[] args) throws Exception{ // 1. YoilTeller 클래스의 객체를 생성 // YoilTeller 클래스의 모든 정보를 가진 클래스 객체 생성 (Yoilteller 설계도 훔쳐옴) Class clazz = Class.forName("com.fastcampus.ch2.YoilTellerMVC"); // 정보들을 이용해 YoilTeller의 객체를 생성 (설계도 사본으로 구현) Object obj = clazz.newInstance(); // 2. YoilTeller의 모든 매소드 정보를 가져와서 배열에 저장 Method[] methodA.. 더보기
관심사 분리와 MVC 패턴 (실습) MVC 패턴에 3가지 경우가 있음. Controller Method 의 반환 타입에 따라 나뉨 (1)String 반환형 //년월일을 입력하면 요일을 알려주는 프로그램 @Controller public class YoilTellerMVC { //http://localhost/ch2/getYoilMVC?year=2021&month=10&day=21 @RequestMapping("/getYoilMVC") //String 반환 메소드 -> 반환에 사용할 view를 지정 public String main(int year, int month, int day, Model model) throws IOException { // 유효성 검사, 년 월 일이 바르게 입력되지 않았다면, 에러를 표시하는 view를 이용해라 i.. 더보기
관심사 분리와 MVC 패턴에 대해 더보기
HTTP에서 Binary File을 전송하기 위한 방법 (MIME, Base64) 1. HTTP에서 왜 일반적으론 Binary File을 전송할 수 없는가? (1) 파일 종류 구분 Binary 파일 텍스트 파일 저장하는 내용 문자와 숫자 모두 저장 문자만 저장 가능 데이터 읽을 때 적힌 그대로 읽는다 . 문자 -> 문자로 읽음, 숫자 -> 숫자로 읽음 숫자는 문자로 변환 해서 읽는다. 문자 -> 문자 숫자 -> 문자 데이터 쓸 때 적힌 그대로 쓴다. 문자 -> 문자 숫자 -> 숫자 숫자도 문자로 변환 했기 때문에 문자만 쓴다. 문자 -> 문자 예시 이미지, 동영상 파일, 프로그램 글로 적힌 것 (2)왜 HTTP 에선 Binary file을 못 읽는가? HTTP는 텍스트 기반의 프로토콜, 일반적으로 텍스트 파일을 읽기 위해 디자인 되었다. 따라서 바이너리 파일을 읽으려면 다른 방법이 필.. 더보기