jsp 게시판 등록 오류

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
jsp 게시판 등록 오류

QA

jsp 게시판 등록 오류

본문

게시판 등록이 안되는 오류가 발생하는데 어떤 곳에 문제가 있는지 정말 모르겠습니다. 

왜 안되는건지 오류 찾는게 너무 어렵네요.

 

listboard.jsp


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>게시판 기본 예제 : 게시 목록 표시</title>
</head>
<body>
<h2>게시판 목록 표시 프로그램</h2>
<hr>
<center>
    <%@ page import="java.util.ArrayList, univ.BoardEntity, java.text.SimpleDateFormat"%>
    <jsp:useBean id="brddb" class="univ.BoardDBCP" scope="page"/>
    <%
    // 게시 목록을 위한 리스트를 자바빈즈를 이용하여 확보 
    ArrayList<BoardEntity> list = brddb.getBoardList();
    int counter = list.size(); 
    int row = 0;
    
    if (counter > 0) {
    %>
    <table width=800 border=0 cellpadding=1 cellspacing=3>
    
    <tr>
        <th><font color=blue><b>번호</b></font></th>
        <th><font color=blue><b>제목</b></font></th>
        <th><font color=blue><b>작성자</b></font></th>
        <th><font color=blue><b>작성일</b></font></th>
        <th><font color=blue><b>전자메일</b></font></th>
    </tr>
    <%
        //게시 등록일을 2010.3.15 10:33:21 형태로 출력하기 위한 클래스
        SimpleDateFormat df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
        for( BoardEntity brd: list) {
            // 홀짝으로 다르게 색상 지정 
            String color = "papayawhip"; 
            if ( ++row % 2 == 0 ) color = "white";
    %>
    <tr bgcolor=<%=color%>
        onmouseover="this.style.backgroundColor='SkyBlue'"
        onmouseout="this.style.backgroundColor='<%=color%>'">
        <!--  수정과 삭제를 위한 링크로 id를 전송 -->
        <td align=center><a href="editboard.jsp?id=<%= brd.getId()%>"><%= brd.getId()%></a></td>
        <td align=left><%= brd.getTitle() %></td> 
        <td align=center><%= brd.getName() %></td>
        <!--  게시 작성일을 2010.3.15 10:33:21형태로 출력 -->
        <td align=center><%= df.format(brd.getRegdate())%></td>
        <td align=center><%= brd.getEmail() %></td>
    </tr>
    <%
        }
    %>
    </table>
<%    }
%>
<hr width=90%>
<p>조회된 게시판 목록 수가 <%=counter %>개 입니다.
</center><hr>
<center>
<form name=form method=post action=editboard.jsp>
        <input type=submit value="게시등록">
</form>
</center>
</body>
</html>

 

BoardEntity.java


package univ;
import java.util.Date;
public class BoardEntity {
    private int id;
    private String name;
    private String passwd;
    private String title;
    private String email;
    private Date regdate;
    private String content;
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPasswd() {
        return passwd;
    }
    public void setPasswd(String passwd) {
        this.passwd = passwd;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public Date getRegdate() {
        return regdate;
    }
    public void setRegdate(Date regdate) {
        this.regdate = regdate;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
}

 

BoardDBCP


package univ;
import java.sql.*;
import java.util.ArrayList;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class BoardDBCP {
    // 데이터베이스 연결관련 변수 선언
    private Connection con = null; 
    private PreparedStatement pstmt = null; 
    private DataSource ds = null;
    
    // JDBC 드라이버 로드 메소드
    public BoardDBCP() {
        try {
            InitialContext ctx =  new InitialContext();
            ds = (DataSource) ctx.lookup("java:comp/env/jdbc/mysql");
        }catch(Exception e) {
            e.printStackTrace();
        }
    }
    
    public void connect() {
        try {
            con = ds.getConnection();
        }catch(Exception e) {
            e.printStackTrace();
        }
    }
    
    public void disconnect() {
        if(pstmt != null) {
            try {
                pstmt.close();
            } catch(SQLException e) {
                e.printStackTrace();
            }
        }
        if(con != null) {
            try {
                con.close();
            } catch(SQLException e) {
                e.printStackTrace();
            }
        }
    }
    
    public ArrayList<BoardEntity> getBoardList(){
        connect();
        ArrayList<BoardEntity> list = new ArrayList<BoardEntity>();
        
        String SQL = "select * from board";
        try {
            pstmt = con.prepareStatement(SQL);
            ResultSet rs = pstmt.executeQuery();
        
            while(rs.next()) {
                BoardEntity brd = new BoardEntity();
                brd.setId(rs.getInt("id"));
                brd.setName(rs.getString("name"));
                brd.setPasswd(rs.getString("passwd"));
                brd.setTitle(rs.getString("title"));
                brd.setEmail(rs.getString("email"));
                brd.setRegdate(rs.getTimestamp("regdate"));
                brd.setContent(rs.getString("content"));
                list.add(brd);;
            }
            rs.close();
        } catch(SQLException e) {
            e.printStackTrace();
        }
        finally {
            disconnect();
        }
        return list;
    }
    
    public BoardEntity getBoard(int id) {
        connect();
        String SQL = "select * from board where id = ?";
        BoardEntity brd = new BoardEntity();
        
        try {
            pstmt = con.prepareStatement(SQL);
            pstmt.setInt(1,  id);
            ResultSet rs = pstmt.executeQuery();
            rs.next();
            brd.setId(rs.getInt("id")); //세터 호출
            brd.setName(rs.getString("name"));
            brd.setPasswd(rs.getString("passwd"));
            brd.setTitle(rs.getString("title"));
            brd.setEmail(rs.getString("email"));
            brd.setRegdate(rs.getTimestamp("regdate"));
            brd.setContent(rs.getString("content"));
            rs.close();
        } catch(SQLException e) {
            e.printStackTrace();
        }
        finally {
            disconnect();
        }
        return brd;
    }
    
    public boolean insertDB(BoardEntity board) {
        boolean success = false;
        connect();
        String sql = "insert into board values(o,?,?,?,?,sysdate(),?)";
        try {
            pstmt = con.prepareStatement(sql);
            pstmt.setString(1,  board.getName());
            pstmt.setString(2,  board.getPasswd());
            pstmt.setString(3,  board.getTitle());
            pstmt.setString(4,  board.getEmail());
            pstmt.setString(5,  board.getContent());
            pstmt.executeUpdate();
            success = true;
        } catch(SQLException e) {
            e.printStackTrace();
            return success;
        }
        finally {
            disconnect();
        }
        return success;
    }
    
    public boolean updateDB(BoardEntity board) {
        boolean success = false;
        connect();
        String sql = "update board set name=?, title=?, email=?, content=? where id=?";
        try {
            pstmt = con.prepareStatement(sql);
            pstmt.setString(1, board.getName());
            pstmt.setString(2, board.getTitle());
            pstmt.setString(3, board.getEmail());
            pstmt.setString(4, board.getContent());
            pstmt.setInt(5,  board.getId());
            int rowUdt = pstmt.executeUpdate();
            if(rowUdt == 1) success = true;
        } catch(SQLException e) {
            e.printStackTrace();
            return success;
        }
        finally {
            disconnect();
        }
        return success;
    }
    
    public boolean deleteDB(int id) {
        boolean success = false;
        connect();
        String sql = "delete from board where id=?";
        try {
            pstmt = con.prepareStatement(sql);
            pstmt.setInt(1, id);
            pstmt.executeUpdate();
            success = true;
        } catch(SQLException e) {
            e.printStackTrace();
            return success;
        }
        finally {
            disconnect();
        }
        return success;
    }
    
    public boolean isPasswd(int id, String passwd) {
        boolean success = false;
        connect();
        String sql = "select passwd from board where id=?";
        try {
            pstmt = con.prepareStatement(sql);
            pstmt.setInt(1, id);
            ResultSet rs = pstmt.executeQuery();
            rs.next();
            String orgPasswd = rs.getString(1);
            if(passwd.equals(orgPasswd)) success = true;
            System.out.println(success);
            rs.close();
        } catch(SQLException e) {
            e.printStackTrace();
            return success;
        }
        finally {
            disconnect();
        }
        return success;
    }
}

 

editboard.jsp


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>게시판 기본 예제 : 게시 폼 작성</title>
</head>
<!--  파일 boardform.js : 폼의 각 입력 값이 있는지를 검토하는 함수 구현 -->
<script language=JavaScript src="boardform.js"></script>
<body>
    <%@ page import="univ.*" %>
    <%
        String name = "";
        String email = "";
        String title = "";
        String content = "";
        String headline = "등록";
        
        String id = request.getParameter("id");
        if(id != null){
            // 등록이 아닌 경우, 출력을 위해 선택한 게시의 각 필드 내용을 저장
            int idnum = Integer.parseInt(id);
            BoardDBCP brddb = new BoardDBCP();
            BoardEntity brd = brddb.getBoard(idnum);
            name = brd.getName();
            email = brd.getEmail();
            title = brd.getTitle();
            content = brd.getContent();
            headline = "수정 삭제";
        };
    %>
    
<h2>게시판 <%=headline %> 프로그램 </h2><hr>
<center><form name=boardform method=post action="processboard.jsp">
<!--  menu : 등록, 수정 또는 삭제 구분을 위한 매개변수로 이용 -->
<input type=hidden name="menu" value="insere">
<!-- 수정 또는 삭제를 위한 게시 id를 hidden으로 전송 -->
<input type=hidden name="id" value=<%=id %>>
<table width=100% border=0 cellspacing=0 cellpadding=7> 
<tr><td align=center>
    <table border=0> 
    <tr> <td colspan=2> 
        <table> 
            <tr> 
            <td width=80 >이 름 : </td> 
            <td width=100>
                <input type=text name=name value="<%=name%>"size=30 maxlength=20></td>
            <td width=80>전자메일 : </td> 
            <td width=100>
                <input type=text name=email size=30 value="<%=email%>"maxlength=30></td>
            </tr>
            <tr> <td width=80>제 목 : </td> 
            <td colspan= 3>
                <input type=text name=title size=80 value="<%=title%>"maxlength=100></td> 
            </tr> 
        </table>
    </td> </tr>
    
    <tr><td colspan=2>
        <textarea name=content rows=10 cols=90><%=content%></textarea></td></tr>
    <tr>
    <td colspan=2>비밀번호 : 
        <input type=password name=passwd size=20 maxlength=15><font color=red>
            현재 게시 내용을 수정 또는 삭제하려면 이미 등록한 비밀번호가 필요합니다.</font></td>
    </tr>
    <tr>
        <td colspan=2>
            <% if(id == null) { %>
                <!-- 버튼을 누르면 boardform.js의 함수를 실행하여 processboard.jsp로 이동 -->
                <input type=button value="등록" onClick="insertcheck()">
            <% } else { %>
                <!--  버튼을 누르면 boardform.js의 함수를 실행하여 processboard.jsp로 이동 -->
                <input type="button" value="수정완료" onClick="updatecheck()">
                <input type="button" value="삭제" onClick="deletecheck()">
            <% } %>
            <!-- 목록보기 버튼은 listboard.jsp로 이동 -->
            <input type="button" value="목록보기" onClick="location.href='listboard.jsp'">
            <input type="reset" value="취소">
        </td>
        </tr>
    </table>
</td></tr>
</table>
    
</form>
</center>
</body>
</html>

 

processboard.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<jsp:useBean id="brd" class="univ.BoardEntity" scope="page" /> 
<jsp:useBean id="brddb" class="univ.BoardDBCP" scope="page"/>
<%
    //한글 처리를 위해 문자인코딩 지정
    request.setCharacterEncoding("euc-kr");
    //등록(insert), 수정(update), 삭제(delete) 중 하나를 저장
    String menu = request.getParameter("menu");
    //등록 또는 수정 처리 모듈
    if (menu.equals("delete") || menu.equals("update")) {
        String id = request.getParameter("id");
        String passwd = request.getParameter("passwd"); 
        int idnum = Integer.parseInt(id);
        //데이터베이스 자바빈즈에 구현된 메소드 isPasswd()로 id와 암호가 일치하는지 검사
        if (!brddb.isPasswd(idnum, passwd)) {
%>
            <!-- 암호가 틀리면 이전 화면으로 이동 -->
            <script>alert("비밀번호가 다릅니다."); history.go(-1);</script>
<%
        } else { 
            if (menu.equals("delete")){
            //삭제를 위해 데이터베이스 자바빈즈에 구현된 메소드 deleteDB() 실행
            brddb.deleteDB(idnum);
            } else if(menu.equals("update")) {
%>
                <!-- 수정 시 BoardEntity에 지정해야 하는 필드 id -->
                <jsp:setProperty name="brd" property="id"/>
                <jsp:setProperty name="brd" property= "name"/> 
                <jsp:setProperty name="brd" property="title"/> 
                <jsp:setProperty name="brd" property="email"/> 
                <jsp:setProperty name="brd" property = "content" />
<%
                //수정을 위해 데이터베이스 자바빈즈에 구현된 메소드 updateDB() 실행
                brddb.updateDB(brd);
            }
            //기능 수행 후 다시 게시 목록 보기로 이동
            response.sendRedirect("listboard.jsp");
        }
    } else if (menu.equals("insert")) {
%>
        <!-- 등록 시 BoardEntity에 지정해야 하는 필드 passwd -->
        <jsp:setProperty name="brd" property="name"/> 
        <jsp:setProperty name="brd" property="title"/>
        <jsp:setProperty name="brd" property="email"/> 
        <jsp:setProperty name="brd" property="content" /> 
        <jsp:setProperty name="brd" property="passwd"/>
<%
        //등록을 위해 데이터베이스 자바빈즈에 구현된 메소드 insertDB() 실행
        brddb.insertDB(brd);
        //기능 수행 후 다시 게시 목록 보기로 이동
        response.sendRedirect("listboard.jsp");
    }
%>
</body>
</html>

 

boardform.js


/**
 * 
 */
function deletecheck(){
    if (document.boardform.passwd.value==""){
        alert("암호를 입력해 주세요.");
        document.boardform.passwd.focus();
        return;
    }
    
    ok = confirm("삭제하시겠습니까?");
    if (ok){
        document.boardform.menu.value="delete";
        document.boardform.submit();
    } else{
        return;
    }
}
function insertcheck() { 
    if (document.boardform.name.value="") { 
        alert("이름을 입력해 주세요."); 
        document.boardform.name.focus(); 
        return;
    }
    if (document.boardform.passwd.value=="") { 
        alert("암호를 입력해 주세요."); 
        document.boardform.passwd.focus(); 
        return;
    }
    document.boardform.menu.value='insert'; 
    document.boardform.submit();
}
function updatecheck() {
    if (document.boardform.name.value=""){
        alert("이름을 입력해 주세요.");
        document.boardform.name.focus();
        return;
    }
    if (document.boardform.passwd.value=="") {
        alert("암호를 입력해 주세요."); 
        document.boardform.passwd.focus();
        return;
    }
    document.boardform.thenu.value='update'; 
    document.boardform.submit();
}

 

대체 어떤 부분에서 어떤 이유로 게시글 등록이 안되는건가요?ㅠㅠ

이 질문에 댓글 쓰기 :

답변 1

        String sql = "insert into board values(o,?,?,?,?,sysdate(),?)";
valuues 처음에 있는 o는 무엇인가요?

저 부분은 0으로 수정 완료하였는데 계속해서 오류가 발생합니다.
java.sql.SQLIntegrityConstraintViolationException: Column 'name' cannot be null
이 오류가 게시판 작성한 것을 등록하게 되면 발생하는게 어떤 부분을 수정해야 할지 모르겠습니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 0
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT