본문 바로가기

백엔드 개발

회원 가입 화면 작성하기 1. 회원 가입 화면 HTML 리뷰 Register 아이디 비밀번호 이름 이메일 생일 페이스북 카카오톡 인스타그램 회원 가입 하지만 해당 HTML에 값을 채워서 내보냈다고 해도 작동하지 않는다. 왜냐하면 해당 문서의 form 태그에 값을 보낼 목적지와 요청 API가 뭔지 하나도 안 썼기 때문이다. 이를 안 썼을 때 목적지의 default는 자기 자신이고 REST - API는 GET이 된다. 따라서 해당 내용을 써서 form 태그를 수정하다. 나는 요청 내용을 ch2의 registerinfo로 보낼 예정이다. 또한 GET 요청은 요청 내용이 스트링 쿼리로 브라우저에 적히는 게 싫다 따라서 바디가 있는 POST로 API 요청을 바꾸겠다. form 태그의 속성에는 onsumit이란 이벤트 등록 속성이 있다. .. 더보기
@ModelAttribute 와 WebDataBinder 1. @ModelAttribute (1)기능 @ModelAttribute가 붙어 있는 적용 대상을 자동으로 모델의 어트리뷰트로 넣어준다. (2) 적용 대상 a. Controller Method의 매개 변수 // 매개변수 앞에 붙는다. public String main(@ModelAttribute MyDate date, Model m) { /... } //public String main(@ModelAttribute("myDate") MyDate date, Model m) {/...} 밑의 주석도 위와 동일한 뜻이다. 어노테이션 뒤 ()에 Model 의 Key 값으로 쓰일 이름을 지정해 넣을 수 있다. 이는 생략 가능하며, 생략하면, 클래스의 첫글자를 소문자로 한 문자열이 Key 값이 된다. Model안에.. 더보기
@RequestParam과 컨트롤러 매개변수 깔끔정리하기 1. @RequestParam (1)@RequestParam 이란? 요청의 파라미터를 Mapping된 Method의 매개변수와 연결시키는 어노테이션 하지만 평소에 우리는 해당 어노테이션을 쓰지 않고 바로 매개변수를 적어도, 매소드가 작동했다. 그 이유는 @RequestParam 자체가 생략 가능하기 때문이다. 생략해도 Spring FrameWork가 자동으로 요청의 파라미터와 매소드의 매개변수를 연결시켜준다. (default: 쓰인 차례대로 1대1) (2) 구조 public String main2(@RequestParam(name="year", requried=false) String year) {...} // 연결할 매개 변수 옆에다가 쓰고, // @RequestParam(name="연결할 요청의 파라.. 더보기
JSP와 서블릿(4) 1. JSTL (1) JSTL 이란? JSP Standard Tag Library JSP에서 자바 코드 문을 태그 형태로 표현 한 것 (2) 필요한 이유? JSTL 안 쓰고 JSP에서 자바 코드 문 쓰는 기본 문법으로 쓸 경우 위와 같이 코드 문이랑, EL 문이랑, 그냥 문자열이랑 다 따로 나눠서 써야한다. 너무 복잡하다. 그래서 HTML 문 답게 자바코드든 EL이든 다 태그문법으로 쓸 수 있게 바꾼 것이다. (3) 코드 리뷰 ${i} ${status.count}. arr[${status.index}]=${elem} msg=${param.msg} msg= 메시지가 없습니다. 성인입니다. 성인이 아닙니다. 값이 유효하지 않습니다. Server time is (4) 스스로 써보기 ${i} msg=${para.. 더보기
서블릿과 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.. 더보기