공부 기록들

    2020.04.24 - 미니프로젝트(1) (틀 구성하고 페이지 연결하기)

    2020.04.24 - 미니프로젝트(1) (틀 구성하고 페이지 연결하기)

    Spring Framework 와 MVC 를 이용하여 미니 프로젝트를 시작했다. HTML 은 외부 다른 HTML 을 구해왔고 이를 jsp 로 변환하는 작업을 하였다. 기본적인 구조는 지금까지는 TestController 에서 다 처리를 해주었지만 이제는 controller, service, dao 따로 구분을 하고 controller 또한 내부적으로 여러갈래로 나누기로 했다. view 또한 쓰임새에 따라 폴더를 만들고 나누기로 하였다. 최종 결과물은 게시판인데, 이제 공통적인 html 부분의 jsp 는 따로 빼서 간단하게 처리를 하였다. 다음과 같은데, 맨 위에 Bepoz 와 게시판 이름들 그리고 맨 밑에 내려보면 싸이트의 정보 같은 란이 중복이 되기 때문에 include 폴더 안에 bottom_info..

    2020.04.22~23 - MVC(8) (예외처리, MyBatis Java, MyBatis XML, RestController)

    2020.04.22~23 - MVC(8) (예외처리, MyBatis Java, MyBatis XML, RestController)

    프로그램 실행 중 오류가 발생되면 프로그램 실행이 중단된다. 이제 웹 브라우저에 그 오류 메세지가 나타나면 사용자 입장에서 보기 좋지 않다. 그래서 오류 발생 시에 보여줄 jsp를 구성하고 이를 브라우저에 전달하게 한다. 이 처리는 Controller에서 @ExceptionHandler 메서드를 정의해 주면 오류 발생 시에 이 메서드를 자동으로 호출한다. 다음과 같이 핸들러 괄호안에 오류 내용을 적어두면 된다. 이 익셉션핸들러 어노테이션은 같은 오류이더라도 컨트롤러마다 정의를 해주어야 한다. 컨트롤러 마다 발생 가능한 예외들이 있다면 한 번만 정의해서 사용하는 것이 효율적일 것이다. 이를 위해 GlobalExceptionHandler를 구현한다. 다음과 같이 패키지 안에 만들어주고 ServletAppCo..

    2020.04.21 MVC(7) (JSR-303, JSR-380, Validator 커스터마이징, Interceptor)

    2020.04.21 MVC(7) (JSR-303, JSR-380, Validator 커스터마이징, Interceptor)

    JSR-303 어제 했던 연장으로 하겠다. 똑같다 방식은. 어제는 Max 와 Size를 했었다. 오늘은 @AssertTrue : true가 아닌 값이 들어오면 오류 @AssertFalse : false가 아닌 값이 들어오면 오류 @Max(값) : 값 보다 큰 값이 들어오면 오류 @Min(값) : 값 보다 작은 값이 들어오면 오류 @DecimalMax(value=값, inclusive=true/false) : 값보다 작거나 같은 값이 들어와야 한다. inclusive 가 false면 값은 포함하지 않는다. 생략하면 true 이다. @DecimalMin(value=값, inclusive=true/false): 상동. min과 max는 이상 이하 이다. 이건 보통 초과 미만 때 사용한다. @Null : 값이 ..

    2020.04.20 MVC(6) (쿠키, 유효성 검사, JSR-303)

    2020.04.20 MVC(6) (쿠키, 유효성 검사, JSR-303)

    Cookie * 사용자 웹 브라우저에 저장되는 데이터이다. * 요청이 발생했을 때 웹 브라우저는 쿠키에 저장된 정보를 서버에 전달하게 된다. * 만약 응답 결과로 쿠키 정보가 전달되면 웹 브라우저가 쿠키에 저장하게 된다. * 쿠키는 사용자 브라우저에 저장되는 것이므로 브라우저가 전달 해 줄 때만 쿠키 정보를 사용할 수 있다 Cookie 저장 * 서버 측 코드로 쿠키에 데이터를 저장할 수 있는 방법은 없다. * 브라우저로 보낼 응답 결과에 저장할 쿠키 정보를 담아 보내면 브라우저에 의해 쿠키가 저장된다. * Spring MVC에서 쿠키 저장은 Servlet/JSP에서 사용하는 방법으로 처리한다. load는 배열로 쿠키를 받아와서 getName을 하나씩 따져보는 방법이 있지만 그냥 바로 어노테이션을 이용하여..

    2020.04.17 MVC(5) ( SessionScope, ApplicationScope)

    2020.04.17 MVC(5) ( SessionScope, ApplicationScope)

    Session 은 브라우저가 최초로 서버에 요청을 하게 되면 브라우저당 하나씩 메모리 공간을 서버에서 할당하게 된다. 이 메모리 영역은 브라우저당 하나씩 지정되며 요청이 새롭게 발생하더라도 같은 메모리 공간을 사용하게 된다. 이 영역은 브라우저가 종료될 때 까지 서버에서 사용할 수 있다. sessionScope 에서 session 영역에 저장되어 있는 데이터를 사용할 수 있다. HttpServletRequest request reqeust.getSession() 을 통해 session을 사용할 수도 있지만 HttpSession session 으로 바로 사용할 수도 있다. 또는 다음과 같이 @SessionAttribute("id value") 형식자 이름 을 통해 받아올 수도 있다. Session 영역에 ..

    2020.04.16 MVC(4) ( Bean 주입 java/xml, form 태그, redirect, forward, requestScope )

    2020.04.16 MVC(4) ( Bean 주입 java/xml, form 태그, redirect, forward, requestScope )

    select 태그이다. path와 같은 값이 처음 화면에서 보이게끔 나와진다. 배열과 ArrayList를 model.addAttribute를 하여 받아올 수도 있다. 이 떄에는 options 태그를 사용한다. data_list1 은 배열이고 data_list2 은 ArrayList 이다. 각 data1, data2, data3 값을 집어 넣었고 path 값에 따라 첫 화면에 나오는 데이터가 정해지고 맨 위의 항목1 이렇게 나오는 것과 달리 데이터 값 그대로 data1, data3 으로 나온 것을 확인할 수 있다. key 값과 value 값을 가진 KeyValueBean을 만들어서 key 와 value 값을 넣고 arrayList에 넣어서 model 객체에 주입해주고 난 뒤에, 다음과 같이 사용하게 되면 ..

    2020.04.14-15 MVC(3) (파라미터 받아오기2, 커맨드 객체)

    어제 @RequestParam int data1 이렇게 클라이언트한테서 받아오는 방법이 있었다. 만약 data가 1,2,3,4,5 이렇게 여러개 있다면 일일이 다 선언해주는 것이 아니라 map 을 이용해 한 번에 받아올 수가 있다. public String test1(@RequestParam Map map, @RequestParam List data3 ) { String data1=map.get("data1"); String data2=map.get("data2"); String data33=map.get("data3"); System.out.println("data1 : "+data1); System.out.println("data2 : "+data2); System.out.println("data3 ..

    2020.04.13 MVC(2) (파라미터 받아오기)

    라밑지난번 스프링때 배웠던 것을 다시 복습하는 느낌이다. 컨트롤러에서 @RequestMapping(value="/경로", method=RequestMethod.GET) 식이며 경로는 요청된 곳에서 보내는 경로이다. 예시로 index.jsp 에서 test 이렇게 보내면 이제 value="/test" 로 받게되는 것이다. 그런데 이제 여러개가 경로가 /sub/test1 /sub/test2 이렇게면 그 Class 위에 @RequestMapping(value="/sub") 를 적어서 한 번에 처리해줄 수가 있다. method=RequestMethod.POST/GET 으로 GET,POST 구분을 해줄 수도 있지만 @GetMapping(value="/test") @PostMapping(value="/test") 이..