수업내용/Spring 26

[Spring/ajax] 회원 목록에서 이름 클릭 시 ajax로 회원 상세정보 불러오기

이런 건 재밌다 ㅎ 이름을 a태그로 감싸서 이름 클릭할 때마다 회원 상세정보를 조회할 수 있도록 했다. 문제 1) 클릭한 이름에 해당하는 사용자 정보의 데이터 받아오기 원래 이름 부분 a태그에 data-user-name 속성을 넣어서 let username = $(this).attr("data-user-name"); 을 작성해서 이름을 클릭할 때 사용자 이름을 획득할 수 있도록 했다. ajax로 사용자 이름을 넘겨서 그 사용자 정보를 조회하려고 했는데 생각해보니 username으로 사용자 정보를 찾는 sql문이 없었던 것이다. 새로 만들자니 username은 기본키도, 유니크키도 아니었고 이미 userId로 사용자 정보를 찾는 sql문과 controller, service에 이미 구현이 되어있는 상태였다..

수업내용/Spring 2023.02.14

[2023.1.26.목] 폼 입력값 유효성 검증

폼 입력값 유효성 검증 1. 프론트엔드 폼 입력값 유효성 검증 폼에서 submit 이벤트 발생시 폼입력값을 스크립트 코드로 검증하는 것 2. 백엔드 폼 입력값 유효성 검증 폼 입력값을 저장하는 Form 객체에 각 멤버변수별로 입력값의 유효성을 체크하는 어노테이션을 추가한다. 컨트롤러의 요청핸들러 메소드에서 @Valid 어노테이션을 이용해서 Form 객체에 저장된 폼 입력값의 유효성을 검사한다. 2-1. 폼 입력값 유효성 검증 절차 0) tags.jsp 에서 폼 입력값 유효성 검증을 하게 해주는 태그 라이브러리 추가 - prefix="form" : 폼 입력값 유효성 검증을 하게 해주는 태그 라이브러리 1) pom.xml에 폼 입력값 유효성 검증을 지원하는 라이브러리 의존성 추가 2) 입력폼에서 spring..

수업내용/Spring 2023.01.26

[2023.1.25.수] 스프링 시큐리티 빌드패턴, spring-security 프로젝트 생성

* CustomSecurityConfig 객체에는 3가지 메소드가 있음 - HttpSecurity 를 매개변수로 받는 configure 메소드 - WebSecurity 를 매개변수로 받는 configure 메소드 - AuthenticationManagerBuilder 를 매개변수로 받는 configure 메소드 객체의 초기화 1. 생성자 메소드 생성자 메소드를 이용하는 객체의 초기화의 문제점 객체를 초기화하는 방법이 다양한 경우, 해당 경우의 수만큼 생성자 메소드를 중복정의 해야 한다. 초기화하는 과정에서 전달되는 값을 서로 다르지만, 타입이 동일한 경우 생성자 메소드 중복정의로 해결할 수 없다. (같은 타입의 같은 생성자 메소드 이름 X) - public Sample(String url, String ..

수업내용/Spring 2023.01.25

[2023.1.20.금] spring security

spring-web 프로젝트 * spring framework 로 생성한 프로젝트 * spring bean configuration 파일 정의 * web.xml에 spring 관련 설정 추가 * spring-context, spring-webmvc, spring-jdbc, mybatis, mybatis-spring, logging, fileupload, jackson-databinder 등의 라이브러리 의존성 추가 springboot-rest 프로젝트 * spring boot 로 생성한 프로젝트 * application yml 설정파일 사용 * spring-boot-starter-web, mybatis-spring-boot-starter, spring-boot-devtools, ojdbc8, lombok..

수업내용/Spring 2023.01.20

[2023.1.19.목] REST API 활용 - ajax로 사용자 조회, 삭제, 추가

jQuery의 ajax $.get( url, data, function(response) { ... }, dataType ) GET 방식의 ajax 요청을 서버로 보낸다. dataType은 서버의 응답 콘텐츠 타입을 지정한다. (텍스트, json, xml 등등) dataType은 생략가능하다. $.post( url, data, function(response) { ... }, dataType ) POST 방식의 ajax 요청을 서버로 보낸다. dataType은 서버의 응답 콘텐츠 타입을 지정한다. dataType은 생략가능하다. $.getJSON( url, data, function(response) { ... } ) GET 방식의 ajax 요청을 서버로 보낸다. 서버의 응답데이터가 json 형식일 때만..

수업내용/Spring 2023.01.19

[2023.1.18.수] REST API

1) JSP를 뷰 템플릿 엔진으로 사용하는 spring boot 웹 애플리케이션 - war : Web Application Archive - mybatis, jpa, hibernate 등 다양한 db엑세스 기술과 연동해서 dao 구현 가능 - spring data : db엑세스 기술 통합 => HTML 콘텐츠 응답 2) Thymeleaf를 뷰 템플릿 엔진으로 사용하는 spring boot 웹 애플리케이션 - jar : Java Archive - 외국에서 많이 사용 => HTML 콘텐츠 응답 3) spring boot REST API 웹 애플리케이션 - 별도의 뷰 필요 X (JSON 데이터를 주고받음) REST Representational State Transfer 자원을 이름으로 구분하여 해당 자원의 ..

수업내용/Spring 2023.01.18

[2023.1.17.화] 스프링 부트

Spring 자바 엔터프라이즈 애플리케이션 개발을 지원하는 오픈소스 프레임워크 특징 POJO(Plain Old Java Object)을 사용해서 자바 엔터프라이즈 애플리케이션을 개발한다. POJO - 순수 자바객체 - 특별한 외부 라이브러리를 가져와서 사용하지 않는 자바객체 - 특별한 실행환경에 종속되지 않는 자바객체 - POJO는 재사용하기 쉽다. - POJO는 테스트하기 쉽다. - POJO는 코드가 단순하고, 디버깅하기 쉽다. IoC/DI의 구현체다. IoC (Inversion of Control : 제어역전) - 자신이 사용할 객체를 스스로 생성하지 않고 외부로부터 전달받거나 (의존성 주입) , 생성된 객체를 검색해서 사용하는 것 (의존성 검색)을 말한다. - 제어역전은 자신이 사용할 객체를 획득하..

수업내용/Spring 2023.01.17

[2023.1.17.화] 스프링 MVC 웹 애플리케이션 9 (게시글 수정)

@SessionAttributes({" "}), @ModelAttribute(" ") 의 사용 * 여러 단계의 폼 입력이 필요한 경우 원래 컨트롤러의 메소드마다 (OrderForm orderform)을 적어놓으면 -> 스텝별로 이동하면서 컨트롤러에서 OrderForm 객체를 만들어서 폼에 있는 값을 알아서 집어넣음 -> 근데 문제는, 스텝별로 각각 다른 새로운 OrderForm 객체가 생김 -> model에 "form" 이름으로 OrderForm 객체를 저장 -> @SessionAttributes({"form"}) : model에 form이라는 이름으로 저장된 객체를 세션객체의 속성으로 바로 저장시킴 -> 요청핸들러 메소드 매개변수를 (@ModelAttribute("form") OrderForm form..

수업내용/Spring 2023.01.17

[2023.1.16.월] 스프링 MVC 웹 애플리케이션 8 (사용자정보 표시 - ajax연동 JSON을 응답으로 받기)

ajax 모달창 띄우기 - JSON 형식 데이터를 응답으로 제공하는 이유 : @ResponseBody만 붙이면 -> 자바스크립트 객체, 배열로 변환 -> 값을 쉽게 꺼내쓸 수 있기 때문 * pom.xml에 json 라이브러리 추가 * UserController에서 요청핸들러 메소드 작성 @ResponseBody : 요청핸들러 메소드는 원래는 jsp의 이름을 반환하는데, json이나 엑셀로 반환 (반환값이 응답메시지의 body부에 들어감) * UserDetailDto 에서 json에 표시할 항목 수정 이런식으로 json이 표시됨 * list.jsp 의 표시되는 부분 * list.jsp 의 사용자 정보 표시 모달창 * list.jsp 의 자바스크립트 작성 (JSON 요청) - ${"table-posts a[..

수업내용/Spring 2023.01.16

[2023.1.13.금] 스프링 MVC 웹 애플리케이션 7 (태그 추가, 첨부파일 다운로드)

요청메시지와 가까운 객체(입력폼의 입력필드를 모두 수용할 수 있는 객체) , 테이블과 가까운 객체 1) 첨부파일, 태그가 없는 경우 첨부파일이 없어도 null이 아님 -> MultipartFile 객체가 생성됨 tag는 null 2) 첨부파일은 있고, 태그는 없는 경우 태그 추가 * form.jsp event.which == 13 (엔터키)에 대한 기본동작 : submit 제출 -> 얘를 false를 하면 -> 엔터키를 눌렀을 때 제출되는 것을 막음 keydown 에 대한 기본동작 : 입력필드에 입력 -> 얘를 false를 하면 -> 입력필드에 입력도 안됨 * event.which : 입력된 키의 아스키코드값 반환 * Enter 키의 아스키코드값 = 13 * if (event.which == 13) {}..

수업내용/Spring 2023.01.13