일시 : 2022-01-16
범위 : 자바 웹 프로그래밍 Next Step 8장 실습(p277-p303)
목적
1. Ajax 기술을 활용해 게시판에 답변을 추가, 삭제하는 기능 구현
2. HTML과 JSON 두 가지 형태의 응답을 함으로써 발생하는 MVC 프레임워크의 문제점을 살펴보고 이를 개선
실습
브라우저가 서버에서 HTML 응답을 받아 처리하는 과정은 다음과 같다.
이처럼 서버에 요청을 보내고 응답을 받아 사용자에게 화면을 보여줄 때까지 많은 단계를 거치고, 많은 비용이 발생한다.
게시판의 추가, 삭제 등 화면의 일부만 변경되는 상황에서 위의 과정을 실행하는 것은 상당히 불합리하다. 이같은 단점을 보완하기 위해 등장한 기술이 AJAX(Asynchronous JavaScript and XML)이다.
시간 관련해서 Date, Calendar 클래스를 사용해왔다. 하지만 이 클래스들은 Java의 날짜와 시간 API의 단점을 가지고 있다. 아래에 일부 내용을 기재해보았다.
이러한 단점을 보완한 java.time API가 Java 8 이상부터 지원되고 있다.
java.time에 대한 사용법은 [Java] LocalDate,LocalTime,LocalDateTime 총 정리에서 확인 가능하다.
클래스 | 설명 |
---|---|
LocalDate | 로컬 날짜 클래스로 날짜 정보만 필요할 때 사용 |
LocalTime | 로컬 시간 클래스로 시간 정보만 필요할 때 사용 |
LocalDateTime | 날짜와 시간 정보 모두 필요할 때 사용 |
JSP 상단에 아래 문구 추가
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<% pageContext.setAttribute("replaceChar", "\n"); %>
줄바꿈 해야하는 값에 선언한 function 적용
${fn:replace(value, replaceChar, "</br>")}
단, textarea Tag에서는 줄바꿈되어 표시되므로 해당 처리를 하지 않아도 된다.
PreparedStatement.getGeneratedKeys 메소드 또는 Statement.getGeneratedKeys 메소드를 호출하여 자동 생성된 키 값이 포함된 ResultSet 오브젝트를 검색할 수 있다.
즉, 자동 생성키를 통해 신규 등록한 데이터를 조회할 수 있는 것이다.
Collection 객체에 설정 값을 저장해 사용하는 경우가 많은데, 설정 값은 함부로 변경되면 안되기 때문에 변경을 막는 제약 조건을 걸고 싶을 때가 있다.
이처럼 read-only한 객체를 만들고 싶은 경우 아래의 메소드를 사용하면 된다.
해당 메소드는 파라미터로 전달 받은 Collection 객체에 변경이 발생하면 예외를 return한다.
참고자료 이용하여 공부하기