위 코드는 기본적인 게시판 기능을 구현한 예제입니다.
게시판 데이터를 저장하기 위한 테이블 board1
생성.
create table board1(
seq int not null primary key auto_increment,
subject varchar(150) not null,
writer varchar(12) not null,
mail varchar(50),
password varchar(41) not null,
content varchar(2000),
hit int not null,
wip varchar(15) not null,
wdate date not null
);
컬럼 설명:
password()
함수 사용.새로운 데이터베이스 사용자 board
생성 및 권한 부여.
create database board;
create user board@localhost identified by '123456';
grant all privileges on board.* to board@localhost;
목적: 데이터베이스 보안을 위해 별도의 사용자 계정을 생성.
글쓰기 화면을 제공. 사용자로부터 제목, 작성자, 이메일, 비밀번호, 내용을 입력받음.
<form action="board_write1_ok.jsp" method="post" name="wfrm">
...
<input type="text" name="writer" value="" />
<input type="text" name="subject" value="" />
<input type="password" name="password" value="" />
<textarea name="content"></textarea>
...
</form>
입력 값 검증 (JavaScript)
사용자가 작성한 내용이 비어 있으면 경고 메시지를 출력하고, 서버로 데이터 전송을 중단.
document.getElementById('wbtn').onclick = function () {
if (document.wfrm.writer.value.trim() == '') {
alert('글쓴이를 입력하셔야 합니다.');
return false;
}
document.wfrm.submit();
};
개인정보 수집 동의
사용자가 동의하지 않으면 글쓰기 진행을 막음.
if (document.wfrm.info.checked == false) {
alert('동의하셔야 합니다.');
return false;
}
목록 이동 버튼
글쓰기 취소 시 게시글 목록 페이지로 이동.
<input type="button" value="목록" onclick="location.href='board_list1.jsp'" />
사용자가 작성한 데이터를 데이터베이스에 저장.
<%
String subject = request.getParameter("subject");
String writer = request.getParameter("writer");
String mail = request.getParameter("mail1") + "@" + request.getParameter("mail2");
String password = request.getParameter("password");
String content = request.getParameter("content");
String wip = request.getRemoteAddr();
%>
입력 값 처리:
request.getParameter()
를 사용하여 폼 데이터를 받아옴. mail1
, mail2
)를 조합. 데이터베이스 연결:
DataSource
객체를 통해 커넥션을 가져옴. Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource dataSource = (DataSource) envCtx.lookup("jdbc/mariadb1");
conn = dataSource.getConnection();
SQL 실행:
insert
SQL 문으로 저장. password()
함수로 암호화. String sql = "insert into board1 values ( 0, ?, ?, ?, password( ? ), ?, 0, ?, now() )";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, subject);
pstmt.setString(2, writer);
pstmt.setString(3, mail);
pstmt.setString(4, password);
pstmt.setString(5, content);
pstmt.setString(6, wip);
int result = pstmt.executeUpdate();
결과 처리 (JavaScript):
성공 여부에 따라 메시지를 출력하고 다음 페이지로 이동.
out.println("<script type='text/javascript'>");
if (flag == 0) {
out.println("alert( '글쓰기 성공' );");
out.println("location.href='./board_list1.jsp';");
} else {
out.println("alert( '글쓰기 실패' );");
out.println("history.back();");
}
out.println("</script>");
위 코드는 게시판 구현의 기본 틀로, CRUD(생성, 읽기, 수정, 삭제) 기능을 중심으로 설계되었습니다.
추가 학습:
board_list1.jsp
)와 상세보기 페이지(board_view1.jsp
)를 구현하여 흐름을 완성.