본문 바로가기

ETC/JSP

0 - JSP (MVC패턴) 게시판 만들기 시작

Controller -Java

 

boardFrontController

package kr.ac.daegu.jspmvc.controller;

import kr.ac.daegu.jspmvc.biz.*;

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 java.io.IOException;

@WebServlet("*.bbs") // jspmvc/*.bbs 으로 들어오는 모든 요청을 처리하는 서블릿
public class BoardFrontController extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        String requestURI = request.getRequestURI();
        String contextPath = request.getContextPath();
        String cmdURI = requestURI.substring(contextPath.length());
        // log
        System.out.println("requestURI = " + requestURI);
        System.out.println("contextPath = " + contextPath);
        System.out.println("cmdURI = " + cmdURI);

        BoardCmd cmd = null;
        String viewPage = null;

        // 글 목록 조회 처리(/jspmvc/boardList.bbs)
        if(cmdURI.equals("/boardList.bbs")){
            cmd = new BoardListCmd();
            cmd.execute(request, response);
            viewPage = "view/boardList.jsp";
        }
        // 글 추가하기
        if(cmdURI.equals("/boardInsert.bbs")){
            // enduser가 작성한 글을 db에 insert 시키는
            // bizness logic을 작성
            cmd = new BoardInsertCmd();
            cmd.execute(request, response);
            viewPage = "boardList.bbs";
        }
        // 글 읽기
        if(cmdURI.equals("/boardRead.bbs")){
            cmd = new BoardReadCmd();
            cmd.execute(request, response);
            viewPage = "view/boardRead.jsp";
        }
        /*
         * 수정하기 관련
         * */
        // 글의 패스워드 체크
        if(cmdURI.equals("/boardPwdCheckToUpdate.bbs")){
            cmd = new BoardPwdCheckCmd();
            boolean isPasswordCorrect = cmd.execute(request, response);
            if(isPasswordCorrect){
                viewPage = "view/boardReadToUpdate.jsp";
            } else {
                viewPage = "view/boardPwdCheckFalse.jsp";
            }
        }
        // 글 수정 처리
        if(cmdURI.equals("/boardUpdate.bbs")){
            // 글 수정처리 bizlogic
            cmd = new BoardUpdateCmd();
            cmd.execute(request, response);
            // 바로 글 목록 화면으로
            viewPage = "boardList.bbs";
        }

        /*
         * 삭제하기 관련
         * */

        RequestDispatcher dispatcher = request.getRequestDispatcher(viewPage);
        dispatcher.forward(request, response);

    }
}

 

 


Model -Java

 

boardDAO

package kr.ac.daegu.jspmvc.model;

import java.sql.*;
import java.util.ArrayList;
import java.util.Date;

public class BoardDAO {
    private static final String DB_URL  = "jdbc:mariadb://localhost:3306/dgd";
    private static final String DB_USER = "root";
    private static final String DB_PW   = "0000";

    public static boolean getConnection() throws SQLException, ClassNotFoundException {
        // Connection, PreparedStatement, ResultSet은 interface 객체이다.
        Class.forName("org.mariadb.jdbc.Driver");
        Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PW);
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        return true;
    }

    public ArrayList<BoardDTO> getBoardList() throws ClassNotFoundException, SQLException {
        // Connection, PreparedStatement, ResultSet은 interface 객체이다.
        Class.forName("org.mariadb.jdbc.Driver");
        Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PW);
        PreparedStatement pstmt = null;
        ResultSet rs = null;

        // 쿼리 준비 & db 쿼리
        pstmt = conn.prepareStatement("select * from Board");
        rs = pstmt.executeQuery();

        // 글 목록을 반환할 ArrayList
        ArrayList<BoardDTO> boardRowList = new ArrayList<BoardDTO>();

        // db에서 데이터를 row단위로 가져와서
        // list에 넣는다.
        while(rs.next()) {
            int id = rs.getInt("id");
            String author = rs.getString("author");
            String subject = rs.getString("subject");
            String content = rs.getString("content");
            Date writeDate = rs.getDate("writeDate");
            Time writeTime = rs.getTime("writeTime");
            int readCount = rs.getInt("readCount");
            int commentCount = rs.getInt("commentCount");

            BoardDTO dto = new BoardDTO();
            dto.setId(id);
            dto.setAuthor(author);
            dto.setSubject(subject);
            dto.setContent(content);
            dto.setWriteDate(writeDate);
            dto.setWriteTime(writeTime);
            dto.setReadCount(readCount);
            dto.setCommentCount(commentCount);

            boardRowList.add(dto);
        }

        // db로부터 데이터 잘 들어왔는지 확인 (log 찍어봄)
        for(BoardDTO dto: boardRowList){
            System.out.println(dto.toString());
        }

        return boardRowList;
    }

    public int getBoardNewId() throws ClassNotFoundException, SQLException {
        // Connection, PreparedStatement, ResultSet은 interface 객체이다.
        Class.forName("org.mariadb.jdbc.Driver");
        Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PW);
        PreparedStatement pstmt = null;
        ResultSet rs = null;

        // newId를 가져오는 쿼리
        pstmt = conn.prepareStatement("select max(id) + 1 AS newId from Board");
        rs = pstmt.executeQuery();

        int newId = 0;
        if(rs.next()){
            newId = rs.getInt("newId");
            return newId;
        }

        // 예외 발생
        throw new SQLException("글 컨텐츠를 새로 입력하기 위한 아이디값 받아오기를 실패하였습니다.");
    }

    public void insertBoardContent(int newId,
                                   String subject,
                                   String author,
                                   String content,
                                   String password) throws ClassNotFoundException, SQLException {
        // Connection, PreparedStatement, ResultSet은 interface 객체이다.
        Class.forName("org.mariadb.jdbc.Driver");
        Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PW);
        PreparedStatement pstmt = null;

        // 쿼리 준비 & db 쿼리
        // insert into board values (1, 'testAuthor', 'testSubject', 'testContent', CURDATE(), CURTIME(), 0, 0)
        pstmt = conn.prepareStatement("insert into Board values (?, ?, ?, ?, CURDATE(), CURTIME(), 0, 0, ?)");
        pstmt.setInt(1, newId);
        pstmt.setString(2, subject);
        pstmt.setString(3, author);
        pstmt.setString(4, content);
        pstmt.setString(5, password);
        pstmt.executeUpdate();

    }

    public BoardDTO getBoardData(int id) throws ClassNotFoundException, SQLException {
        // db에 접속해서
        Class.forName("org.mariadb.jdbc.Driver");
        Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PW);
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        // 쿼리 실행시키고
        pstmt = conn.prepareStatement("select * from Board where id = ?");
        pstmt.setInt(1, id);
        rs = pstmt.executeQuery();
        // 반환 데이터를 리턴.
        BoardDTO data = new BoardDTO();
        if(rs.next()){
//            int id = rs.getInt("id");
            String author = rs.getString("author");
            String subject = rs.getString("subject");
            String content = rs.getString("content");
            Date writeDate = rs.getDate("writeDate");
            Time writeTime = rs.getTime("writeTime");
            int readCount = rs.getInt("readCount");
            int commentCount = rs.getInt("commentCount");
            String password = rs.getString("password");

            data.setId(id);
            data.setAuthor(author);
            data.setSubject(subject);
            data.setContent(content);
            data.setWriteDate(writeDate);
            data.setWriteTime(writeTime);
            data.setReadCount(readCount);
            data.setCommentCount(commentCount);
            data.setPassword(password);

        }
        return data;
    }

    public void boardRowPlusReadCount(int rowId, int howMuch) throws ClassNotFoundException, SQLException {
        // db에 접속해서
        Class.forName("org.mariadb.jdbc.Driver");
        Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PW);
        PreparedStatement pstmt = null;

        // 해당 아이디의 row에서 readCount를 +1 해주는 쿼리 실행
        pstmt = conn.prepareStatement("update Board set readCount=readCount + ? where id = ?");
        pstmt.setInt(1, howMuch);
        pstmt.setInt(2, rowId);
        pstmt.executeUpdate();
    }

    public void updateBoardContent(int id,
                                   String subject,
                                   String content) throws ClassNotFoundException, SQLException {
        // db에 접속해서
        Class.forName("org.mariadb.jdbc.Driver");
        Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PW);
        PreparedStatement pstmt = null;
        // 해당 아이디의 row에서 subject와 content를 업데이트
        pstmt = conn.prepareStatement("update Board set subject=?, content=? where id = ?");
        pstmt.setString(1, subject);
        pstmt.setString(2, content);
        pstmt.setInt(3, id);
        pstmt.executeUpdate();

    }
}

 

 

boardDTO

package kr.ac.daegu.jspmvc.model;

import java.sql.Time;
import java.time.LocalDateTime;
import java.util.Date;

// db에서 Board테이블의 컬럼과 row를 정의.
public class BoardDTO {
    private int id;                      // 글 id(글번호)
    private String author;               // 작성자 이름
    private String subject;              // 글 제목
    private String content;              // 글 컨텐츠
    private Date writeDate;              // 작성 날짜
    private Time writeTime;              // 작성 시간
    private int readCount;               // 조회수
    private int commentCount;            // 댓글 갯수
    private String password;             // 수정 삭제를 위한 패스워드

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public Date getWriteDate() {
        return writeDate;
    }

    public void setWriteDate(Date writeDate) {
        this.writeDate = writeDate;
    }

    public Time getWriteTime() {
        return writeTime;
    }

    public void setWriteTime(Time writeTime) {
        this.writeTime = writeTime;
    }

    public int getReadCount() {
        return readCount;
    }

    public void setReadCount(int readCount) {
        this.readCount = readCount;
    }

    public int getCommentCount() {
        return commentCount;
    }

    public void setCommentCount(int commentCount) {
        this.commentCount = commentCount;
    }

    @Override
    public String toString() {
        return "BoardDTO{" +
                "id=" + id +
                ", author='" + author + '\'' +
                ", subject='" + subject + '\'' +
                ", content='" + content + '\'' +
                ", writeDate=" + writeDate +
                ", writeTime=" + writeTime +
                ", readCount=" + readCount +
                ", commentCount=" + commentCount +
                '}';
    }
}

biz -java

 

boardCmd

package kr.ac.daegu.jspmvc.biz;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/*
 * *.bbs 로 들어오는 모든 요청의 비즈니스 로직을 담당.
 * */
public interface BoardCmd {
    public boolean execute(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException;
}

 

boardInsertCmd

package kr.ac.daegu.jspmvc.biz;

import kr.ac.daegu.jspmvc.model.BoardDAO;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;

public class BoardInsertCmd implements BoardCmd {
    @Override
    public boolean execute(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // enduser로부터 입력받은 데이터
        int newId;
        String subject = request.getParameter("subject");
        String author = request.getParameter("author");
        String content = request.getParameter("content");
        String password = request.getParameter("password");
        // enduser로부터 입력받은 데이터 잘 들어왔는지 확인 log
        System.out.println("subject=" + subject);
        System.out.println("author=" + author);
        System.out.println("content=" + content);
        System.out.println("password=" + password);

        // db에 접근해서 데이터 가져오는 인스턴스
        BoardDAO dao = new BoardDAO();

        try {
            // board 테이블에 들어갈 id값을 가져오기 : board.id중에서 가장 높은 id값 + 1
            newId = dao.getBoardNewId();
            // dao 기능 호출해서 enduser가 입력한 데이터를 insert
            dao.insertBoardContent(newId, subject, author, content, password);
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
        return true;
    }
}

 

boardListCmd

package kr.ac.daegu.jspmvc.biz;

import kr.ac.daegu.jspmvc.model.BoardDAO;
import kr.ac.daegu.jspmvc.model.BoardDTO;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;

/*
 * 글 목록 조회 요청이 들어왔을 때 DB에서 데이터를 가져옴
 * view로 보낼 데이터 셋의 정의.
 * */
public class BoardListCmd implements BoardCmd {
    @Override
    public boolean execute(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // db에 접근해서 데이터 가져오는 인스턴스
        BoardDAO dao = new BoardDAO();
        // dao 기능 호출해서 가져온 db 데이터를 저장하는 컬렉션
        ArrayList<BoardDTO> list = new ArrayList<BoardDTO>();

        try {
            list = dao.getBoardList(); // 여기까지는 성공

            /*
             * 가져온 db 데이터 리스트를 어떻게 jsp로 보여줄것인가?
             * */
            request.setAttribute("boardRowList", list);

        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }

        return true;
    }
}

 

boardPwdCheckCmd

package kr.ac.daegu.jspmvc.biz;

import kr.ac.daegu.jspmvc.model.BoardDAO;
import kr.ac.daegu.jspmvc.model.BoardDTO;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;

public class BoardPwdCheckCmd implements BoardCmd {
    @Override
    public boolean execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        int id = Integer.parseInt(request.getParameter("boardDataId"));
        String userInputPassword = request.getParameter("password");
        BoardDAO dao = new BoardDAO();

        try {
            // id값 기준 db board 테이블 조회하여 1개의 board 데이터row 가져옴.
            BoardDTO selectedData = dao.getBoardData(id);

            System.out.println("입력id, password=" + id + ", " + userInputPassword);
            System.out.println("dbid, password=" + selectedData.getId() + ", " + selectedData.getPassword());

            // client로부터 입력받은 패스워드와 board 데이터 row의 패스워드 비교
            if(userInputPassword.equals(selectedData.getPassword())){
                // 기존 글 내용 가져와서 보여주기
                request.setAttribute("boardData", selectedData);
                return true;
            } else {
                return false;
            }
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
        return false;
    }
}

 

BoardReadCmd

package kr.ac.daegu.jspmvc.biz;

import kr.ac.daegu.jspmvc.model.BoardDAO;
import kr.ac.daegu.jspmvc.model.BoardDTO;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;

public class BoardReadCmd implements BoardCmd {
    @Override
    public boolean execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // parsing
        // 데이터의 형변환(참조형 -> 기본형)
        // java wrapper class
        int id = Integer.parseInt(request.getParameter("id"));
        // db에 접근해서 데이터 가져오는 인스턴스
        BoardDAO dao = new BoardDAO();

        // dao의 기능중 id값으로 한건의 데이터를 담는 객체 준비.
        BoardDTO boardData = new BoardDTO();
        try {
            // 조회수 +1
            // boardRowPlusReadCount() : readCount 업데이트 해라, id : 어느 row의 id값인지?, 1 : 얼마나 업데이트 할건지?
            dao.boardRowPlusReadCount(id, 1);
            boardData = dao.getBoardData(id);
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }

        //  boardRead.jsp에 보여줄 데이터를 셋
        request.setAttribute("boardData", boardData);

        return true;
    }
}

 

BoardUpdateCmd

package kr.ac.daegu.jspmvc.biz;

import kr.ac.daegu.jspmvc.model.BoardDAO;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;

public class BoardUpdateCmd implements BoardCmd {
    @Override
    public boolean execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 요청 파라미터들
        int id = Integer.parseInt(request.getParameter("id"));
        String subject = request.getParameter("subject");
        String content = request.getParameter("content");

        // db 접속하여 업데이트 쿼리 날림.
        BoardDAO dao = new BoardDAO();
        try {
            dao.updateBoardContent(id, subject, content);
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }

        return true; // 의미없음
    }
}

 

 

 


 

wapapp

 

 

boardInsert

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>글추가하기</title>
</head>
<body>
<form action="../boardInsert.bbs" method="post">
<table>

    <tr>
        <td colspan="2">글 추가하기</td>
    </tr>
    <tr>
        <td><label for="subject">제목</label></td>
        <td><input type="text" name="subject" id="subject"/></td>
    </tr>
    <tr>
        <td><label for="author">작성자</label></td>
        <td><input type="text" name="author" id="author"/></td>
    </tr>
    <tr>
        <td><label for="content">내용</label></td>
        <td><input type="text" name="content" id="content"/></td>
    </tr>
    <tr>
        <td><label for="password">수정삭제비밀번호</label></td>
        <td><input type="password" name="password" id="password"/></td>
    </tr>
    <tr>
        <!--취소 버튼을 누르면 boardList.bbs 로 가도록 처리해 보시오-->
        <td colspan="2"><input type="submit" value="[글쓰기]"/>
            <a href="../boardList.bbs">[취소]</a></td>
    </tr>
</table>
</form>
</body>
</html>

 

boardList

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!-- jstl -->
<html>
<head>
    <title>전체 글 목록 보기</title>
</head>
<body>
<!-- BoardListCmd.java에서 가져온 데이터를 어떻게 jsp파일에서 html 형태로 보여줄 것인가? -->
<table>
    <tr>
        <td>글번호</td>
        <td>작성자</td>
        <td>제목</td>
        <td>작성일</td>
        <td>작성시각</td>
        <td>조회수</td>
        <td>댓글갯수</td>
    </tr>
    <!-- jstl if 태그를 써서 글번호가 짝수인 글의 목록만 보여주시오. -->
    <c:forEach items="${boardRowList}" var="row">
        <tr>
            <td>${row.id}</td>
            <td>${row.author}</td>
            <td><a href="boardRead.bbs?id=${row.id}">${row.subject}</a></td><!-- 제목을 누르면 글 읽기에 해당하는 controller 요청-->
            <td>${row.writeDate}</td>
            <td>${row.writeTime}</td>
            <td>${row.readCount}</td>
            <td>${row.commentCount}</td>
        </tr>
    </c:forEach>
    <tr>
        <!-- boardInsert.jsp로 이동 되도록 처리 해 보시오. -->
        <td colspan="7"><a href="/jspmvc/view/boardInsert.jsp">[글 추가하기]</a></td>
    </tr>
</table>

</body>
</html>

 

boardPassword

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>수정할 비밀번호 입력</title>
</head>
<body>
<form action="../boardPwdCheck.bbs" method="post">
    <input type="hidden" name="boardDataId" value="<%= request.getParameter("id")%>">
    <table>
        <tr>
            <td><label for="password">비밀번호</label></td>
            <td><input type="password" name="password" id="password"/></td>
        </tr>
        <tr>
            <td colspan="2">
                <input type="submit" value="[확인]">[취소]
            </td>
        </tr>
    </table>
</form>
</body>
</html>

 

boardPasswordToDelete

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
글 삭제를 위한 비밀번호 호출 화면입니다.
삭제처리 하는 controller url 호출 boardPwdCheckToDelete.bbs
비번 맞으면 delete처리 하고 boardList.bbs foward
틀리면 틀렸습니다 jsp출력
</body>
</html>

 

boardPasswordToUpdate

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>수정할 비밀번호 입력</title>
</head>
<body>
<form action="../boardPwdCheckToUpdate.bbs" method="post">
    <input type="hidden" name="boardDataId" value="<%= request.getParameter("id")%>">
    <table>
        <tr>
            <td><label for="password">비밀번호</label></td>
            <td><input type="password" name="password" id="password"/></td>
        </tr>
        <tr>
            <td colspan="2">
                <input type="submit" value="[확인]">[취소]
            </td>
        </tr>
    </table>
</form>
</body>
</html>

 

boardPwdCheckFalse

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

글컨텐츠 수정/삭제를 위한 패스워드가 틀려서 제공하는 안내 화면 입니다.
<a href="boardList.bbs">[목록 보기]</a>

</body>
</html>

 

boardRead

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<html>
<head>
    <title>글 읽기</title>
</head>
<body>
<!-- 글번호, 제목, 작성자, 내용, 작성일, 작성시각, 조회수(+1), 댓글수 -->
<table>
    <tr>
        <td>글번호</td>
        <td>${boardData.id}</td>
    </tr>
    <tr>
        <td>제목</td>
        <td>${boardData.subject}</td>
    </tr>
    <tr>
        <td>작성자</td>
        <td>${boardData.author}</td>
    </tr>
    <tr>
        <td>내용</td>
        <td>${boardData.content}</td>
    </tr>
    <tr>
        <td>작성일</td>
        <td>${boardData.writeDate}</td>
    </tr>
    <tr>
        <td>작성시각</td>
        <td>${boardData.writeTime}</td>
    </tr>
    <tr>
        <td>조회수</td>
        <td>${boardData.readCount}</td>
    </tr>
    <tr>
        <td>댓글수</td>
        <td>${boardData.commentCount}</td>
    </tr>
    <tr>
        <td colspan="2">
            <a href="boardList.bbs">[글 목록 보기]</a>
            <a href="./view/boardPasswordToUpdate.jsp?id=${boardData.id}">[수정하기]</a>
            [삭제하기] <!-- ORDER : 패스워드 확인 하고 boardPasswordToDelete.jsp -->
        </td>
    </tr>
</table>
<!-- [글 목록 보기][수정하기][삭제하기] 글 목록보기 클릭하면 boardList.bbs로 foward -->
글 읽기 화면입니다.

</body>
</html>

 

boardReadToUpdate

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<html>
<head>
    <title>Title</title>
</head>
<body>

글컨텐츠 수정/삭제를 위한 패스워드가 일치하여 제공하는 글 수정 화면 입니다.
<form action="boardUpdate.bbs" method="post">
    <input type="hidden" name="id" value="${boardData.id}">
<table>
    <tr>
        <td>글번호</td>
        <td>${boardData.id}</td>
    </tr>
    <tr>
        <td><label for="subject">제목</label></td>
        <td><input type="text" name="subject" id="subject" value="${boardData.subject}"></td>
    </tr>
    <tr>
        <td>작성자</td>
        <td>${boardData.author}</td>
    </tr>
    <tr>
        <td><label for="content">내용</label></td>
        <td><input type="text" name="content" id="content" value="${boardData.content}"></td>
    </tr>
    <tr>
        <td>작성일</td>
        <td>${boardData.writeDate}</td>
    </tr>
    <tr>
        <td>작성시각</td>
        <td>${boardData.writeTime}</td>
    </tr>
    <tr>
        <td>조회수</td>
        <td>${boardData.readCount}</td>
    </tr>
    <tr>
        <td>댓글수</td>
        <td>${boardData.commentCount}</td>
    </tr>
    <tr>
        <td colspan="2">
            <input type="submit" value="[수정하기]">
            <a href="boardList.bbs">[취소하기]</a>
        </td>
    </tr>
</table>
</form>
</body>
</html>

'ETC > JSP' 카테고리의 다른 글

2- JSP 게시판 (게시글의 댓글갯수)  (0) 2021.08.31
1- Jsp 게시판 (댓글기능)  (0) 2021.08.30
JSP- FileUpload1  (0) 2021.08.24
JSP- forward 와 Redirect Test  (0) 2021.08.22
Jsp- sessionLogin  (0) 2021.08.18