[Servlet / JSP] 게시판

서블릿과 JSP에 대해 조금 알고 있습니다.
이제 본격적으로 프로젝트를 진행하려고 합니다.

첫 번째, 메인 페이지를 의미하는 index.jsp를 만들었습니다.
필수는 아니지만 권장하는 형식이니 지켜주시면 좋습니다.

index.jsp

하나
2
4
5
6
7
8일
9
10
11
12
<%@ 페이지 언어=“자바” 컨텐츠 타입=“텍스트/html; 문자세트=UTF-8”
페이지인코딩=“UTF-8”%>
<!
DOCTYPE html>
<HTML>
<머리>
<메타 차트=“UTF-8”>
<제목>여기에 제목 삽입</제목>
</머리>
<>
<jsp:앞으로 페이지=“boardList.do”></jsp:계속>
</>
</HTML>
CS

몸을 감싸는 10번째 줄에 <jsp:계속 도서 페이지=“boardList.do”>jsp:계속> 메인 페이지가 실행되면 위의 코드는 서블릿으로 이동(boardList.do를 명령어로 받았을 때~~ 만약에(명령.심지어(“/boardList.do”)) ) 호출된 부분을 실행하는 것을 의미합니다.

보드 컨트롤러(서블릿)

하나
2
4
5
6
7
8일
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
패키지 제어 장치;
수입 java.io.IOException;
수입 java.util.ArrayList;
수입 java.util.List;
수입 javax.servlet.RequestDispatcher;
수입 javax.servlet.ServletException;
수입 javax.servlet.annotation.WebServlet;
수입 javax.servlet.http.HttpServlet;
수입 javax.servlet.http.HttpServletRequest;
수입 javax.servlet.http.HttpServletResponse;
수입 Ditto.BoardDTO;
@웹서블릿(“*.하다”)
공공의 수업 보드 컨트롤러 퍼지는 Http서블릿 {
사적인 공전 결정적인 직렬 버전 UID = 1L;
사적인 내부 보드 번호= 하나;
사적인 목록<보드DTO> 보드 목록;
공공의 보드컨트롤러() {
훌륭한();
보드 목록 = 새로운 준비 목록<>();
// 게시물 등록을 위한 데이터룸을 생성합니다.
}
보호 비어 있는 doGet(HttpServletRequest 요청, HttpServletResponse 응답) 던진다 서블릿 예외, IO 예외 {
doProcess(요청, 응답);
}
보호 비어 있는 doPost(HttpServletRequest 요청, HttpServletResponse 응답) 던진다 서블릿 예외, IO 예외 {
doProcess(요청, 응답);
}
보호 비어 있는 doProcess(HttpServletRequest 요청, HttpServletResponse 응답) 던진다 서블릿 예외, IO 예외 {
Request.setCharacterEncoding(“UTF-8”);
답변. setContentType(“텍스트/html; 문자세트=UTF-8”);
요청 URI = request.getRequestURI();
컨텍스트 경로 = request.getContextPath();
명령 = URI를 요청합니다.
하위 문자열(ContextPath.길이());
체계.에서.프린트(“명령 = “ + 명령);
도서 페이지 = “”;
만약에(명령.심지어(“/boardList.do”))
{
요청.세트속성(“목록”보드 목록);
도서 페이지 = “boardList.jsp”;
}
만약에(명령.심지어(“/regBoardForm.do”))
{
도서 페이지 = “board_write_form.jsp”;
}
만약에(명령.심지어(“/regBoard.do”))
{
제목 = 요청.getParameter(“제목”);
작가 = 요청.getParameter(“작가”);
생산 일 = 요청.getParameter(“생산 일”);
내용물 = 요청.getParameter(“내용물”);
보드DTO 보드 = 새로운 BoardDTO(보드 번호, 제목, 내용, 저자, 생성 날짜);
보드 번호++;
보드 목록.에 추가(널빤지);
도서 페이지 = “boardList.do”;
// 보드 목록으로 돌아가기
// 데이터를 로드하려면 request.setAtriribute(“list”, boardlist)를 추가해야 합니다.
}
RequestDispatcher 디스패처 = request.getRequestDispatcher(페이지);
Dispatcher.forward(요청, 응답);
}
}
CS

57행의 boardList.do 섹션이 실행됩니다.

문의.setAttribute(“목록”, 보드 목록); 이 코드는 추후 등록 후 화면에 작성될 데이터를 수신하여 출력하는 기능을 위한 코드입니다.

62행 도서 페이지 = “boardList.jsp”; 코드로 인해 boardList.jsp의 90번째 줄에서 페이지가 변경되고 다음 jsp 문이 실행됩니다.

boardList.jsp

하나
2
4
5
6
7
8일
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<%@ 페이지 언어=“자바” 컨텐츠 타입=“텍스트/html; 문자세트=UTF-8”
페이지인코딩=“UTF-8”%>
<%@ taglib 접두사=“씨”=“http://java.sun.com/jsp/jstl/core” %>
<!
DOCTYPE html>
<HTML>
<머리>
<메타 차트=“UTF-8”>
<제목>여기에 제목 삽입</제목>
<스타일 유형=“텍스트/css”>
테이블{
테두리: 1px 솔리드 블랙;
국경붕괴: 붕괴;
텍스트중앙에 배치;
너비: 600px;
}
tr, td{
테두리: 1px 솔리드 블랙;
}
</스타일>
</머리>
<>
<폼 액션=“regBoardForm.do” 방법=“우체국”>
<테이블>
<콜그룹>
<열 너비=“10%”>
<열 너비=“*”>
<열 너비=“15%”>
<열 너비=“15%”>
</콜그룹>
<>
<td>텍스트 번호</td>
<td>제목</td>
<td>작가</td>
<td>날짜</td>
<td>세부 사항</td>
</>
<c:forEach 요소=“${목록}” 바르=“널빤지”>
<>
<td>${보드.보드번호 }</td>
<td>${보드.제목}</td>
<td>${보드.작가}</td>
<td>${board.createDate}</td>
<td>${보드.콘텐츠}</td>
</>
</씨: 모두에게>
</테이블>
<입력 유형=“제출하다”=“쓰다”>
</모양>
</>
</HTML>
CS


위와 같이 게시판이 생성되었습니다.
아직 게시물이 생성되지 않았기 때문에 빈 목록으로 생성됩니다.

39행

<씨: 모두에게 기사=${목록} 바르=“널빤지”>

<>

<td>${보드.보드번호 }td>

<td>${보드.제목}td>

<td>${보드.작가}td>

<td>${board.createDate}td>

<td>${보드.콘텐츠}td>

>

씨: 모두에게>

위 부분은 나중에 설명하겠습니다.

쓰기를 눌러 서블릿으로 돌아갑니다.
“regBoardForm.do” 읽으러 가자

BoardController 서블릿으로 돌아가기 만약에(명령.심지어(“/regBoardForm.do”)) 수행

도서 페이지 = “board_write_form.jsp”; 포스트 작성 양식으로 이동합니다.

board_write_form.jsp

하나
2
4
5
6
7
8일
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<%@ 페이지 언어=“자바” 컨텐츠 타입=“텍스트/html; 문자세트=UTF-8”
페이지인코딩=“UTF-8”%>
<!
DOCTYPE html>
<HTML>
<머리>
<메타 차트=“UTF-8”>
<제목>여기에 제목 삽입</제목>
</머리>
<>
<>
<폼 액션=“regBoard.do” 방법=“우체국”>
<테이블>
<>
<td>제목</td>
<td><입력 유형=“텍스트”=“제목”></td>
</>
<>
<td>작가</td>
<td><입력 유형=“텍스트”=“작가”></td>
</>
<>
<td>생성 일자</td>
<td><입력 유형=“날짜”=“생산 일”></td>
</>
<>
<td>세부 사항</td>
<td>
<텍스트 영역 행=“5”=“50”=“내용물”></텍스트 영역>
</td>
</>
</테이블>
<입력 유형=“제출하다”=“등록”>
</모양>
</>
</HTML>
CS


여기에 각 입력 필드의 이름 값을 입력합니다.
후에 다시 <모양 행동=“regBoard.do” 방법=“우체국”> 서블릿의 71번째 줄에서 만약에(명령.심지어(“/regBoard.do”)) 및 이름 값에서 얻은 데이터

제목 = 문의.getParameter(“제목”); 서블릿에 다시 저장합니다.

저장된 개체를 수집하고 배포해야 하며 이 시점에서 클래스를 만들었습니다.

BoardDTO.java(클래스)

하나
2
4
5
6
7
8일
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
패키지 같게;
공공의 수업 보드DTO {
사적인 내부 보드 번호;
사적인 제목;
사적인 내용물;
사적인 작가;
사적인 생산 일;
공공의 보드DTO(내부 보드 번호, 제목, 내용물, 작가, 생산 일) {
훌륭한();
그만큼.boardNum = 보드 번호;
그만큼.제목 = 제목;
그만큼.내용물 = 내용물;
그만큼.작가 = 작가;
그만큼.생산 일 = 생산 일;
}
공공의 내부 getBoardNum() {
돌려 주다 보드 번호;
}
공공의 비어 있는 setBoardNum(내부 보드 번호) {
그만큼.boardNum = 보드 번호;
}
공공의 getTitle() {
돌려 주다 제목;
}
공공의 비어 있는 setTitle( 제목) {
그만큼.제목 = 제목;
}
공공의 getContent() {
돌려 주다 내용물;
}
공공의 비어 있는 setContent( 내용물) {
그만큼.내용물 = 내용물;
}
공공의 getWriter() {
돌려 주다 작가;
}
공공의 비어 있는 setWriter( 작가) {
그만큼.작가 = 작가;
}
공공의 getCreateDate() {
돌려 주다 생산 일;
}
공공의 비어 있는 setCreateDate( 생산 일) {
그만큼.생산 일 = 생산 일;
}
}
CS

생성자, 게터, 세터를 각각 변수로 기사 번호, 제목, 내용, 작성자, 날짜를 설정하여 생성했습니다.

서블릿의 78번째 줄 보드DTO 널빤지 = 새로운 보드DTO(보드 번호, 제목, 내용물, 작가, 생산 일); 객체를 사용하여 클래스를 만들고 저장했습니다.
이때 BoardDTO는 서블릿의 21, 22행에 boardNum과 List로 선언되었고, 서블릿의 기본 생성자에 boardList가 생성되었다.

그런 다음 regBoard.do로 돌아오세요. 보드 목록.추가(널빤지); 보드 목록의 모든 보드 값을 살펴 보았고 페이지

“boardList.do”; 첫 번째 페이지인 boardList로 돌아갑니다.

이때 문의.setAttribute(“목록”, 보드 목록); regBoard.do에 저장된 데이터를 보존하는 역할을 합니다.

여기 “목록” 위에서 언급한 boardList.jsp의 39번째 줄에 ${목록} .

forEach 문을 사용하면 각 보드 값이 저장되고 클래스에 전달됩니다.

그래서 등록 후 버튼을 클릭하면 boardList.jsp에서 생성한 목록에 목록이 추가되어 표시되는 것을 볼 수 있습니다.