본문 바로가기

분류 전체보기

(197)
스프링 <form> 태그 사용법 HTML을 이용하여 뷰를 만들수도 있지만 에러 메세지 출력을 편하게 하기 위해서는 태그를 사용하는 편이 좋다. 1. jsp 파일 상단에 라이브러리 추가 2. jsp 파일 작성 * 주의할 점 태그에서 commandName은 Controller에서 뷰로 쏴주는 이름을 그대로 넣어야한다. 자유게시판 - 글쓰기 게시판 선택 제목 작성자 내용 비밀번호 3. Controller GET 요청에서 추가 작업 필요 model.addAttribute("board", new BoardVO()); 태그에서는 커맨드 객체를 요구하므로 GET 요청 단계에서 VO를 만들어서 model로 넘겨줘야한다. // INSERT @RequestMapping(value="/write") public String insertFreePost(Mo..
mybatis 환경설정 : <typeAliases> mybatis를 사용할 때 여러 가지 환경 설정을 할 수 있다. 파일은 src/main/resources 아래에만 위치하면 되지만, mybatis 설정 파일이 있는 위치를 서버가 읽어야하기 때문에 아래와 같이 root-context.xml에 셋팅해줘야한다. configLocation : mybatis 설정 파일 경로 mapperLocations : sql 구문이 담긴 mapper 설정 파일 경로 다음은 설정 파일의 양식이다. cacheEnabled 캐싱을 방지하고 싶으면 false로 설정 useGeneratedKeys mapUnderscoreToCamelCase 자바 이름 규칙은 camel을 사용. 하지만 _를 사용하는 경우 매핑 문제를 해결하기 위한 설정 xml 파일 안에서 패키지 경로를 사용할 때 설..
스프링 유효성 검증 : @Valid 어노테이션 자바에서는 Validator 인터페이스를 통해 유효성 검증을 제공한다. 스프링에서는 @Valid 어노테이션으로 조금 더 편하게 검증할 수 있는 방법을 제공하는데 이에 대해 알아보자. 1. pom.xml에 유효성 검증 기능을 구현한 라이브러리 추가 아래의 예제는 hibernate를 사용 org.hibernate hibernate-validator 5.1.3.Final javax.validation validation-api 1.0.0.GA 2. BoardVO 커맨드 객체에 원하는 어노테이션 추가 어노테이션은 String 타입에서만 적용 가능하다. + 유효성 체크가 필요한 변수들은 나중에 꼭 String으로 지정하자. package com.spring.board.domain; import java.sql.T..
쿠키 @CookieValue 쿠키는 장바구니, 아이디 저장과 같은 상태 정보를 유지하기 위한 기술이다. 대신 보안성이 낮기 때문에 중요한 정보를 넣는 것은 좋지 않다. 하나에 4KB 이하로 제한되어 있으며 총 300개까지 정보 저장 가능하며 최대 저장 가능 쿠키 용량은 1.2MB이다. 서버에서 쿠키를 만든다. 만든 쿠키를 응답 헤더에 보낸다. 웹 브라우저는 읽은 쿠키를 저장한다. 동일한 요청을 할 때 받은 쿠키를 서버에 보낸다. 서버는 쿠키를 보고 클라이언트가 계속 접속 상태임을 확인한다. @CookieValue 메서드 종류 String getName() : 쿠키의 이름 리턴 String getValue() : 쿠키의 값 리턴 String getPath() : 쿠키의 적용 경로 리턴 int getMaxAge() : 쿠키의 유효기간 ..
ArrayList ArrayList List 인터페이스를 구현한다. 데이터의 순서 유지, 중복을 허용한다. Vector 클래스와 동일하지만 오래된 버전이므로 ArrayList를 쓰면 된다. Object[] 배열을 이용해서 데이터를 순차적으로 저장한다. 크기를 변경할 수 없다는 단점 때문에 배열에 더 이상 저장할 공간이 없다면 보다 큰 새로운 배열을 생성해서 기존의 배열에 저장된 내용을 새로운 배열로 복사한 다음 저장한다. 또 한 가지 단점이 있는데 비순차적인 데이터의 추가, 삭제에 많은 시간이 걸린다. 데이터를 원하는 위치에 추가하거나 처음 혹은 중간값들을 삭제하기 위해 다른 데이터를 옮기는 과정이 필요하다. 대신에 끝에 추가, 끝부터 삭제와 같은 작업은 빠르기 때문에 아래의 예제에서도 끝에 있는 값부터 삭제하는 것을 볼..
HandlerInterceptor : 세션을 미리 확인하자 HandlerInterceptor 핸들러 인터셉터 특정한 URI 호출을 가로채는 역할을 한다. 이를 이용하여 기존 컨트롤러의 로직을 수정하지 않고도 사전이나 사후에 제어가 가능하다. 참고로, Adaptor가 인터페이스와 다른 점은 인터페이스는 모든 추상 메서드를 구현해야 하지만 HandlerInterceptorAdaptor는 일단 초벌구이처럼 모든 추상 메서드를 대충 구현해놓은 상태라 여러 개의 메서드 중에서 내가 원하는 것 하나만 가져다가 써도 나머지 두 추상 메서드를 구현하지 않아도 되는 장점이 있다. HandlerInterceptor는 대표적으로 세 가지의 메서드를 가지고 있다. preHandle() 컨트롤러 실행 전에 필요한 기능을 구현할 때 사용 반환 값이 true인 경우에만 컨트롤러 요청으로 ..
로그인 / 로그아웃 / 세션 1. 로그인 정보를 담기 위한 VO 객체 package spring; // 로그인 정보를 담는 VO 클래스 public class LoginCommand { private String email; private String password; private boolean rememberEmail; // 이메일 아이디 기억하기(쿠키) public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPassword() { return password; } public void setPassword(String password) { this.password = pa..
비밀번호 변경하기 1. 비밀번호 변경을 위한 커맨드 객체 생성 package spring; // 비밀번호 요청을 받아줄 커맨드 객체 public class ChangePwdCommand { private String currentPassword; private String newPassword; public String getCurrentPassword() { return currentPassword; } public void setCurrentPassword(String currentPassword) { this.currentPassword = currentPassword; } public String getNewPassword() { return newPassword; } public void setNewPasswor..