SPRING

    [스프링]-댓글 수 구현 : 동기,비동기 방식을 사용할 때의 구현, 차이점과 2가지의 댓글 수 변경 로직

    [스프링]-댓글 수 구현 : 동기,비동기 방식을 사용할 때의 구현, 차이점과 2가지의 댓글 수 변경 로직

    이번글은 1. 동기식 댓글작성을 사용할때 댓글수 구현 2. 비동기식 댓글작성을 사용할때 댓글수 구현 3. 그리고 전체댓글개수를 검색해서(select count) 댓글수를 변경하는 방법과 댓글 작성시 +1 , 삭제시 -1 로 댓글수를 변경하는 방법 을 설명합니다. 서비스중인 게시판들을 보면, 게시판 제목 옆에 댓글이 몇개 달렸는지 나와있는 부분이 있다. 그 부분을 구현해보려고 한다. 바로 이 전 글인 조회수 증가와 비슷한 부분이 있다 -------- 동기식 ( 서브쿼리 방식) ALTER TABLE MP_BOARD ADD(REPLYHIT NUMBER DEFAULT 0); COMMIT; 일단 게시글 테이블에 댓글수 컬럼을 추가해준다. public class BoardVO { private int bno; pr..

    [스프링] 게시글 조회수와 트랜잭션 구현

    오라클 사용중입니다. ALTER TABLE MP_BOARD ADD(HIT NUMBER DEFAULT 0); COMMIT; 조회수 칼럼 HIT 를 게시판 테이블에 추가 public class BoardVO { private int bno; private String title; private String content; private String writer; private Date regdate; private int hit; 게시판VO에 hit를 추가하고 getter&setter를 생성 org.springframework spring-tx 3.1.1.RELEASE 트랜잭션을 사용하기위해 트랜잭션관련 라이브러리를 가져올 코드를 pom.xml에 추가 스프링 트랜잭션 라이브러리를 사용하기위해 root-con..

    스프링 페이징 구현 - 게시글 수정,삭제,내용보기 후 검색어유지

    UriComponents 을 사용해서 페이징과 게시글 검색 기능을 구현했다. 그 후에 검색기능 후 url로 검색어 유지 기능 1.검색 후 게시글 내용페이지로 들어가서 목록을 눌렀을때 검색어를 유지한채로 list로 돌아가기 2.삭제 시 원래 검색어를 유지한채 list로 돌아가기) 3.수정페이지에서 취소시 원래 검색어를 유지한채 readView로 돌아가기) 4.수정 후 readView에서 목록을 눌러 list로 돌아갈때 검색어 유지) 을 추가했다. ************* SearchCriteria scri = 페이징과 검색어 값이 담긴 클래스 BoardVO boardVO = 게시글 PR,제목,내용,작성자 등 게시글 관련값이 담긴 클래스 RedirectAttributes rttr= http주소 header ..

    DataAccessException 란? -Spring 예외처리

    1. SQLExcpetion JDBC는 모든 Exception을 SQLException 에 하나에 모두 담아버린다. 대부분의 SQLException은 복구가 불가능하다. DAO 밖에서 SQLException을 다룰 수 있는 가능성은 거의 없다. 따라서 필요도 없는 기계적인 throws 선언이 등장하도록 방치하지 말고 가능한 한 빨리 언체크/런타임 예외로 전환해줘야 한다. 2. DataAccessException 런타임 예외이고 DataAccessException 중 가장 루트 class이다. JdbcTemplate 템플릿과 콜백 안에서 발생하는 모든 SQLException을 런타임 예외인 DataAccessException으로 포장해서 던져준다. Spring에서 DB 관련 Exception 은 DataA..

    HttpserveltRequest와 HttpSession,세션과 로그인 로그아웃

    홈페이지를 구현하는 중, 로그인 시에 사용하는 HttpServletRequest와 HttpSession에 대해 궁금해졌다. 일단 Http프로토콜은 -연결상태유지X -요청단위로 Connection -이전 페이지에서 수집한 데이터를 다음페이지에서 사용X -다음 페이지에서도 이전 페이지의 데이터를 유지하기 위해선 어딘가 저장해놓고 유지시켜놓아야함 -저장소 : HttpServletRequest , HttpSession, ServletContext -저장 :setAttribute(name,value) -추출 : getAttribute(name) -삭제:removeAttribute(name) -각 저장소의 차이점: 메모리에서 살아있는 기간이 다름 HttpSession HttpServletRequest 생성 : Cl..

    UriComponents과 URLEncoding

    UriComponents클래스는 Path나 query에 해당하는 문자열들을 추가해서 원하는 URI를 생성할 때 사용한다. UriComponents uricomponets = UriComponentsBuilder.newInstance().path("/board/read").queryParam("bno",12).queryParam("perPageNum", 20).build(); 다음과 같이 지정하게 되면, /board/read?bno=12&perPageNum=20 로 url이 조합된다. url 뒤의 ? & % 와 같은 것은 따로 설명하도록 하겠다. //UriEncoding public String makeSearch(int page) { UriComponents uriComponents = UriCompon..

    AOP를 이용한 트랜잭션 구현 중 트랜잭션이 먹지 않는 현상과 메모리누수경고(Memory leak)=(톰캣구동안됨) 404에러 해결

    메모리누수 경고가 나오며 톰캣 구동이 안되고 서버가 실행이 안되니 당연히 404에러가 나왔다. 처음엔 서버문제인지 몰랐으나 404에러가 뜰 때 특정 페이지로 가게 예외처리를 해놨는데 404에러 페이지로 가게 된 것을 눈치채고 서버오류인지 확인. 에러 목록을 살펴보니 cglib를 깔으란다. pom.xml 에 cglib 추가로 해결. cglib cglib 3.1 오류의 이유를 찾으려했으나 맞는 증상이 없고 스택오버플로우와 깃허브를 힘들게 눈번역해본 결과 내가 사용하는 이클립스 버전이 좀 낮은데 그래서 스프링버전이 낮다..그로인해 생긴 버그같다. 높은 버전의 스프링에선 이 문제를 찾아볼 수 없다.. 해결 후 로그를 확인해보니 at net.sf.cglib.proxy.MethodProxy.invoke(Method..

    스프링 게시글 글쓰기 및 수정, ModelAttribute와 RedirectAttributes의 사용

    @RequestMapping(value = "saveBoard", method = RequestMethod.POST) public String saveBoard(@ModelAttribute("BoardVO")BoardVO boardVO, @RequestParam("mode") String mode, RedirectAttributes rttr)throws Exception{ //edit이 오면 수정 아니면 글쓰기 if(mode.equals("edit")) { boardService.updateBoard(boardVO); }else { boardService.insertBoard(boardVO); } return "redirect:/board/getBoardList"; } 게시판에서 글쓰기버튼을 눌러서 글쓰..

    스프링 데이터를 전달하는 형태(Model,ModelAndView)

    1. Model - 파라미터 방식으로 메소드에 (Model model)파라미터를 넣어주고 String형태로 리턴한다 @RequestMapping("/joinRequest") public String join(HttpServletRequest request, Model model) { model.addAttribute("name", request.getParameter("name")); model.addAttribute("gender", request.getParameter("gender")); model.addAttribute("email", request.getParameter("email")); model.addAttribute("method", "HttpServletRequest"); return ..

    스프링 파라미터 받아오기(HttpServletRequest,RequestParam)

    1. HttpServletRequest를 사용 - getParameter @Controller public class MvcController{ @RequestMapping("/mvc.do") public String mvclnit(HttpServletRequest req){ String value = req.getParaMeter("name"); return "board/index"; } } getParameter는 key-value 형태로 전달된 하나의 파라미터를 받는 메서드이다 , key값을 인자로 전달하면 하나의 value값을 반환한다. view에서 mvc.do를 키값으로 받아 value값을 view단인 /WEB-INF/views/board/index.jsp로 반환한다. -getParameterV..