** MVC(Model VIew Controller) 패턴
1. 장점
2. 단점
** Spring MVC에서 제공하는 Annotation
1. @Controller, @Service, @Repository, @Component : Bean을 자동 생성해주는 Annotation
2. @Autowired, @Injection, @Resource : 외부에서 자동으로 주입받기 위한 Annotation
3. @RequestMapping
4. @RequestParam
5. @RequestHeader
6. @PathVariable
7. @CookieValue
8. @ModelAttribute
9. @SessionAttribute
10. @InitBinder
11. @ResponseBody
12. @RequestBody
** Spring MVC의 주요 구성 요소
1. Dispatcher-Servlet : Front Controller의 역할, Spring Bean Configuration 파일로 생성
2. Controller : Page Controller의 역할, POJO(다른 외부 프레임워크의 클래스를 상속받지 않은 순수한 자바 객체) 클래스를 만들고 상단에 @Controller라는 어노테이션을 추가해서 생성
3. HandlerMapping : Front Controller에서 Page Controller를 선택하도록 해주는 클래스로 직접 생성할 필요가 없음 - Spring이 생성해 줌
4. ModelAndView : Controller가 처리한 결과를 저장해서 View를 선택하도록 하는 정보와 함께 저장하는 클래스
5. ViewResolve : Controller가 리턴한 View 이름을 가지고 실제 출력할 View 파일을 결정하는 클래스
6. View : 실제 출력될 결과 화면
** Spring MVC Project - Web Application(Web Service, Web Server)
1. Spring MVC Project 생성
2. Spring MVC Project 실행
** Spring MVC Project의 pom.xml 설정 변경
1. properties 태그에서 java 버전과 Spring 버전을 설정
2. repositories
3. dependencies
4. build 태그 안의 Configuration의 source와 target 버전을 변경
5. 실행
6. 실제 Project를 진행할 때는 1~4까지는 직접 수행하지 않음
7. Tomcat을 이용해서 실행한 경우 포트 충돌 문제 때문에 실행이 안되는 경우 대처 방법
** Spring MVC Project의 구조
1. pom.xml(maven 설정 파일)을 제일 먼저 읽어서 실행
2. web.xml(java web application 설정 파일)을 읽어서 애플리케이션 설정
3. URL 패턴
4. Encoding Filter 설정
** Controller
1. 요청 처리 방법
2. 파라미터 처리 방법
3. 파라미터 처리 실습
4. @PathVariable
5. PathVariable 실습
6. @ModelAttribute
7. @InitBuilder
8. @DataTimeFormat
9. Controller 요청 처리 메소드의 매개변수
10. Controller의 요청 처리 메소드의 리턴 타입
11. View 설정
12. Controller에서 View에게 전달 : Attribute - Key & Value Coding
** 컴파일하는 언어의 실행 과정
** 스크립트 언어
** Cashing
** Filter - Spring에서는 Interceptor, AOP(관점 지향 프로그래밍 - 작업의 종류에 따라 프로그래밍을 분리 - 비즈니스 로직 처리와 공통 관심 사항으로 분리)
** Web에서 요청을 전송하는 방식
1. GET
2. POST
** 파라미터 생성
1. URL 뒤에 ?를 추가하고 파라미터이름=값, 파라미터이름=값의 형태로 직접 작성할 수 있음
2. form을 만들고 안에 입력 가능한 객체들을 생성해서 전송하는 방법
** MVC(Model View Controller) 패턴
- 애플리케이션의 역할을 3가지로 분리해서 구현하는 패턴
- Model : 비지니스 로직을 처리하고 결과를 생성하는 영역
- View : Model이 생성한 결과를 출력하는 영역
- Controller : Model과 View를 연결시켜 주는 영역
- Model2 : Presentation Logic 영역의 코드와 Business Logic 영역의 코드를 분리
- Java Web Application에서는 Presentation Logic은 jsp 파일에 작성하고 Business Logic은 java 파일에 작성한다.
1. 장점
- 유지보수가 편리해 진다.
2. 단점
- 구현이 어려워질 수 있다.
- Controller를 2단계로 구성
- ① FrontController : 클라이언트의 모든 요청을 받아서 처리하려고 하는 Controller
- ② PageController : 클라이언트의 요청 1개나 하나의 서비스를 처리하기 위한 Controller
- Spring 프로젝트 구조
- 웹 브라우저나 웹 요청(request) -> Web Server(apache) -> Web Application(Web Container - tomcat) -> Front Controller -> Page Controller -> Service -> DAO -> DataBase Framework -> 트랜잭션 처리를 위한 Middle Ware -> Database
- Web Server의 역할 : 사용자의 요청이 오면 요청에 응답할 수 있는 View를 찾아서 리턴하는 역할, 단순한 HTML로 구성된 것을 요청하면 HTML을 찾아서 리턴해 줄 수 있다.
- Web Application Server의 역할 : Web Server가 어떤 처리를 요청하면 그 처리를 수행할 수 있는 Server Application이나 Logic을 호출해서 결과를 받은 후 HTML로 변환해서 Web Server에게 전달해 준다.
- 금융업무에서 처럼 온라인 트랜잭션 처리를 많이 하는 곳에서는 DataBase 앞에 별도의 Middle Ware를 추가한다.
- 실제 업무 처리에서는 Serviece를 여러 계층으로 분리한다.
** Spring MVC에서 제공하는 Annotation
1. @Controller, @Service, @ Repository, @Component : Bean을 자동 생성해주는 Annotation
2. @Autowired, @Injection, @Resource : 외부에서 자동으로 주입받기 위한 Annotation
3. @RequestMapping
- Controller 클래스에서 클라이언트의 요청과 호출할 메소드를 매핑해주는 Annotation
4. @RequestParam
- 클라이언트에서 전달한 파라미터를 매핑하기 위한 Annotation
5. @RequestHeader
- 클라이언트에서 전달한 헤더를 매핑하기 위한 Annotation
6. @PathVariable
- 디렉토리 패턴에서 URL의 원하는 부분을 추출하기 위해 사용하는 Annotation
7. @CookieValue
- 쿠키 정보를 매핑하기 위해 사용하는 Annotation
8. @ModelAttribute
- View에게 데이터를 전달할 때 사용하는 Annotation
- 공통된 데이터를 전달하기 위한 목적과 전달되는 파라미터의 이름을 변경하기 위해서 사용
9. @SessionAttribute
- Session에게 데이터를 저장하기 위한 Annotation
10. @InitBinder
- 파라미터를 수집해서 객체로 만들고자 하는 경우 사용하는 Annotation
11. @ResponseBody
- 리턴 타입을 HTTP 응답 메시지로 사용하는 Annotation
12. @RequestBody
- 요청 문자열을 그대로 파라미터를 전달하는 Annotation
** Spring MVC의 주요 구성 요소
1. Dispatcher-Servlet : Front Controller의 역할, Spring Bean Configuration 파일로 생성
2. Controller : Page Controller의 역할, POJO(다른 외부 프레임워크의 클래스를 상속받지 않은 순수한 자바 객체) 클래스를 만들고 상단에 @Contoller라는 어노테이션을 추가해서 생성
3. HandlerMapping : Front Controller에서 Page Controller를 선택하도록 해주는 클래스로 직접 생성할 필요가 없음 - Spring이 생성해 줌
4. ModelAndView : Controller가 처리한 결과을 저장해서 View를 선택하도록 하는 정보와 함께 저장하는 클래스
- 최근에는 잘 사용하지 않는다.
5. ViewResolver : Controller가 리턴한 View 이름을 가지고 실제 출력할 View 파일을 결정하는 클래스
- Forwarding 할 때만 적용되고 Redirect할 때는 적용되지 않는다.
6. View : 실제 출력될 결과 화면
** Spring MVC Project - Web Application(Web Service, Web Server)
1. Spring MVC Project 생성
[File] - [New] - [Spring Project] - [Spring Lagacy Project]를 선택하고 [Spring MVC Project]를 선택
- Project 이름을 설정하고 기본 패키지(3 Level 이상)를 설정
- 패키지 이름에서 3번째 부분이 자동으로 ContextPath로 설정되고 이 프로젝트를 war 파일로 작성해서 외부에서 열면 그 때는 프로젝트 이름이 Context Path로 설정된다.
2. Spring MVC Project 실행
- WAS를 설정해서 실행
** Spring MVC Project의 pom.xml 설정 변경
1. properties 태그에서 java 버전과 Spring 버전을 설정
- properties는 하단에서 자주 사용할 문자열로 이름으로 등록해 놓는 태그
- java version은 1.8이상으로 설정하는 것이 일반적 : 람다와 스트림 API를 1.8 버전부터 사용 가능하기 때문이다.
- Spring version은 4 버전 이상으로 설정하는 것이 일반적 : Spring 4부터 RestController를 제공하기 때문이다.
- REST API : 동일한 서비스를 제공하는 URL은 모두 동일해야 한다. 일반적으로 요청을 하면 JSON이나 XML로 응답을 해서 클라이언트에서 파싱을 해서 뷰를 만들어내는 방식이다.
2. repositories
- Maven 중앙 저장소가 아닌 곳에서 외부 라이브러리를 다운로드하는 경우 설정하는 태그
- Oracle을 사용할 때만 사용
- 기업에서는 기업별로 별도의 저장소가 만들어져 있고 그 곳을 설정
3. dependencies
- 사용할 외부 라이브러리의 의존성(외부 라이브러리를 다운로드 받고 자동으로 build path에 추가) 설정
- node.js나 최근의 프레임워크들은 대부분 이 방식을 이용해서 외부 라이브러리의 의존성을 설정한다.
- junit의 버전을 4.12 이상으로 변경 - Spring 5.0 이상에서는 junit이 4.12 이상인 경우에만 테스트가 가능하다.
- junit : 단위 테스트를 지원하는 자바 라이브러리
1) 단위 테스트를 수행하고자 하면 Spring-Test 라이브러리가 있어야 한다.
- Spring-test 라이브러리의 의존성을 추가
2) HttpServlet과 jsp 버전을 변경
- HttpServlet : JavaEE에서 제공하는 URL 요청에 응답할 수 있는 Java Class, WAS가 호출할 수 있는 클래스
- JSP(Java Server Pages) : HttpServlet에 출력을 쉽게 할 수 있도록 만든 클래스인데 HTML에 Java 코드를 스크립트 형태로 삽입해서 작성하는 것으로 요청이 오면 HttpServlet 클래스로 변환
4. build 태그 안의 Configuration의 source와 target 버전을 변경
5. 실행
6. 실제 Project를 진행할 때는 1~4까지는 직접 수행하지 않음
- Spring MVC Project는 대부분의 경우 여러 개발자가 같이 진행하는 경우가 많아서 한명이 모든 프로젝트 설정을 하고 설정에 대해서 설명한 후 프로젝트를 복사한 후 동일한 설정에서 작업을 진행
7. Tomcat을 이용해서 실행한 경우 포트 충돌 문제 때문에 실행이 안되는 경우
- 오라클과 톰캣 모두 기본 설정 포트가 8080이기 때문에 문제가 된다.
- Tomcat Server 디렉토리에 server.xml 파일을 열어서 8080을 다른 포트 번호로 변경
- 포트 번호가 음수로 설정된 경우
- <Server port="8005" shutdown="SHUTDOWN"> 이 태그에 port 번호가 -1로 설정된 경우에 8005번으로 변경
** Spring MVC Project의 구조
1. pom.xml(maven 설정 파일)을 제일 먼저 읽어서 실행
- 이 파일의 내용이 잘못되면 애플리케이션은 실행되지 않는다.
- pom.xml을 수정하면 저장한 후 애플리케이션을 다시 실행해서 잘못된 부분이 있는지 확인한다.
2. web.xml(java web application 설정 파일)을 읽어서 애플리케이션 설정
- listener는 애플리케이션이 시작되거나 종료될 때 또는 세션이 생성되거나 소멸될 때 등의 이벤트가 발생하면 호출될 클래스를 설정 : 이벤트가 발생했을 때 호출되는 객체를 Listener라고 한다.
- sprin mvc project에서 listener 설정만 있는 경우에는 applicationContext.xml 파일이 Listener 역할을 수행한다.
- context-param 태그를 이용해서 applicationContext.xml 파일의 경로를 변경할 수 있다.
- contextConfiguration 이라는 이름에 파일 경로를 설정하면 된다.
- 이 파일에는 공통으로 사용할 bean에 대한 정보를 설정한다.
- servlet-mapping 부분에서는 요청을 처리할 HttpServlet 클래스를 설정한다.
- /는 .jsp를 제외한 모든 요청을 처리한다.
- Spring의 DispatcherServlet은 FrontController의 역할을 수행해 준다.
- 그 안에 있는 init-param이 DispatcherServlet의 설정 내용을 가지는 파일의 경로를 설정한다.
3. URL 패턴
1) /* : 모든 요청에 해당하는 패턴, 이 패턴은 파라미터 인코딩 설정에 이용
2) / : .jsp를 제외한 모든 요청을 처리
- 1)과 2)로 설정을 하게되면 .js, .css, .png와 같은 리소스 요청도 전부 처리하려고 해버린다.
- 외부에 자원을 두지 않고 프로젝트 내에 자원을 사용하는 경우에 이에 대한 해결책을 설정해야 한다.
3) *.확장자 : 특정한 확장자로 끝나는 요청을 처리, 예전에는 확장자를 do로 처리를 많이 했음, 아직도 공공기관이나 NAVER와 같은 곳에서는 사용하는 방식
4) /디렉토리/* : 특정한 디렉토리가 포함된 요청을 처리, 최근에 이 디렉토리에 서비스 이름을 이용하고 뒤에 작업 내용을 설정하는 형태로 서비스를 구현하는 곳이 많다.
5) /디렉토리/요청경로 : 구체적으로 하나의 요청을 지정하여 처리, 거의 사용하지 않는다.
4. Encoding Filter 설정
- post 방식으로 전송된 파라미터는 인코딩을 해서 읽어야 한다.
- 인코딩을 하지 않으면 한글은 깨지게 된다.
- java web programming에서는 파라미터를 읽기 전에 HttpServletRequest 객체를 가지고 setCharacterEncoding("utf-8") 메소드를 호출해야 한다.
- spring mvc project에서는 web.xml 파일에 Filter를 설정해서 모든 요청을 처리하기 전에 위의 메소드를 호출하도록 설정하는 것이 일반적이다.
** Controller
- MVC 패턴의 Controller는 사용자의 요청을 받아서 필요한 Business Logic(Service)을 호출하고 그 결과를 받아서 View에 전달하는 역할을 수행하는 객체
- Java Web Programming에서는 HttpServlet 클래스를 이용해서 생성하고 Spring MVC Project에서는 POJO 클래스를 만들고 클래스 상단에 @Controller를 추가해서 생성
- @Controller가 추가된 클래스는 spring 설정 파일의 base package 안에 만들어져야 한다.
1. 요청 처리 방법
- Controller 안에 메소드를 생성하고 위에 @RequestMapping(value = "요청할 URL", method = RequestMethod.GET 또는 POST)를 추가해주면 URL 요청이 GET이나 POST로 왔을 때 메소드를 호출한다.
- 요청 방식에 상관없이 호출할 것이면 @RequestMapping(value = "요청할 URL")의 형식으로 설정하는 것도 가능하다.
- 여러 개의 요청을 한꺼번에 처리하고자 하면 value = {URL, URL, ...}으로 설정하면 된다.
2. 파라미터 처리 방법
- 기존의 HttpServletRequest 클래스 이용
- getParameter나 getParameterValues 메소드를 호출해서 처리
- 요청처리 메소드(HttpServletRequest request){
- int num = Integer.parseInt(request.getParameter("num")); //형 변환이 필요한 경우
- }
- @RequestParam을 이용
- @RequestParam("파라미터 이름") 자료형 변수명
- 이 경우 자료형 변환이 자동으로 이루어 진다.
- 요청 처리 메소드(@RequestParam("num") int num){
- }
- Command 객체를 이용
- 파라미터로 구성된 Class를 만들어서 클래스의 변수를 매개변수로 받으면 파라미터들이 Command 클래스의 프로퍼티에 자동으로 대입된다.
- 파라미터 이름과 프로퍼티 이름이 같아야 한다.
3. 파라미터 처리 실습
1) home.jsp 파일에 링크를 추가
- 기존 파일을 삭제하고 다시 생성
2) HomeController 클래스에 form 요청이 GET 방식으로 왔을 때 처리하는 메소드를 생성
3) WEB-INF/views 디렉토리에 form.jsp 파일을 만들고 작성
- 웹 사이트만 만드는 경우에는 form을 만들고 전송 버튼을 만들어서 전송을 하면 되고 모든 디바이스의 요청을 처리하는 서버를 만들 때는 ajax로 요청해야 한다.
4) 애플리케이션을 실행시켜서 입력화면까지 이동하는지 확인
5) HomeController 클래스에 form 요청을 post로 전송한 경우 처리할 메소드를 생성
6) 위의 요청처리 메소드를 수정
7) command 객체를 이용하는 방법
- name과 phone과 age를 저장할 수 있는 Command Class를 생성
- 자료형과 이름을 맞추어야 한다.
- 요청 처리 메소드를 수정
4. @PathVariable
- 최근의 상세보기 구현에서는 파라미터를 사용하지 않는 경우가 있다.
- 통상적으로 디렉토리 패턴에서 사용하는데 /데이터의 형식으로 넘겨준다.
- 블로그 형 게시판에서 많이 사용
- Spring의 Controller에서 마지막 부분을 읽어내고자 할 때 사용하는 어노테이션이 @PathVariable
@RequestMapping(value = "디렉토리이름/{변수명}")
요청처리메소드(@PathVariable("변수명") 자료형 지역변수이름)
https://ggangpae1.tistory.com/351
@RequestMapping(value = "{num}")
요청처리메소드(@PathVariable("num") int num)
htt
5. PathVariable 실습
1) home.jsp 파일에 요청을 생성
2) HomeController 클래스에 위의 요청을 처리하는 메소드를 생성
6. @ModelAttribute
- Controller 클래스의 메소드 위에 이 어노테이션을 설정하고 메소드가 리턴을 하면 메소드의 리턴되는 데이터가 모든 View에 전송된다.
@ModelAttribute("msg")
public String result(){
return "ㅎㅇ"
}
- 이 메소드가 있는 Controller의 모든 View에게 msg라는 이름으로 ㅎㅇ가 attribute로 전달되게 된다.
- Command 객체를 파라미터로 받으면 Command 객체로 받은 내용이 다음 View에게 클래스 이름의 첫글자를 소문자로 변경한 것으로 전송되는데 이 때 이름을 변경해서 넘기고자 하면 Command 객체 앞에 @ModelAttribute("별명") 클래스 변수명의 형태로 받으면 된다.
- Command 객체 : 파라미터들을 묶어서 전송받기 위한 클래스의 객체
- Spring에서 유효성 검사할 때 유용하게 사용된다.
- 유효성 검사는 클라이언트와 서버 모두에게 하게되는데 서버에서 유효성 검사를 한 경우 유효성 검사에 실패했을 때 기존의 데이터를 어떻게 넘겨줄 것인가가 어려운데 Spring에서는 Command 객체를 이용해서 해결한다.
7. @InitBinder
- 메소드 위에 @InitBinder를 추가하고 데이터 형식을 설정하면 형식에 맞는 데이터가 오면 자동 변환을 해준다.
@InitBinder
public void 메소드이름(WebDataBinder binder){
SimpleDateFormat 변수이름 = new SimpleDateFormat("날짜 형식");
Biner.registerCustomEditor(java.util.Date.class, new CustomDateEditor(변수이름, false));
}
- 날짜 형식의 문자열이 오면 java.util.Date 형식으로 변환을 해준다.
8. @DateTimeFormat
- Command 객체의 클래스를 말들 때 Date 타입이 있는 경우 Date 타입 위에 @DateTimeFormat(pattern="날짜 형식")으로 설정하면 날짜 형식의 문자열이 오면 Date 타입으로 변경
9. Controller 요청 처리 메소드의 매개변수
- Java Web Application의 HttpServlet의 요청 처리 메소드는 HttpServletRequest, HttpServletResponse 2개의 매개변수를 가지고 있다.
- Spring에서는 요청 처리 메소드의 매개변수를 다양한 형태로 만들 수 있다.
1) HttpServletRequest, HttpServletResponse 사용 가능
2) HttpSession 사용 가능
3) Locale : 현재 요청에 대한 지역(국가 설정) 정보
4) Reader, Writer : 읽고 쓰기를 스트림을 이용해서 직접 하고자 할 때 사용
5) Map, Model, ModelMap : View 페이지에 데이터를 전송하고자 할 때 사용
6) @RequestParam, @RequestHeader
- 파라미터나 헤더 정보를 받고자 할 때 사용
- @RequestHeader는 Open API 서버를 직접 구현하고자 할 때 사용한다.
7) @CokkieValue
- 쿠키 값을 읽어내고자 할 때 사용한다.
- 보안 문제 때문에 사용하지 않는 것을 권장했다가 최근에 사용자의 요청흐름을 파악할 때 쿠키를 이용하는 경우가 많아져서 다시 중요해졌다.
8) @PathVariable
- URL에 변수를 추가한 형태일 때 변수를 읽기 위한 파라미터
9) Errors, BindResult : 데이터 유효성 검사를 할 때 사용
10) Command 객체
11) @RedirectAttributes : 리다이렉트할 때 1번만 전달되는 데이터를 생성할 때 사용
10. Controller의 요청 처리 메소드의 리턴 타입
1) ModelAndView : 출력할 뷰 이름과 출력할 데이터를 1개로 묶어주는 클래스
2) Model, Map : 출력할 데이터만 생성해서 리턴, 뷰이름은 요청 URL로 설정
3) String : 뷰 이름을 리턴, 출력할 데이터가 있으면 메소드의 매개변수로 Map이나 Model을 만들어서 저장
4) View : View를 직접 만들어서 출력 - 파일 다운로드 같은 곳에서 이용
5) void : 요청과 동일한 이름의 뷰로 출력할 때 사용 - 단순 페이지 이동에 사용
6) VO나 DTO 또는 List : JSON 출력할 때 사용
7) HttpHeaders : 단순하게 헤더만 만들어서 전송하고자 할 때 사용 - API 요청이 실패했을 때
8) ResponseEntity : Http 헤더와 내용을 가공하고자 할 때 사용
- 3, 5, 6 번이 초반에 중요
11. View 설정
- 출력할 뷰는 Controller에서 리턴한 문자열과 ViewResolver 설정을 합쳐서 결정
- 기본 이동방법은 Forwarding
- ViewResolver 설정은 appServlet 디렉토리에 있는 spring 설정 파일에 존재
- 시작 요청의 경우는 / 이외에 index.html 그리고 default.html 까지 처리해주는 것이 일반적
- redirect를 하고자 하는 경우에는 view 이름 앞에 redirect:를 추가
- redirect를 사용할 때는 외부 도메인으로 가던가 Controller로 다시 돌아오도록 해야 한다.
- redirect할 때 특정 View 페이지로 직접 이동하지 않도록 해야 한다.
- 위의 경우가 URL에 jsp가 보이게 되는 이유이다.
- redirect하는 경우는 작업을 수행한 경우이고 forwarding하는 경우는 조회를 하는 경우이다.
- 웹 페이지를 만드는 것이 아니라면 전부 forwarding이다.
- iOS, Android, Web Browser 요청을 하나의 서버에서 하고자 하면 뷰를 보여주는 것이 아니고 데이터를 리턴하는 경우이다.
- Web Browser에서는 전부 ajax로 요청하고 javascript 코드를 이용해서 페이지 이동을 해야 한다.
- 웹 애플리케이션을 기획할 때
- 하나의 서버 애플리케이션으로 모두 지원하고자 하면 AJAX 요청을 잘 이해해야 하고 웹 사이트와 모바일 서버를 별도로 만든다면 AJAX는 유효성 검사만 할 수 있어도 된다.
12. Controller에서 View에게 데이터 전달 : Attribute - Key&Value Coding
1) Model이나 Map을 요청 처리 메소드의 매개변수로 만들고 이 매개변수에 데이터를 저장하면 request의 attribute로 만들어져서 전달된다.
2) 리턴 타입을 ModelAndView로 만들어서 ModelAndView에 데이터를 저장하고 리턴해주면 request의 attribute로 만들어져서 전달된다.
3) @ModelAttribute가 붙은 데이터도 View에게 전달된다.
4) Command 객체
5) Session에 저장하는 방법
- HttpSession을 생성해서 저장
- RedirectAttributes를 이용해서 한 번만 사용하는 데이터를 생성해서 전달
** 컴파일 하는 언어의 실행 과정
- 소스코드 -> Complie(문법 체크) -> 실행되기 직전의 코드(자바는 Byte Code) -> build(애플리케이션이 실행할 수 있도록 각 운영체제의 start up 코드나 실행되기 직전의 코드를 모아서 실행 가능한 프로그램으로 생성 - target version을 설정) -> load(메모리에 적재) -> run(실행)
- 컴파일 언어의 IDE들은 대부분 코드를 수정하고 새로 만들면 자신이 컴파일을 해서 문법적인 오류를 체크
- Server 애플리케이션은 하나의 Computer에서 실행되기 때문에 이행을 하지 않는한 그다지 중요하지 않다.
** 스크립트 언어
- 줄 단위로 번역하면서 실행
- 문법적인 에러체크를 하지 않고 실행하면서 에러를 발생시킴
- JavaScript, Python, Kotlin, Swift 등
** Caching
- 재사용을 빠르게 하기 위해서 로컬에 저장해 두는 것
** Filter - spring에서는 Interceptor, AOP(관점 지향 프로그래밍 - 작업의 종류에 따라 프로그래밍을 분리 - 비지니스 로직 처리 와 공통 관심 사항으로 분리)
- 요청을 처리하기 전에 수행할 작업이나 요청을 처리한 후에 수행할 작업을 설정하는 객체
- 실제로 만들어야 하는 것은 클래스
- IoC(제어의 역전): 개발자가 클래스를 만들어서 비지니스 로직만 작성을 하면 수명주기와 같은 관리작업은 프레임워크나 컨테이너가 하도록 객체 생성을 프레임워크나 컨테이너가 수행하는 것
- Filter를 가지고 작업할 때 결과를 내가 원하는 자료형으로 변경하는 Filter를 만들기도 하는데 이 경우에는 Wrapper 라 한다.
** Web에서 요청을 전송하는 방식
1. GET
- 파라미터를 URL 뒤에 붙여서 전송하는 방식
- 보안이 취약하고 보내는 파라미터 크기에 제한이 있음
- 요청을 전송하는 기본 방식
2. POST
- 파라미터를 Header에 숨겨서 전송하는 방식
- 보안이 우수하고 파라미터 크기에 제한이 없음
- form 에 post 라고 설정을 하거나 ajax 요청을 할 때 post라고 설정을 해야 한다.
** 파라미터 생성
- parameter: 웹에서 요청을 전송할 때 서버에게 전달하는 데이터
1. URL 뒤에 ?를 추가하고 파라미터이름=값, 파라미터이름=값 의 형태로 직접 작성할 수 있음
- 이 경우는 무조건 GET 방식으로 전송되는데 목록보기에서 상세보기를 만들 때 많이 이용
2. form을 만들고 안에 입력 가능한 객체들을 생성해서 전송하는 방법
- 전송할 객체들은 name 속성에 서버에서 이용할 이름을 생성해야 한다.
- 전송 방식으로 GET, POST로 설정하는 것이 가능
- input 에 file, password 그리고 textarea 태그가 있으면 반드시 전송방식은 post
- file 이 있는 경우에는 enctype을 multipart/form-data로 설정
'안드로이드&IOS 앱 개발자 양성' 카테고리의 다른 글
안드로이드&IOS 앱 개발자 양성(65일차) (0) | 2020.07.08 |
---|---|
안드로이드&IOS 앱 개발자 양성(64일차) (0) | 2020.07.07 |
안드로이드&IOS 앱 개발자 양성(62일차) (0) | 2020.07.03 |
안드로이드&IOS 앱 개발자 양성(61일차) (0) | 2020.07.02 |
안드로이드&IOS 앱 개발자 양성(60일차) (0) | 2020.07.01 |