JSP_basic. フォーラムの文章ビューを実現しましょう.
フォーラムの文章ビューを実現するために、まず考えなければならないのは
実現したい機能から始めましょう.
掲示板リストのタイトルをクリックして、「投稿」ページに移動します.
文章の内容が確認されていることを確認します.
最初の投稿を読み込むにはjspフォームファイルが必要です.
その後、servletがDBデータをjspに送信する必要があります.
servletはSQLからDBデータをインポートするDAOが必要です.
データベース・データ検索では、SQL Tableのプライマリ・キーboard numを使用して検索されます.この操作を実行するにはgetBoardDetailメソッドを作成する必要があります.
これにより、重複する投稿の検索や存在しないデータの検索を回避できます.
では.
このフォーム、servlet、DAOを作成することにしました.
DAOから始めよう
DAOの作成
本当に必要なのはgetBoardDetailメソッドです
board numを使用してrowを検索し、そのrowの資料を取得する方法が必要です.
bord numを必要とするgetBoardDetail()をさらに作成します.
SELECT*FROM boardTbl WHERE board_num =?クエリ文
SQL DBに送信
if文とResultSetリソース名は、BoardVOボードに結果値をロードしました.
最後にboardに戻る方法です
こうしてDAOは完成した
次に、Boardを実行するservletを作成します.
@WebServlet("/boardDetail")
/bordDetailをアドレスとするサーブレットを作成します.
bord numはget方式で受信する.
getParameterはStringデータ型を要求します.
String bordNumとしてbord numを受け入れる
BoardDAO dao = BoardDAO.getInstance()を使用したDAOの作成
BoardVO board = dao.getBoardDetailの使用
整数に変換されたBondNumを持つdaogetBoardDetail
BoardVO取締役会に加入
次に、ステップをバインドおよび転送します.
結果ページ/board/boardDetail.jspの使用
完了したボードを送信
結果ページ/board/boardDetail.jspの作成
ELをアドレスに持ち込む.
ELでスクリプトレスページを設定.
これで、タイトルをクリックして投稿を読むことができます.
大変ですね.もっと上手になるためにはもっと努力しなければなりません.
まずはここまで
実現したい機能から始めましょう.
掲示板リストのタイトルをクリックして、「投稿」ページに移動します.
文章の内容が確認されていることを確認します.
最初の投稿を読み込むにはjspフォームファイルが必要です.
その後、servletがDBデータをjspに送信する必要があります.
servletはSQLからDBデータをインポートするDAOが必要です.
データベース・データ検索では、SQL Tableのプライマリ・キーboard numを使用して検索されます.この操作を実行するにはgetBoardDetailメソッドを作成する必要があります.
これにより、重複する投稿の検索や存在しないデータの検索を回避できます.
では.
このフォーム、servlet、DAOを作成することにしました.
DAOから始めよう
DAOの作成
package kr.co.ict.domain;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class BoardDAO {
private DataSource ds;
public static BoardDAO dao = new BoardDAO();
private BoardDAO() {
try {
Context ct = new InitialContext();
ds = (DataSource)ct.lookup("java:comp/env/jdbc/mysql");
} catch (Exception e) {
e.printStackTrace();
}
}
public static BoardDAO getInstance() {
if(dao == null) {
dao = new BoardDAO();
}
return dao;
}
まず,単一色調で接続プールを作成した.本当に必要なのはgetBoardDetailメソッドです
board numを使用してrowを検索し、そのrowの資料を取得する方法が必要です.
bord numを必要とするgetBoardDetail()をさらに作成します.
// boardTbl에서 row를 1개 가져오기(글 번호 존재 시), 안 가져옴(없는 글 번호 입력 시)
public BoardVO getBoardDetail(int boardNum) {
Connection con = null;
ResultSet rs = null;
PreparedStatement pstmt = null;
BoardVO board = new BoardVO();
try {
con = ds.getConnection();
String sql = "SELECT * FROM boardTbl WHERE board_num = ?";
pstmt = con.prepareStatement(sql);
pstmt.setInt(1, boardNum);
rs = pstmt.executeQuery();
if(rs.next()) {
board.setBoardNum(rs.getInt(1));
board.setTitle(rs.getString(2));
board.setContent(rs.getString(3));
board.setWriter(rs.getString(4));
board.setbDate(rs.getDate(5));
board.setmDate(rs.getDate(6));
board.setHit(rs.getInt(7));
System.out.println("데이터 확인용 : " + board);
} else {
System.out.println("해당 계정이 없습니다.");
}
} catch(Exception e){
e.printStackTrace();
} finally {
try {
con.close();
rs.close();
pstmt.close();
} catch(Exception e) {
e.printStackTrace();
}
}
return board;
} // getBoardDetail END.
int bordNumを要求するgetBoardDetailが完了しました.SELECT*FROM boardTbl WHERE board_num =?クエリ文
SQL DBに送信
if文とResultSetリソース名は、BoardVOボードに結果値をロードしました.
最後にboardに戻る方法です
こうしてDAOは完成した
次に、Boardを実行するservletを作成します.
@WebServlet("/boardDetail")
/bordDetailをアドレスとするサーブレットを作成します.
bord numはget方式で受信する.
package kr.co.ict;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import kr.co.ict.domain.BoardDAO;
import kr.co.ict.domain.BoardVO;
/**
* Servlet implementation class getBoardDetail
*/
@WebServlet("/boardDetail")
public class getBoardDetail extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public getBoardDetail() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String boardNum = request.getParameter("board_num");
BoardDAO dao = BoardDAO.getInstance();
BoardVO board = dao.getBoardDetail(Integer.parseInt(boardNum));
request.setAttribute("board", board);
RequestDispatcher dp = request.getRequestDispatcher("/board/boardDetail.jsp");
dp.forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
サーブレットにProtected void doGet()を作成しました.getParameterはStringデータ型を要求します.
String bordNumとしてbord numを受け入れる
BoardDAO dao = BoardDAO.getInstance()を使用したDAOの作成
BoardVO board = dao.getBoardDetailの使用
整数に変換されたBondNumを持つdaogetBoardDetail
BoardVO取締役会に加入
次に、ステップをバインドおよび転送します.
結果ページ/board/boardDetail.jspの使用
完了したボードを送信
結果ページ/board/boardDetail.jspの作成
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div class="container">
<div class="col-sm-12">
<table class = "table table-primary table-striped">
<thead>
<tr>
<th>글번호</th>
<th>제목</th>
<th>글쓴이</th>
<th>작성시간</th>
<th>수정시간</th>
<th>조회수</th>
</tr>
</thead>
<tbody>
<tr>
<td>${board.boardNum}</td>
<td>${board.title}</td>
<td>${board.writer}</td>
<td>${board.bDate}</td>
<td>${board.mDate}</td>
<td>${board.hit}</td>
</tr>
</tbody>
</table>
</div>
<br/>
<div class="mb-12">
<label for="textarea1" class="form-label"> 본 문 </label>
<textarea class="form-control" name="content" id="textarea1" cols="40" rows="20" disabled readonly>${board.content}</textarea>
<br/>
</div>
<br/>
<a href="http://localhost:8181/MyFirstWeb/boardList" class="btn btn-success btn-mb-3">목록으로</a>
<a href="#" class="btn btn-danger btn-mb-3">뒤로가기</a>
</div><!-- container end -->
</body>
</html>
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core "prefix="c"%>ELをアドレスに持ち込む.
ELでスクリプトレスページを設定.
これで、タイトルをクリックして投稿を読むことができます.
大変ですね.もっと上手になるためにはもっと努力しなければなりません.
まずはここまで
Reference
この問題について(JSP_basic. フォーラムの文章ビューを実現しましょう.), 我々は、より多くの情報をここで見つけました https://velog.io/@nugoory20/JSPbasic.-게시판-글-보기를-구현해보자テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol