[Spring] - (6) ajax, AOP
2022. 10. 10. 15:30ㆍDev.Program/Java & Spring
728x90
< ajax >
https://mvnrepository.com/search?q=jackson
< pom.xml >
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.5.4</version> </dependency> |
> ajax 는 주소값 이동을 안하고 출력결과를 리턴하기 때문에 데이터를 리턴함!
그래서 ajax 용 컨트롤러를 따로 만들어준다
======== AjaxController.java
package com.itwillbs.controller; import org.springframework.web.bind.annotation.RestController; @RestController public class AjaxController { } |
< join,jsp >
<script src="<c:url value='/resources/script/jquery-3.5.0.js'/>"></script> |
- 제이쿼리 주소 변경
//아이디 중복 체크 $('.dup').click(function(){ if($('#id').val()==""){ $('#dupCheck').html("아이디 입력하세요"); return; } $.ajax('<c:url value="/member/idCheck"/>',{ data:{id:$('#id').val()}, success:function(rdata){ $('#dupCheck').html(rdata); } }); // $.ajax('dupCheck.jsp',{ // data:{id:$('#id').val()}, // success:function(rdata){ // $('#dupCheck').html(rdata); // } // }); }); |
- 가상주소로 이동하게끔 변경
< AjaxController.java >
package com.itwillbs.controller; import javax.inject.Inject; import javax.servlet.http.HttpServletRequest; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import com.itwillbs.domain.MemberBean; import com.itwillbs.service.MemberService; @RestController public class AjaxController { @Inject private MemberService memberService; // /member/idCheck @RequestMapping(value = "/member/idcheck", method = RequestMethod.GET) public ResponseEntity<String> idCheck(HttpServletRequest request) { ResponseEntity<String> entity = null; String result = ""; try { // id 파라미터 가져오기 String id = request.getParameter("id"); // getMember(id); MemberBean mb = memberService.getMember(id); if(mb != null) { // 아이디 중복 result = "iddup"; } else { // 아이디 사용가능 result = "idok"; } // entity 결과 저장 entity = new ResponseEntity<String>(result, HttpStatus.OK); // 잘 넘어갔을 때 } catch (Exception e) { e.printStackTrace(); entity = new ResponseEntity<String>(result, HttpStatus.BAD_REQUEST); // 잘 못넘어갔을 때 } // 리턴 아이디 중복여부 ResponseEntity<String>데이터 리턴 return entity; } } |
- inject 필수
< join.jsp >
//아이디 중복 체크 $('.dup').click(function(){ if($('#id').val()==""){ $('#dupCheck').html("아이디 입력하세요"); return; } $.ajax('<c:url value="/member/idcheck"/>',{ data:{id:$('#id').val()}, success:function(rdata){ if(rdata=="idok") { rdata="아이디 사용가능"; } else { rdata = "아이디 중복"; } $('#dupCheck').html(rdata); } }); // $.ajax('dupCheck.jsp',{ // data:{id:$('#id').val()}, // success:function(rdata){ // $('#dupCheck').html(rdata); // } // }); }); |
< top.jsp >
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <header> <% // String id = (String)세션값 가져오기 String id=(String)session.getAttribute("id"); // 세션값 없으면 login join // 있으면 ..님 logout if(id==null){ %><div id="login"><a href="<c:url value='/member/login'/>">login</a> | <a href="<c:url value='/member/insert'/>">join</a></div><% }else{ %><div id="login"><%=id %>님 | <a href="<c:url value='/member/logout'/>">logout</a> | 회원정보수정</div><% } %> <div class="clear"></div> <!-- 로고들어가는 곳 --> <div id="logo"><img src="<c:url value='/resources/images/logo.gif'/>" width="265" height="62" alt="Fun Web"></div> <!-- 로고들어가는 곳 --> <nav id="top_menu"> <ul> <li><a href="<c:url value='/member/main'/>">HOME</a></li> <li><a href="../company/welcome.jsp">COMPANY</a></li> <li><a href="#">SOLUTIONS</a></li> <li><a href="<c:url value='/board/list'/>">CUSTOMER CENTER</a></li> <li><a href="#">CONTACT US</a></li> </ul> </nav> </header> |
- url 수정
< main.jsp >
<script type="text/javascript"> $(document).ready(function(){ $('.brown').one('click', function(){ $.getJSON('<c:url value="/board/list2"/>', function(rdata){ $.each(rdata, function(index, item){ $('table').append("<tr><td class='contxt'>"+item.subject+"</a></td><td>"+item.date+"</td></tr>"); }) }); // $.getJSON('main_json.jsp', function(rdata){ // $.each(rdata, function(index, item){ // $('table').append("<tr><td class='contxt'><a href='../center/content.jsp?num="+item.num+"'>"+item.subject+"</a></td><td>"+item.date+"</td></tr>"); // }) // }); }); }); </script> |
< AjaxController.java >
@Inject private BoardService boardService; // /board/list2 @RequestMapping(value = "/board/list2", method = RequestMethod.GET) public ResponseEntity<List<BoardBean>> list2() { ResponseEntity<List<BoardBean>> entity = null; try { // 최근글 5개 // PageBean pb 객체 생성 멤버변수 값 저장 PageNum="1" PageSize=5 PageBean pb = new PageBean(); pb.setPageNum("1"); pb.setPageSize(5); // entity 결과 저장 boardService getBoardList(pb) entity = new ResponseEntity<List<BoardBean>>(boardService.getBoardList(pb), HttpStatus.OK); // 잘 넘어갔을 때 } catch (Exception e) { e.printStackTrace(); entity = new ResponseEntity<List<BoardBean>>(HttpStatus.BAD_REQUEST); // 잘 못넘어갔을 때 } // 리턴 게시판 글 5개 ResponseEntity<String>데이터 리턴 return entity; |
- inject 필수!
- 메인화면에서 클릭시 최신글 5개 뽑아옴
< AOP 관점지향 프로그램 >
- springProject 파일 안에 beans5.xml 파일이랑 sample5 파일 붙여넣기
- 원래는 이렇게 출력함(로그 출력이 연결 안되어있을 때)
- 바꿔주기(불러옴)
- HelloApp.java 실행해보면 Console 창에 뜸
728x90
'Dev.Program > Java & Spring' 카테고리의 다른 글
[Spring] - (5) (0) | 2022.10.10 |
---|---|
[Spring] - (4)MyBatis / 설정 및 연동 (0) | 2022.10.09 |
[Spring] - (3)데이터베이스 연동 (0) | 2022.10.09 |
[Spring] - (2) (0) | 2022.10.09 |
[Spring] - (1)설치 및 설정하기 (0) | 2022.10.09 |