consumes @ResponseBody @RequestMapping(value = "/reply/replyList.wow") public Map replyList(ReplySearchVO searchVO){ List replyList=replyService.getReplyListByParent(searchVO); Map map=new HashMap(); map.put("result", true); map.put("data", replyList); map.put("size", replyList.size()); return map; } 위는 freeView에서 댓글을 보여줄 때 사용하는 댓글리스트 요청 처리 메소드이다. 기본적으로 @RequestMapping은 value값에 맞는 요청이 오면 해당 메소드가..
Spring
댓글 개요 댓글은 freeView에만 추가할 예정입니다. 댓글기능을 추가하기전 naver웹툰에 댓글을 참고합시다. URL은 변화가 없는데 댓글부분의 보이는 화면이 다르다. AJAX로 데이터를 변경했기 때문이다. 우리는 Spring 프로젝트 진행 중 freeView화면에서 AJAX로 요청을 하고 Controller에서 DB에 접근해서 댓글데이터를 얻을 것이다. 그리고 ReplyVO(댓글번호, 댓글작성자,댓글내용 등)에 저장할 것이다. @ResponseBody를 붙인 메소드에서 return한 값은 그대로 AJAX succes함수의 파라미터로 온다. 이 ReplyVO를 AJAX요청한 곳에 return 하고 ReplyVO를 자바스크립트로 댓글형태의 태그를 생성한다. Controller //예시 @Response..
더보기 서버 상관없이 main메소드에서 보내는 것부터 해보자. pom.xml Spring에서 mail을 보내보자. mail을 사용하기 위해선 다음과 같이 2가지 dependency가 필요하다. javax.mail mail 1.4.7 org.springframework spring-context-support ${org.springframework-version} Javax.mail은 SMTP, POP3, IMAP을 통해 전자 메일을 주고 받을 수 있게 하는 자바 API이다. piring-context-support에는 캐시,메일,스케줄링,UI 관련 기능들이 포함되어있다. interface MailSender 스프링은 메일 발송 기능을 위한 MailSender 인터페이스를 제공하고 있으며 다음과 같이 정의..
우리는 지금까지 /join/regist.wow 까지 가서 아이디가 DB에 있는 아이디이면 "중복된 아이디입니다" 라는 메세지를 보여주는 방식으로 회원가입을 했지만 사실,아이디의 중복 여부는 "아이디 중복 확인" 버튼을 눌러서 alert창으로 "중복된 아이디입니다" 또는 "사용할 수 있는 아이디입니다" 같은 메세지를 띄우는 방식으로 아이디 중복체크를 확인하는게 일방적이다. 이 때 아이디중복체크를 위해 현재 step2.jsp 화면이 바뀌지 않고 단순히 아이디 중복체크확인만 하기 위해 ajax를 이용해 비동기 요청을 한다. 이 ajax로 요청한 비동기 요청도 DispatcherServlet의 Controller가 처리한다. 먼저 step2.jsp를 수정하자. 테이블의 ID 부분에 "아이디 중복 확인" 버튼을 ..
@ResponseBody Controller에서 사용할 수 있는 @중에 @ResponseBody가 있다. 일반적으로 Spring에서 요청을 처리하는 메소드를 만들면 다음과 같다. package com.study.temp; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class TempController { @RequestMapping("/idcheck.wow") public String idCheck(String id) { return "idcheck"; } } 이 때 idcheck.wow로 요청을 보낸다면 Disp..
컨트롤러 메소드로 오는 파라미터가 의도한대로 잘 넘어오는지 콘솔로 확인하고 싶습니다. freeList 메소드뿐만아니라 freeView에도 적용해본다면 다음과 같이 작성합니다. FreeBoardController.java private Logger logger= LoggerFactory.getLogger(this.getClass()); @RequestMapping("/free/freeList.wow") public String freeList(Model model, @ModelAttribute("searchVO") FreeBoardSearchVO searchVO) { logger.info("searchVO : {}" , searchVO); //freeList의 searchVO 확인 List freeBoar..
일단 spring 프로젝트를 만들면 기본적으로 log4j에 관한 lib는 추가되어있다. pom.xml junit junit 4.7 test org.slf4j slf4j-api ${org.slf4j-version} org.slf4j jcl-over-slf4j ${org.slf4j-version} runtime org.slf4j slf4j-log4j12 ${org.slf4j-version} runtime log4j log4j 1.2.15 javax.mail mail javax.jms jms com.sun.jdmk jmxtools com.sun.jmx jmxri runtime spring 프로젝트의 Java Resource를 보면 src/main 과 src/test가 있다. 이 중 test는 실제 배포할 때는..
Interceptor란 Interceptor는 낚아채다의 의미를 가지고있다. Client에서 Server로 들어온 Request 객체를 Controller의 Handler로 도달하기 전 가로채어, 원하는 추가 작업이나 로직을 수행 한 후 Handler로 보낼 수 있도록 해주는 Module이다. Handler(우린 @Controller)가 실행되기 전에 HandlerInterceptor가 먼저 실행된다. HandlerInterceptor를 거쳐 Request에 대해 원하는 작업, 로직을 수행한 후 Controller로 Request 객체를 전달한다. 보통 Login, 권한체크, Header나 Login Session 검증, 권한체크, API TOKEN 검증 등에 사용된다. Login인을 예로 들면 로그인을..
FreeBoard에 적용해봤다면, Member에도 적용해보려고 한다. 그런데 아직 배우지는 않았지만 사실 localhost:8080/study4/ member/* 에 해당하는 url은 특정권한을 가진 MANAGER만 접속할 수 있게 하려고 한다. memberList게시판같은 경우는 사실 다른 회원의 정보를 볼 수 있으므로 일반 회원은 접근 할 수 없다. 그래서 memberModify.wow, memberRegist.wow url에 validation을 적용하기 보단 실제로 일반 회원이 회원가입하는 과정과 자기 정보를 수정하는 페이지를 만들어보고 거기에 validation을 적용해보자. https://drive.google.com/drive/folders/1Ipx2E34o3D0xER--DolOR3g7Xnv..
자바 validation 개요 우리는 web에서 데이터를 입력할 때 다음과 같이 비밀번호가비어있는지 아닌지 등에 관한 검사를 할 수 있다.이런 검사를 사용할 때 required="required">를 사용해서 할 수도 있을 것이다.하지만 이는 f12를 눌러서 태그에서 required="requred" 부분만 삭제하면데이터가 넘어가서 서버 DB에 원하지 않는 값,이를테면 비밀번호 컬럼에 null or "공백" 값이 들어갈 수도 있다. 물론 DB에서 컬럼에 null 허용을 안 하게 할 수도 있지만 이 경우 mybatis 실행 도중 에러가 발생할 것이다. 만약 서버에서 파라미터 검증이 없다면 이대로 DB에 저장될 것이다.어떤 사용자는 나이를 int형 어떤 사용자는 String으로, 또는 이메일을 ..