일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 메이븐
- @RestController
- 스프링
- 코테
- Model2
- SQL
- MVC
- 코딩테스트
- 뉴렉처
- select
- Model1
- 서브쿼리
- MVC2
- 프로그래머스
- 김영한
- order by
- 프레임워크
- JSP
- AOP
- 서블릿
- STS
- 세션
- 자바
- 기술 대비
- toUpperCase
- 인텔리제이
- DDL
- Join
- 인프런
- @Controller
- Today
- Total
목록김영한 (12)
Heestory

로그인 처리하기 - 쿠키 사용 쿠키 영속 쿠키 : 만료 날짜를 입력하면 해당 날짜까지 유지 세션 쿠키 : 만료 날짜를 생략하면 브라우저 종료시까지만 유지 LoginController // @PostMapping("/login") public String login(@Valid @ModelAttribute LoginForm form, BindingResult bindingResult, HttpServletResponse response) { if (bindingResult.hasErrors()) { return "login/loginForm"; } Member loginMember = loginService.login(form.getLoginId(), form.getPassword()); log.info(..

컨트롤러 : HTTP 요청이 정상인지 검증 @PostMapping("/add") public String addItem(@ModelAttribute Item item, RedirectAttributes redirectAttributes, Model model) { //검증 오류 결과 보관 Map errors = new HashMap(); //검증 로직 if (!StringUtils.hasText(item.getItemName())){ errors.put("itemName","상품 이름은 필수입니다"); } if(item.getPrice()==null || item.getPrice() 1000000){ errors.put("price","가격은 1,000 ~ 1,000,000까지 허용합니다."); } if..

메시지 기능 : 다양한 메시지를 한 곳에서 관리하도록 하는 기능 hello=안녕 hello.name=안녕 {0} label.item=상품 label.item.id=상품 ID label.item.itemName=상품명 label.item.price=가격 label.item.quantity=수량 page.items=상품 목록 page.item=상품 상세 page.addItem=상품 등록 page.updateItem=상품 수정 button.save=저장 button.cancel=취소 국제화 message_en.properties message_ko.properties 등을 설정해놓고 만약 찾을 수 있는 국제화 파일이 없으면 messages.properties를 기본으로 사용한다. @Test void defau..

상품명 th:object : 커맨드 객체를 지정한다 th:field : HTML 태그의 속성을 자동으로 처리한다. 체크 박스 - 단일 판매 여부 판매 오픈 th:field 없이 히든 필드 추가 th:field="*{open}" 체크 박스 체크 : open=on&_open=on 체크 박스 미체크 : _open=on 체크 박스 - 멀티 @ModelAttribute 의 사용법 컨트롤러의 @ModelAttribute는 별도의 메서드로 적용할 수 있다. @ModelAttribute("deliveryCodes") public List deliveryCodes(){ List deliveryCodes = new ArrayList(); deliveryCodes.add(new DeliveryCode("FAST","빠른 배..

타임리프 특징 서버 사이드 HTML 렌더링(SSR) HTML을 동적으로 렌더링 하는 용도로 사용 네츄럴 템플릿 - 순수 HTML을 최대한 유지하는 특징 - 웹 브라우저에서 파일을 직접 열어도 내용을 확인 할 수 있고, 서버를 통해 뷰 템플릿을 거치면 동적으로 변경된 결과를 확인할 수 있다. (JSP를 포함한 다른 뷰 템플릿들은 해당 파일을 열면, 오직 서버를 통해서 JSP가 렌더링 되고 HTML 응답 결과를 받아야 화면을 확인 할 수 있음) 스프링 통합 지원 타임리프 기본 기능 Tutorial: Using Thymeleaf Tutorial: Using Thymeleaf 1 Introducing Thymeleaf 1.1 What is Thymeleaf? Thymeleaf is a modern server-..

@RestController : 반환 값으로 HTTP메시지 바디에 바로 입력 @Controller : 반환 값이 String이면 뷰 이름으로 인식, 뷰를 찾고 뷰가 렌더링 +@ResponseBody 추가하면 @RestController 역할 가능 @RequestMapping 다중 설정이 가능하며, 배열로 제공 method를 별도 지정하지 않으면 HTTP 메서드와 무관하게 모두 허용 @PathVariable(경로변수) 사용 :이름과 파라미터 이름이 같으면 생략할 수 있다. consumes , produces consumes : 클라이언트가 서버에서 보내는 데이터 타입, Request Body에 담는 타입을 제한 produces : 서버가 클라이언트에게 반환하는 데이터 타입 @RequestParam @Req..

DispacherServlet HttpServlet을 상속 받아서 사용하고, 서블릿으로 동작한다. 스프링 부트는 자동으로 등록하면서 모든경로(urlpatterns="/")에 대해 매핑 핸들러 조회 / 핸들러 어댑터 조회 / 핸들러 어댑터 실행 / ViewResolver 호출 / render(model) 호출 등의 역할 진행 (주요 인터페이스들을 등록하여 진행한 것) Spring MVC 구조 핸들러 조회(HandlerMapping) : 핸들러 매핑을 통해 요청 URL에 매핑된 핸들러(컨트롤러)를 조회한다. 핸들러 어댑터 조회 : 핸들러를 실행할 수 있는 핸들러 어댑터를 조회한다. 핸들러 어댑터 실행 : 핸들러 어댑터를 실행한다. 핸들러 실행 : 핸들러 어댑터가 실제 핸들러를 실행한다.(어댑터가 핸들러를 실..

프레임워크 점진적인 발전 요약 v1 : 프론트 컨트롤러 도입 기존 구조를 최대한 유지하면서 프론트 컨트롤러를 도입 v2: VIew 분류 단순 반복 되는 뷰 로직 분리 v3 : Model 추가 서블릿 종속성 제거 뷰 이름 중복 제거 v4 : 단순하고 실용적인 컨트롤러 v3과 구조 거의 비슷 구현 입장에서 ModelView를 직접 생성해서 반환하지 않도록 편리한 인터페이스 제공 v5 : 유연한 컨트롤러 어댑터 도입 어댑터를 추가해서 프레임워크를 유연하고 확장성 있게 설계 FrontController : 서브릿 하나로 클라이언트의 요청을 받아 맞는 컨트롤러를 찾아 호출 → DispathcherServlet이 FrontController 패턴으로 구현되어 있다. 프론트 컨트롤러 도입 - v1 View 분리 - ..

서블릿 이용 @WebServlet(name = "memberFormServlet", urlPatterns = "/servlet/members/new-form") public class MemberFormServlet extends HttpServlet { private MemberRepository memberRepository = MemberRepository.getInstance(); @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); response.se..

@WebServlet : 서블릿 애노테이션 name : 서블릿 이름 urlPatterns : URL 매핑 HTTP 응답에서 Content-length는 웹 애플리케이션 서버가 자동으로 생성해준다. HttpServletRequest,HttpServletResponse 역할 : HTTP 요청 메시지를 편리하게 사용하도록 도와주는 객체 HTTP 요청 메시지 START LINE - HTTP 메소드 - URL - 쿼리 스트링 - 스키마, 프로토콜 헤더 - 헤더 조회 바디 - form 파라미터 형식 조회 - message bodt 데이터 직접 조회 임시 저장소 :해더 HTTP 요청이 시작부터 끝날 때 까지 유지되지 임시 저장소 기능 저장 : request.setAttribute(name, value) 조회 : re..