https://bobo12.tistory.com/302
(3) jQuery 라이브러리 변경
▷ JSP 페이지 작성시 JavaScript로 브라우저 내 조작이 필요한 경우가 많음
▷ 예제는 jQuery를 이용할 것인데, 문제는 이전의 방식대로 처리했을 시 jQuery 라이브러리가 footer.jsp 내에 포함되어 있다는 점
▷ 성능의 손해가 있더라도 jQuery를 header.jsp에 선언하면 작성하는 JSP에서 자유롭게 사용할 수 있습니다.
◎ footer.jsp에 있던 jquery 문구를 삭제하고 header 마지막에 추가합니다.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
◎ jQuery를 교체한 후 모바일 크기에서 새로 고침 시 메뉴가 펼쳐지는 문제가 발생
▷ fooder.jsp에 아래와 같은 코드 추가
...(생략)... <script> $(document).ready(function() { $('#dataTables-example').DataTable({ responsive: true }); $(".sidebar-nav") .attr("class", "sidebar-nav navbar-collapse collapse") .attr("aria-expanded", 'false') .attr("style", "height:1px"); }); </script> </body>
2. 목록 화면 처리
▷ list.jsp 페이지 일부를 include 하는 방식으로 처리했음에도 HTML의 내용들이 많이 존재하므로 최소한의 태그들만 적용
◎ list.jsp 내용 삭제 및 수정
▷ JSTL의 출력과 포맷을 적용할 수 있는 태그 라이브러리 추가
▷ 필요 없는 부분 삭제 및 내용 수정
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <%@include file="../includes/header.jsp" %> <div class="row"> <div class="col-lg-12"> <h1 class="page-header">Tables</h1> </div> <!-- /.col-lg-12 --> </div> <!-- /.row --> <div class="row"> <div class="col-lg-12"> <div class="panel panel-default"> <div class="panel-heading">Board List Page <button id='regBtn' type="button" class="btn btn-xs pull-right">Register New Board</button> </div> <!-- /.panel-heading --> <div class="panel-body"> <table width="100%" class="table table-striped table-bordered table-hover"> <thead> <tr> <th>#번호</th> <th>제목</th> <th>작성자</th> <th>작성일</th> <th>수정일</th> </tr> </thead> <c:forEach items="${list}" var="board"> <tr> <td><c:out value="${board.bno}" /></td> <td><c:out value="${board.title}" /></td> <td><c:out value="${board.writer}" /></td> <td><fmt:formatDate pattern="yyyy-MM-dd" value="${board.regdate}" /></td> <td><fmt:formatDate pattern="yyyy-MM-dd" value="${board.updateDate}" /></td> </tr> </c:forEach> </table> <!-- Modal 추가 --> <div class="modal fade" id="myModal" tabindex="-1" role=dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class=close" data-dismiss="modal" aria-hidden="true">×</button> <h4 class="model-title" id="myModalLabel">Modal title</h4> </div> <div class="modal-body">처리가 완료되었습니다.</div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> <button type="button" class="btn btn-primary">Save changes</button> </div> </div> <!-- /.modal-content --> </div> <!-- /.modal-dialog --> </div> <!-- /.modal --> </div> </div> <script type="text/javascript"> $(document).ready(function() { var result = '<c:out value="${result}"/>'; checkModal(result); function checkModal(result) { if(result === '') { return; } if(parseInt(result) > 0) { $(".modal-body").html("게시글 " + parseInt(result) + " 번이 등록되었습니다."); } $("#myModal").modal("show"); } }); </script> <%@include file="../includes/footer.jsp" %>
출력하면 아래와 같이 테이블의 전체 목록이 출력됩니다.
3. 등록 입력 페이지와 등록 처리
▷ 게시물 등록 작업은 POST 방식으로 처리하지만,
화면에서 입력 받아야 하므로 GET 방식으로 입력 페이지 볼 수 있도록 BoardController에 메소드 추가
◎ BoardController 수정
...(생략)... @GetMapping("/register") public void register() { } }
◎ src/main/webapp/WEB-INF/views/board → register.jsp 생성
▷ views 폴더에 includes 적용한 입력 페이지 작성
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <%@ include file="../includes/header.jsp" %> <div class="row"> <div class="col-lg-12"> <h1 class="page-header">Board Register</h1> </div> </div> <!-- /.row --> <div class="row"> <div class="col-lg-12"> <div class="panel panel-default"> <div class="panel-heading">Board Register</div> <!-- /.panel-heading --> <div class="panel-body"> <form role="form" action="/board/register" method="post"> <div class="form-group"> <label>Title</label> <input class="form-control" name="title"> </div> <div class="form-group"> <label>text Area</label> <textarea class="form-control" rows="3" name='content'></textarea> </div> <div class="form-group"> <label>Writer</label> <input class="form-control" name="writer"> </div> <button type="submit" class="btn btn-default">Submit Button</button> <button type="reset" class="btn btn-default">Reset Button</button> </form> </div> <!-- end panel-body --> </div> <!-- end panel-body --> </div> <!-- end panel --> </div> <!-- /.row --> <%@include file="../includes/footer.jsp" %>
register.jsp 페이지에서는 <form> 태그를 이용해서 필요한 데이터를 전송
<input>이나 <textarea> 태그의 name 속성은 BoardVO 클래스의 변수와 일치 시킴
게시글이 등록은 되지만 한글이 깨지는 문제가 발생
(1) 한글 문제와 UTF-8 필터 처리
▷ 브라우저에서 한글이 깨져서 전송되는지를 확인 함
▷ 문제가 없다면 스프링 MVC 쪽에서 한글을 처리하는 필터를 등록해야 함
◎ web.xml 수정
...(생략)... <filter> <filter-name>encoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encoding</filter-name> <servlet-name>appServlet</servlet-name> </filter-mapping> </web-app>
list.jsp 내용을 수정하면서 테이블값의 목록을 출력하며 새로운 값들을 등록할 수 있게 만들었습니다.
이어서 내용들을 추가해볼게요!!
많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~
'BackEnd > Spring' 카테고리의 다른 글
[코드로 배우는 스프링 웹 프로젝트] ch11 화면 처리 4 (0) | 2023.03.29 |
---|---|
[코드로 배우는 스프링 웹 프로젝트] ch11 화면 처리 3 (0) | 2023.03.29 |
[코드로 배우는 스프링 웹 프로젝트] ch11 화면 처리 1 (0) | 2023.03.29 |
[코드로 배우는 스프링 웹 프로젝트] ch10 프레젠테이션(웹) 계층의 CRUD 구현 2 (0) | 2023.03.28 |
[코드로 배우는 스프링 웹 프로젝트] ch10 프레젠테이션(웹) 계층의 CRUD 구현 1 (0) | 2023.03.28 |