Spring MVC - redirect와 forward
2022. 9. 19. 11:07
Spring/Ch2. Spring MVC
redirect와 forward 의 처리 과정 비교 redirect redirect 시 get 방식으로만 전송 forward RedirectView JstlView InternalResourceView sevlet-context.xml
Spring MVC - @RequestMapping
2022. 9. 19. 02:49
Spring/Ch2. Spring MVC
URL 패턴 ?는 한 글자, *는 여러 글자, ** 는 하위 경로 포함. 배열로 여러 패턴 지정 종류 URL pattern 매칭 URL 1. exact mapping /login/hello.do http://localhost/app/login/hello.do 2. path mapping /login/* http://localhost/app/login/ http://localhost/app/login/hello http://localhost/app/login/hello.do http://localhost/app/login/test 3. extension mapping *.do http://localhost/app/hi.do http://localhost/app/login/hello.do /** : 경로가 ..
Spring MVC - 회원가입 페이지 만들기2
2022. 9. 18. 16:03
Spring/Ch2. Spring MVC
form 데이터 전송 방법 중 GET 방식 막기 //@RequestMapping(value="/register/save", method=RequestMethod.POST) @PostMapping("/register/save") // Spring 4.3 부터 추가 public String save() { return "registerInfo"; } } @GetMapping 추가 package com.fastcampus.app; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.Po..
Spring MVC - 회원가입 페이지 만들기
2022. 9. 18. 13:08
Spring/Ch2. Spring MVC
html 호출할 때 resources 없이 하기 servlet-context.xml mapping 에서 resources를 지우자 registerForm.html Register 아이디 비밀번호 이름 이메일 생일 페이스북 카카오톡 인스타그램 회원 가입 registerInfo.jsp 다수의 값은 paramValues 를 사용해 배열로 값을 받는다 id=${param.id} pwd=${param.pwd} name=${param.name} email=${param.email} birth=${param.birth} sns=${paramValues.sns} sns=${paramValues.sns[0]} sns=${paramValues.sns[1]} sns=${paramValues.sns[2]} 유효성 검사 jav..
Spring MVC - @ModelAttribute
2022. 9. 17. 22:50
Spring/Ch2. Spring MVC
@ModelAttribute 적용 대상을 Model의 속성으로 자동 추가해주는 어노테이션 반환 타입 또는 컨트롤러 메서드의 매개변수에 적용 가능 package com.fastcampus.app; import java.util.Calendar; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation...
Spring MVC - @RequestParam
2022. 9. 17. 15:07
Spring/Ch2. Spring MVC
한글 필터 web.xml encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceEncoding true encodingFilter /* HomeController.java package com.fastcampus.app; import java.text.DateFormat; import java.util.Date; import java.util.Locale; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.Req..
Spring MVC - Filter
2022. 9. 17. 13:55
Spring/Ch2. Spring MVC
Filter 공통적인 요청 전처리와 응답 후처리에 사용한다. 로깅, 인코딩 등 package com.fastcampus.app; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletReques..
Spring MVC - JSTL(JSP Standard Tag Library)
2022. 9. 17. 13:43
Spring/Ch2. Spring MVC
${i} ${status.count}. arr[${status.index}]=${elem} msg=${param.msg} msg= 메시지가 없습니다. 성인입니다. 성인이 아닙니다. 값이 유효하지 않습니다. Server time is 1 2 3 4 5 6 7 8 9 10 1. arr[0]=10 2. arr[1]=20 3. arr[2]=30 4. arr[3]=40 5. arr[4]=50 6. arr[5]=60 7. arr[6]=70 메시지가 없습니다. 값이 유효하지 않습니다. Server time is 2022/09/17 13:33:04
Spring MVC - EL(Expression Language)
2022. 9. 17. 13:28
Spring/Ch2. Spring MVC
EL person.getCar().getColor()= person.getCar().getColor()=${person.getCar().getColor()} person.getCar().getColor()=${person.car.color} name= name=${requestScope.name} name=${name} id= id=${pageContext.request.getParameter("id")} id=${param.id} "1"+1 = ${"1"+1} "1"+="1" = ${"1"+="1"} "2">1 = ${"2">1} null = ${null} null+1 = ${null+1} null+null = ${null+null} "" + null = ${""+null} ""-1 = ${""-1} ..
Spring MVC - 유효 범위(scope)와 속성(attribute)
2022. 9. 17. 13:24
Spring/Ch2. Spring MVC
유효 범위(scope)와 속성(attribute) 4개 영역 저장소 기본 객체 유효 범위 설명 pageContext 1개 JSP 페이지 JSP페이지의 시작부터 끝까지. 해당 JSP 내부에서만 접근가능. 페이지 당 1개 request 1개 이상 JSP페이지 요청의 시작부터 응답까지. 다른 JSP로 전달 가능. 요청마다 1개 session n개 JSP페이지 session의 시작부터 종료까지(로그인~로그아웃). 클라이언트 마다 1개 application context 전체 Web Application 의 시작부터 종료까지. context 내부 어디서나 접근 가능 모든 클라이언트가 공유. context마다 1개 속성 관련 메서드 설명 void setAttribute(String name, Object value..
Spring MVC - JSP, Servlet
2022. 9. 16. 18:45
Spring/Ch2. Spring MVC
Servlet vs Controller Servlet 은 class 마다 @WebServlet 을 사용해야 하기 때문에 클래스가 무한정 늘어나는 단점이 있다. 또한 HttpServlet 을 상속 받아야 하고 Service 메서드를 override 받아야 하기 때문에 한계가 명확하다. 파라미터 또한 HttpServletRequest, HttpServletResponse 를 모두 받아야 한다. 이런 점에서 Controller 가 더 발전된 형태이다. Servlet 의 생성주기 package com.fastcampus.app; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebS..
Spring MVC - servlet-context.xml
2022. 9. 16. 17:21
Spring/Ch2. Spring MVC
jsp 경로 지정 반환타입이 String 이면 /WEB-INF/views/yoil.jsp 반환 @Controller public class YoilTellerMVC { @RequestMapping("/getYoilMVC") // http://localhost/app/getYoilMVC?year=2021&month=10&day=1 public String main(int year, int month, int day, Model model) throws IOException { if(!isValid(year, month, day)) { return "yoilError"; } // 2. 처리 char yoil = getYoil(year, month, day); model.addAttribute("year", ..
Spring MVC - 관심사의 분리
2022. 9. 15. 22:16
Spring/Ch2. Spring MVC
객체 지향 프로그래밍 5대 원칙 SOLID SRP(단일 책임의 원칙), Single Responsibility Priciple OCP(개방-폐쇄 원칙), Open-Closed Priciple LSP(리스코프 치환 원칙), Liskov Substitution Priciple ISP(인터페이스 분리 원칙), Interface segregation principle DIP(의존 역전 원칙), Dependency Inversion Priciple SRP - 단일 책임의 원칙 하나의 메서드는 하나의 책임(관심사) 분리 : 1. 관심사 2. 변하는 것, 변하지 않는 것 3. 중복 코드 공통 코드의 분리 - 입력의 분리
Spring MVC - HTTP(Hyper Text Transfer Protocol)란?
2022. 9. 15. 21:30
Spring/Ch2. Spring MVC
HTTP 단순하고 읽기 쉽다. - 텍스트 기반의 프로토콜 상태를 유지하지 않는다. - Stateless : 클라이언트 정보를 저장 하지 않아. 같은 클라이언트가 요청한 것인지 구별 하지 못함 해결 방법을 쿠키와 세션을 사용 확장 가능하다. - 커스텀 헤더(header) 추가 가능 : 대소문자 구분 X, 공백 무시 HTTP 메서드 - GET, POST GET POST - 서버의 리소스를 가져오기 위해 설계 - QUERY STRING 을 통해 데이터를 전달(소용량) - URL 에 데이터 노출 되므로 보안에 취약 - 데이터 공유에 유리 ex. 검색엔진에서 검색단어 전송에 이용 - 서버에 데이터를 올리기 위해 설계됨 - 전송 데이터 크기에 제한이 없음(대용량) - 데이터를 요청 메시지에 body 에 담아 전송 ..
Spring MVC - server.xml, web.xml
2022. 9. 15. 17:15
Spring/Ch2. Spring MVC
톰캣설치경로/conf/server.xml : Tomcat 서버 설정 파일 톰캣설치경로/conf/web.xml : Tomcat의 모든 web app의 공통 설정 웹앱이름/WEB_INF/web.xml : web app의 개별 설정 sever.xml Server(Tomcat) --> Service(catarina) Connector port 를 80으로 하면 localhost:8080 에서 8080 안 써도 됨 Host web.xml(공통) 원격프로그램 1. 서블릿 등록 2. URL 연결 지금은 어노테이션으로 많이 함 1. 서블릿 등록 ==> @Controller default org.apache.catalina.servlets.DefaultServlet debug 0 listings false 1 2. UR..
Spring - pom.xml
2022. 9. 14. 09:33
Spring
POM( Project Object Model) 프로젝트의 구조와 내용을 설명, 프로젝트 관리 및 빌드에 필요한 환경 설정, 의존성 관리 4.0.0 com.mycompany.app my-app 1 라이브러리 경로 C:\Documents and Settings\Administrator\.m2\repository ※ 모듈의 라이브러리 파일명은 artifactId + "-" + 버전명 +".jar" 로 표시
Spring - web.xml
2022. 9. 13. 09:18
Spring
index.jsp 추가 프로젝트를 처음 생성하게 되면 기본적으로 views 폴더에 있는 home.jsp가 실행됩니다. 그렇지만 일반적으로 웹 프로그램이 시작되면 index 페이지가 기본값으로 보여지도록 약속되어 있습니다. 이를 위해 index.jsp를 추가합니다. web.xml 설정 변경 web.xml은 WAS가 처음 구동될 때, WEB-INF 디렉토리에 있는 web.xml을 읽고 웹 애플리케이션 설정을 구성합니다. web.xml 통해서, 이 프로젝트가 시작되면 index.jsp를 호출하도록 변경할 수 있습니다. web.xml web.xml 은 서블릿 역활을 하는 설정 파일의 경로를 지정할 수 있습니다. servlet-context.xml : 서버로 들어오는 모든 요청을 처리 후, 알맞은 컨트롤러로 연결..
Spring - Maven
2022. 9. 13. 09:13
Spring
Spring Legacy Project -> Spring MVC Project 생성 후 기본 구조 Maven 이란? Apache Project 중 프로젝트의 라이브러리를 관리하는 기능을 합니다. 기존에는 라이브러리를 다운받아서 이클립스에서 WEB-INF/lib 안에 라이브러리를 추가해서 사용하였으나, 관리에 어려움이 있었습니다.메이븐을 사용할 경우, Pom.xml 파일에 라는 태그를 추가함으로써 자동으로 찾아서 추가해줍니다. 메이븐은 스프링 안의 Pom.xml 에 필요한 라이브러리를 선언하게 되면 기본적으로 {C:\Users\사용자}\.m2\repository 에 다운로드 됩니다. Maven Repository 변경 Eclipse MarketPlace 에서 STS3 을 다운로드 받았다면 , 아래와 같은 ..
Spring - Spring DI(1)
2022. 9. 13. 03:03
Spring/Ch3. Spring DI, AOP
변경에 유리한 코드 분리 하자 1. 변하는 것, 변하지 않는 것 2. 관심사 다른 것 3. 중복 코드(ex : AOP) Main1.java package com.fastcampus.ch3.diCopy1; import java.io.FileReader; import java.util.Properties; class Car {} class SportsCar extends Car {} class Truck extends Car{} public class Main1 { public static void main(String[] args) { Car car = new SportsCar(); System.out.println("car = " + car); } static Car getCar() throws Exce..
Spring - Controller에서 @Request, GetMapping 이름이 같으면 생기는 에러
2022. 9. 8. 16:20
Spring
to {GET [/api/board]}: There is already 'boardApiController' bean method com.toy.board.web.BoardApiController#all() mapped. Invocation of init method failed; nested exception is java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'boardApiController' method RESTful API 만들다가 생긴 오류 package com.toy.board.web; import java.util.List; import com.toy.board.domain.Board; import com.toy.board...