반응형
이전 글
-> 2019/12/07 - [나만의 미니프로젝트/JSP게시판 웹사이트] - JSP 게시판 만들기 NO.5 메인 화면/ 게시판 DB생성
1. 글 쓰기 화면 디자인
write.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.io.PrintWriter"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>jsp 게시판 웹 사이트</title>
<meta name="viewport" content="width=device-width" , initial-scale="1">
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script src="js/bootstrap.js"></script>
<link rel="stylesheet" href="css/bootstrap.css">
</head>
<body>
<%
String userID = null;
if (session.getAttribute("userID") != null) {
userID = (String) session.getAttribute("userID");
}
%>
<nav class="navbar navbar-default">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed"
data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"
aria-expanded="false">
<span class="icon-bar"></span> <span class="icon-bar"></span> <span
class="icon-bar"></span>
</button>
<a class="navbar-brand" href="main.jsp">JSP 게시판 웹사이트</a>
</div>
<div class="collapse navbar-collapse"
id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li><a href="main.jsp">메인</a></li>
<li class="active"><a href="bbs.jsp">게시판</a></li>
</ul>
<%
if (userID == null) {
%>
<ul class="nav navbar-nav navbar-right">
<li class="dropdown"><a href="#" class="dropdown-toggle"
data-toggle="dropdown" role="button" aria-haspopup="ture"
aria-expanded="false">접속하기<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="login.jsp">로그인</a></li>
<li><a href="join.jsp">회원가입</a></li>
</ul></li>
</ul>
<%
} else {
%>
<ul class="nav navbar-nav navbar-right">
<li class="dropdown"><a href="#" class="dropdown-toggle"
data-toggle="dropdown" role="button" aria-haspopup="ture"
aria-expanded="false">나의정보<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="logoutAction.jsp">로그아웃</a></li>
</ul></li>
</ul>
<%
}
%>
</div>
</nav>
<div class="container">
<div class="row">
<form method="post" action="writeAction.jsp">
<table class="table table-striped"
style="text-align: center; border: 1px solid #dddddd">
<thead>
<tr>
<th colspan="2"
style="background-color: #eee; text-align: center;">게시판 글쓰기
양식</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="text" class="form-control"
placeholder="글 제목" name="bbsTitle" maxlength="50"></td>
</tr>
<tr>
<td><textarea type="text" class="form-control"
placeholder="글 내용" name="bbsContent" maxlength="2048"
style="height: 350px;">
</textarea></td>
</tr>
</tbody>
</table>
<input type="submit" class="btn btn-primary pull-right" value="글쓰기">
</form>
</div>
</div>
</body>
</html>
2. 게시판 DB 연결
DAO 데이터 접근 객체의 약자로서 실제로 데이터베이스에 접근하여 입출력
BbsDAO.java
package bbs;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
public class BbsDAO {// 데이터 베이스 접근 객체의 약자
private Connection conn;// connection db에 접근하게 해주는 객체
private ResultSet rs;
public BbsDAO() {
try {
String driverName = "oracle.jdbc.driver.OracleDriver";
String dbURL = "jdbc:oracle:thin:@localhost:1521:xe";
String dbID = "iu";
String dbPassword = "iu9252";
Class.forName(driverName);
conn = DriverManager.getConnection(dbURL, dbID, dbPassword);
} catch (Exception e) {
e.printStackTrace();
}
}
//현재의 시간을 가져오는 함수
public String getDate() {
//String SQL = "Select GETDATE()";
//
String SQL = "SELECT SYSDATE FROM BBS";
// Select GETDATE();
try {
PreparedStatement pstmt = conn.prepareStatement(SQL);
rs = pstmt.executeQuery();
if (rs.next()) {
return rs.getString(1);
}
} catch (Exception e) {
e.printStackTrace();
}
return "";// 데이터베이스 오류
}
//bbsID 게시글 번호 가져오는 함수
public int getNext() {
//String SQL = "SELECT bbsID FROM dbo.[BBS] ORDER BY bbsID DESC";
String SQL = "SELECT bbsID FROM BBS ORDER BY bbsID DESC";
try {
PreparedStatement pstmt = conn.prepareStatement(SQL);
rs = pstmt.executeQuery();
if (rs.next()) {
return rs.getInt(1) + 1;
}
return 1; // 첫번째 게시물인경우
} catch (Exception e) {
e.printStackTrace();
}
return -1;// 데이터베이스 오류
}
//글 작성하는 함수
public int write(String bbsTitle, String userID, String bbsContent) {
String SQL = "INSERT INTO BBS VALUES(?,?,?,?,?,?)";
//String SQL = "insert into dbo.[BBS](bbsID, bbsTitle, userID, bbsDate, bbsContent, bbsAvailable) values(?,?,?,?,?,?)";
try {
PreparedStatement pstmt = conn.prepareStatement(SQL);
pstmt.setInt(1, getNext());
pstmt.setString(2, bbsTitle);
pstmt.setString(3, userID);
pstmt.setString(4, getDate());
pstmt.setString(5, bbsContent);
pstmt.setInt(6, 1);
/*rs = pstmt.executeQuery();
System.out.println(SQL);*/
return pstmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
return -1; // 데이터베이스 오류
}
*오류가 났던 부분
필자는 참고했던곳에서 역시나 MySQL이아닌 Oracle을 쓰고있었기때문에 ..
오류가 났었지만 찾느라 정말 고생많이했다 ..
시간을 가져오는 SQL문에서 시간을 정말 많이썼다 ..
Oracle: String SQL = "SELECT SYSDATE FROM BSS;"
MySQL: String SQL = "SELECT GETDATE();"
DB SQL문에대해 공부를 좀더 해야할듯하다
3. 글을 작성해 주는 액션 페이지
writeAction.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="bbs.BbsDAO"%>
<!-- bbsdao의 클래스 가져옴 -->
<%@ page import="java.io.PrintWriter"%>
<!-- 자바 클래스 사용 -->
<%
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8"); //set으로쓰는습관들이세오.
%>
<!-- 한명의 회원정보를 담는 user클래스를 자바 빈즈로 사용 / scope:페이지 현재의 페이지에서만 사용-->
<jsp:useBean id="bbs" class="bbs.Bbs" scope="page" />
<!-- // Bbs bbs = new Bbs(); -->
<jsp:setProperty name="bbs" property="bbsTitle" /><!-- bbs.setBbsTitle(request) -->
<jsp:setProperty name="bbs" property="bbsContent" />
<%
System.out.println(bbs);
%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>jsp 게시판 웹사이트</title>
</head>
<body>
<%
String userID = null;
if(session.getAttribute("userID") != null){//유저 아이디 이름으로 세션이 존재하는 회원들은
userID = (String)session.getAttribute("userID");//유저아이디에 해당 세션값을 넣어준다.
}
if(userID == null){
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('로그인을 하세요.')");
script.println("location.href = 'login.jsp'");
script.println("</script>");
}else{
if(bbs.getBbsTitle() == null || bbs.getBbsContent() == null){
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('입력이 안된 사항이 있습니다.')");
script.println("history.back()");
script.println("</script>");
}else{
BbsDAO BbsDAO = new BbsDAO();
int result = BbsDAO.write(bbs.getBbsTitle(), userID, bbs.getBbsContent());
if(result == -1){
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('글쓰기에 실패했습니다')");
script.println("history.back()");
script.println("</script>");
}else{
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("location.href='bbs.jsp'");
script.println("</script>");
}
}
}
%>
</body>
</html>
반응형
'나만의 미니프로젝트 > JSP게시판 웹사이트' 카테고리의 다른 글
[끝]JSP 게시판 만들기 NO.8 글수정,삭제기능 추가 (0) | 2019.12.09 |
---|---|
JSP 게시판 만들기 NO.7 글 목록 , ViewPag (0) | 2019.12.09 |
JSP 게시판 만들기 NO.5 메인 화면/ 게시판 DB생성 (0) | 2019.12.07 |
JSP 게시판 만들기 NO.4 회원 가입/ 세션 처리 (0) | 2019.12.07 |
JSP 게시판 만들기 NO.3 로그인 처리(oracle) (0) | 2019.12.07 |