반응형
개인공부양으로 단순하게 올렸습니다.
상당한 양이니 참고하고 읽으시면 좋겠습니다.
그리고 이 글의 출처와 저작권은 동빈나 님의 소유이며, 문제가 될 시 바로 삭제 조치하겠습니다.
package bbs;
public class Bbs {
private int bbsID;
private String bbsTitle;
private String userID;
private String bbsDate;
private String bbsContent;
private int bbsAvailable;
public int getBbsID() {
return bbsID;
}
public void setBbsID(int bbsID) {
this.bbsID = bbsID;
}
public String getBbsTitle() {
return bbsTitle;
}
public void setBbsTitle(String bbsTitle) {
this.bbsTitle = bbsTitle;
}
public String getUserID() {
return userID;
}
public void setUserID(String userID) {
this.userID = userID;
}
public String getBbsDate() {
return bbsDate;
}
public void setBbsDate(String bbsDate) {
this.bbsDate = bbsDate;
}
public String getBbsContent() {
return bbsContent;
}
public void setBbsContent(String bbsContent) {
this.bbsContent = bbsContent;
}
public int getBbsAvailable() {
return bbsAvailable;
}
public void setBbsAvailable(int bbsAvailable) {
this.bbsAvailable = bbsAvailable;
}
}
package bbs;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
public class BbsDAO {
private Connection conn;
private ResultSet rs;
public BbsDAO() {
try {
String dbURL = "jdbc:mysql://localhost:3306/BBS";
String dbID = "root";
String dbPassword = "1234";
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(dbURL, dbID, dbPassword);
} catch (Exception e) {
e.printStackTrace();
}
}
public String getDate() {
String SQL = "SELECT NOW()";
try {
PreparedStatement pstmt = conn.prepareStatement(SQL);
rs = pstmt.executeQuery();
if (rs.next()) {
return rs.getString(1);
}
} catch (Exception e) {
e.printStackTrace();
}
return "";// 데이터베이스 오류
}
public int getNext() {
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(?,?,?,?,?,?) ";
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);
return pstmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
return -1;// 데이터베이스 오류
}
public ArrayList<Bbs> getList(int pageNumber) {
String SQL = "SELECT * FROM BBS WHERE bbsID < ? AND bbsAvailable = 1 ORDER BY bbsID DESC LIMIT 10";
ArrayList<Bbs> list = new ArrayList<Bbs>();
try {
PreparedStatement pstmt = conn.prepareStatement(SQL);
pstmt.setInt(1, getNext() - (pageNumber - 1) * 10);
rs = pstmt.executeQuery();
while (rs.next()) {
Bbs bbs = new Bbs();
bbs.setBbsID(rs.getInt(1));
bbs.setBbsTitle(rs.getString(2));
bbs.setUserID(rs.getString(3));
bbs.setBbsDate(rs.getString(4));
bbs.setBbsContent(rs.getString(5));
bbs.setBbsAvailable(rs.getInt(6));
list.add(bbs);
}
} catch (Exception e) {
e.printStackTrace();
}
return list;// 데이터베이스 오류
}
public boolean nextPage(int pageNumber) {
String SQL = "SELECT * FROM BBS WHERE bbsID < ? AND bbsAvailable = 1";
try {
PreparedStatement pstmt = conn.prepareStatement(SQL);
pstmt.setInt(1, getNext() - (pageNumber - 1) * 10);
rs = pstmt.executeQuery();
if (rs.next()) {
return true;
}
} catch (Exception e) {
e.printStackTrace();
}
return false;// 데이터베이스 오류
}
public Bbs getBbs(int bbsID) {
String SQL = "SELECT * FROM BBS WHERE bbsID=?";
try {
PreparedStatement pstmt = conn.prepareStatement(SQL);
pstmt.setInt(1, bbsID);
rs = pstmt.executeQuery();
if (rs.next()) {
Bbs bbs = new Bbs();
bbs.setBbsID(rs.getInt(1));
bbs.setBbsTitle(rs.getString(2));
bbs.setUserID(rs.getString(3));
bbs.setBbsDate(rs.getString(4));
bbs.setBbsContent(rs.getString(5));
bbs.setBbsAvailable(rs.getInt(6));
return bbs;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;// 데이터베이스 오류
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.io.PrintWriter"%>
<%@ page import="bbs.BbsDAO"%>
<%@ page import="bbs.Bbs"%>
<%@ page import="java.util.ArrayList"%>
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<meta name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<meta name="description" content="" />
<meta name="author" content="" />
<title>JSP 게시판</title>
<link rel="icon" type="image/x-icon" href="img/favicon.ico" />
<script src="https://use.fontawesome.com/releases/v6.3.0/js/all.js"
crossorigin="anonymous"></script>
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700"
rel="stylesheet" type="text/css" />
<link
href="https://fonts.googleapis.com/css?family=Roboto+Slab:400,100,300,700"
rel="stylesheet" type="text/css" />
<link href="css/styles.css" rel="stylesheet" />
<style>
.navbar-nav li {
margin-right: 15px;
}
body {
background-color: #dfd3c3;
}
.btn-primary {
background-color: #b3907a;
border-color: #b3907a;
}
.small-button {
width: 55px; /* 버튼의 너비 */
height: 33px; /* 버튼의 높이 */
font-size: 12px; /* 글꼴 크기 */
padding: 5px; /* 내부 여백 */
}
.button-container {
display: flex;
justify-content: flex-end;
}
</style>
</head>
<body>
<%
String userID = null;
if (session.getAttribute("userID") != null) {
userID = (String) session.getAttribute("userID");
}
int pageNumber = 1;
if (request.getParameter("pageNumber") != null) {
pageNumber = Integer.parseInt(request.getParameter("pageNumber"));
}
%>
<nav class="navbar navbar-expand-lg navbar-dark"
style="background-color: #b3907a;">
<div class="container-fluid">
<a class="navbar-brand" href="main.jsp">JSP 게시판 웹 사이트</a>
<style>
a, a:hover{
color:#000000;
text-decoration:none;
}
</style>
<button class="navbar-toggler" type="button"
data-bs-toggle="collapse" data-bs-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item "><a class="nav-link" href="main.jsp">메인</a></li>
<li class="nav-item"><a class="nav-link active" href="bbs.jsp">게시판</a></li>
</ul>
<%
if (userID == null) {
%>
<ul class="navbar-nav ms-auto mb-2 mb-lg-0">
<li class="nav-item dropdown"><a
class="nav-link dropdown-toggle" href="#" id="navbarDropdown"
role="button" data-bs-toggle="dropdown" aria-expanded="false">접속하기</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown">
<li><a class="dropdown-item" href="login.jsp">로그인</a></li>
<li><a class="dropdown-item" href="join.jsp">회원가입</a></li>
</ul></li>
</ul>
<%
} else {
%>
<ul class="navbar-nav ms-auto mb-2 mb-lg-0">
<li class="nav-item dropdown"><a
class="nav-link dropdown-toggle" href="#" id="navbarDropdown"
role="button" data-bs-toggle="dropdown" aria-expanded="false">회원관리</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown">
<li><a class="dropdown-item" href="logoutAction.jsp">로그아웃</a></li>
</ul></li>
</ul>
<%
}
%>
</div>
</div>
</nav>
<div class="container" style="margin-top: 20px">
<div class="row">
<table class="table table-striped"
style="text-align: center; border: 1px solid #dddddd">
<thead>
<tr>
<th style="background-color: #b3907a"; text-aligin: "center";>번호</th>
<th style="background-color: #b3907a"; text-aligin: "center";>제목</th>
<th style="background-color: #b3907a"; text-aligin: "center";>작성자</th>
<th style="background-color: #b3907a"; text-aligin: "center";>작성일</th>
</tr>
</thead>
<tbody>
<%
BbsDAO bbsDAO = new BbsDAO();
ArrayList<Bbs> list = bbsDAO.getList(pageNumber);
for (int i = 0; i < list.size(); i++) {
%>
<tr>
<td><%=list.get(i).getBbsID()%></td>
<td><a href="view.jsp?bbsID=<%=list.get(i).getBbsID()%>"><%=list.get(i).getBbsTitle()%>
</a></td>
<td><%=list.get(i).getUserID()%></td>
<td><%= (list.get(i).getBbsDate().substring(0, 11) + list.get(i).getBbsDate().substring(11, 13) + "시"
+ list.get(i).getBbsDate().substring(14, 16) + "분") %></td>
</tr>
<%
}
%>
</tbody>
</table>
<%
if (pageNumber != 1) {
%>
<a href=bbs.jsp?pageNumber=
<%=pageNumber - 1%>" class="btn btn-sucess btn-arrow-left">이전</a>
<%
}
if (bbsDAO.nextPage(pageNumber)) {
%>
<a href=bbs.jsp?pageNumber=
<%=pageNumber !=1 %>" class="btn btn-sucess btn-arrow-left">다음</a>
<%
}
%>
<div class="button-container">
<a href="write.jsp" class="btn btn-primary small-button">글쓰기</a>
</div>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<script
src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
<script src="js/scripts.js"></script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP 게시판 웹 사이트</title>
</head>
<body>
<script>
location.href = "main.jsp";
</script>
</body>
</html>
<!DOCTYPE html>
<!-- 문서 타입 선언: HTML5 문서임을 명시 -->
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- JSP 페이지 선언부: 페이지의 언어, 콘텐츠 타입, 인코딩 설정 -->
<head>
<meta charset="utf-8" />
<!-- 문자 인코딩 설정: UTF-8 -->
<meta name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<!-- 뷰포트 설정: 반응형 웹 디자인을 위해 화면 너비와 초기 확대 비율 설정 -->
<meta name="description" content="" />
<!-- 페이지 설명 설정 -->
<meta name="author" content="" />
<!-- 페이지 작성자 설정 -->
<title>JSP 게시판</title>
<!-- 페이지 제목 설정 -->
<!-- Favicon-->
<link rel="icon" type="image/x-icon" href="img/favicon.ico" />
<!-- 파비콘 설정: 브라우저 탭에 표시될 아이콘 -->
<!-- Font Awesome icons (free version)-->
<script src="https://use.fontawesome.com/releases/v6.3.0/js/all.js"
crossorigin="anonymous"></script>
<!-- Font Awesome 아이콘 사용을 위한 스크립트 -->
<!-- Google fonts-->
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700"
rel="stylesheet" type="text/css" />
<!-- Google 폰트 Montserrat 사용을 위한 링크 -->
<link
href="https://fonts.googleapis.com/css?family=Roboto+Slab:400,100,300,700"
rel="stylesheet" type="text/css" />
<link href="css/styles.css" rel="stylesheet" />
<style>
.navbar-nav li {
margin-right: 15px;
}
body {
background-color: #dfd3c3;
}
.btn-primary {
background-color: #6c5d53;
border-color: #6c5d53;
}
.custom-btn {
background-color: #b3907a !important;
border-color: #b3907a !important;
}
.form-group {
margin-bottom: 15px; /* 원하는 간격으로 조정 */
}
</style>
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark"
style="background-color: #b3907a;">
<div class="container-fluid">
<a class="navbar-brand" href="main.jsp">JSP 게시판 웹 사이트</a>
<button class="navbar-toggler" type="button"
data-bs-toggle="collapse" data-bs-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item"><a class="nav-link" href="main.jsp">메인</a></li>
<li class="nav-item"><a class="nav-link" href="bbs.jsp">게시판</a></li>
</ul>
<ul class="navbar-nav ms-auto mb-2 mb-lg-0">
<li class="nav-item dropdown"><a
class="nav-link dropdown-toggle" href="#" id="navbarDropdown"
role="button" data-bs-toggle="dropdown" aria-expanded="false">접속하기</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown">
<li><a class="dropdown-item" href="login.jsp">로그인</a></li>
<li><a class="dropdown-item active" href="join.jsp">회원가입</a></li>
</ul></li>
</ul>
</div>
</div>
</nav>
<div class="container">
<div class="row justify-content-center align-items-center"
style="height: 55vh;">
<div class="col-lg-6">
<div class="jumbotron" style="padding-top: 20px;">
<form method="post" action="joinAction.jsp">
<h3 style="text-align: center;">회원가입 화면</h3>
<div class="form-group">
<input type="text" class="form-control" placeholder="아이디"
name="userID" maxlength="20">
</div>
<div class="form-group">
<input type="password" class="form-control" placeholder="비밀번호"
name="userPassword" maxlength="20">
</div>
<div class="form-group">
<input type="text" class="form-control" placeholder="이름"
name="userName" maxlength="20">
</div>
<div class="form-group" style="text-align: center;">
<div class="btn-group" data-toggle="buttons">
<label class="btn active custom-btn"> <input
type="radio" name="userGender" autocomplete="off" value="남자"
checked>남자
</label>
<label class="btn active custom-btn"> <input
type="radio" name="userGender" autocomplete="off" value="여자"
checked>여자
</label>
</div>
</div>
<div class="form-group">
<input type="email" class="form-control" placeholder="이메일"
name="userEmail" maxlength="20">
</div>
<input type="submit" class="btn custom-btn form-control"
value="회원가입">
</form>
</div>
</div>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<script
src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
<!-- Bootstrap JavaScript 번들 링크 -->
<script src="js/scripts.js"></script>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="user.UserDAO"%>
<%@ page import="java.io.PrintWriter"%>
<%
request.setCharacterEncoding("UTF-8");
%>
<jsp:useBean id="user" class="user.User" scope="page" />
<jsp:setProperty name="user" property="userID" />
<jsp:setProperty name="user" property="userPassword" />
<jsp:setProperty name="user" property="userName" />
<jsp:setProperty name="user" property="userGender" />
<jsp:setProperty name="user" property="userEmail" />
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no" />
</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 = 'main.jsp'");
script.println("</script>");
}
if (user.getUserID() == null || user.getUserPassword() == null || user.getUserName() == null
|| user.getUserGender() == null || user.getUserEmail() == null) {
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('입력이 안된 사항이 있습니다.')");
script.println("history.back()");
script.println("</script>");
} else {
UserDAO userDAO = new UserDAO();
int result = userDAO.join(user);
if (result == -1) {
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('해당 아이디가 이미 존재합니다.')");
script.println("history.back()");
script.println("</script>");
} else {
session.setAttribute("userID", user.getUserID());
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("location.href = 'main.jsp'");
script.println("</script>");
}
}
%>
</body>
</html>
<!DOCTYPE html>
<!-- 문서 타입 선언: HTML5 문서임을 명시 -->
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- JSP 페이지 선언부: 페이지의 언어, 콘텐츠 타입, 인코딩 설정 -->
<head>
<meta charset="utf-8" />
<!-- 문자 인코딩 설정: UTF-8 -->
<meta name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<!-- 뷰포트 설정: 반응형 웹 디자인을 위해 화면 너비와 초기 확대 비율 설정 -->
<meta name="description" content="" />
<!-- 페이지 설명 설정 -->
<meta name="author" content="" />
<!-- 페이지 작성자 설정 -->
<title>JSP 게시판</title>
<!-- 페이지 제목 설정 -->
<!-- Favicon-->
<link rel="icon" type="image/x-icon" href="img/favicon.ico" />
<!-- 파비콘 설정: 브라우저 탭에 표시될 아이콘 -->
<!-- Font Awesome icons (free version)-->
<script src="https://use.fontawesome.com/releases/v6.3.0/js/all.js"
crossorigin="anonymous"></script>
<!-- Font Awesome 아이콘 사용을 위한 스크립트 -->
<!-- Google fonts-->
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700"
rel="stylesheet" type="text/css" />
<!-- Google 폰트 Montserrat 사용을 위한 링크 -->
<link
href="https://fonts.googleapis.com/css?family=Roboto+Slab:400,100,300,700"
rel="stylesheet" type="text/css" />
<!-- Google 폰트 Roboto Slab 사용을 위한 링크 -->
<!-- Core theme CSS (includes Bootstrap)-->
<link href="css/styles.css" rel="stylesheet" />
<!-- 외부 CSS 파일 링크: 스타일 시트 연결 -->
<style>
.navbar-nav li {
margin-right: 15px;
}
/* 네비게이션 바의 리스트 아이템 간격 설정 */
body {
background-color: #dfd3c3;
}
/* 바디 배경색 설정 (베이지색) */
.btn-primary {
background-color: #b3907a;
border-color: #b3907a;
}
/* 기본 버튼 색상 설정 (녹색) */
</style>
<!-- 내부 스타일 설정 -->
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark"
style="background-color: #b3907a;">
<div class="container-fluid">
<a class="navbar-brand" href="main.jsp">JSP 게시판 웹 사이트</a>
<!-- 네비게이션 바 브랜드 설정: 메인 페이지로 이동하는 링크 -->
<button class="navbar-toggler" type="button"
data-bs-toggle="collapse" data-bs-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<!-- 네비게이션 바 토글 버튼 설정: 작은 화면에서 메뉴를 접고 펼치는 버튼 -->
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item"><a class="nav-link" href="main.jsp">메인</a></li>
<li class="nav-item"><a class="nav-link" href="bbs.jsp">게시판</a></li>
</ul>
<!-- 네비게이션 바 메뉴 항목 설정: 메인 페이지와 게시판 페이지로 이동하는 링크 -->
<ul class="navbar-nav ms-auto mb-2 mb-lg-0">
<li class="nav-item dropdown"><a
class="nav-link dropdown-toggle" href="#" id="navbarDropdown"
role="button" data-bs-toggle="dropdown" aria-expanded="false">접속하기</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown">
<li><a class="dropdown-item active" href="login.jsp">로그인</a></li>
<li><a class="dropdown-item" href="join.jsp">회원가입</a></li>
</ul></li>
</ul>
<!-- 네비게이션 바 메뉴 항목 설정: 로그인 및 회원가입 페이지로 이동하는 링크 -->
</div>
</div>
</nav>
<!-- 네비게이션 바 설정: 브랜드, 토글 버튼, 메뉴 항목들 -->
<div class="container">
<div class="row justify-content-center align-items-center"
style="height: 55vh;">
<div class="col-lg-6">
<div class="jumbotron" style="padding-top: 20px;">
<form method="post" action="loginAction.jsp">
<h3 style="text-align: center;">로그인 화면</h3>
<div class="form-group">
<input type="text" class="form-control" placeholder="아이디"
name="userID" maxlength="20">
</div>
<div class="form-group">
<input type="password" class="form-control" placeholder="비밀번호"
name="userPassword" maxlength="20">
</div>
<input type="submit" class="btn btn-primary form-control"
value="로그인">
</form>
</div>
</div>
</div>
</div>
<!-- 로그인 폼 설정: 아이디, 비밀번호 입력 필드와 로그인 버튼 -->
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<!-- jQuery 라이브러리 링크 -->
<script
src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
<!-- Bootstrap JavaScript 번들 링크 -->
<script src="js/scripts.js"></script>
<!-- 사용자 정의 스크립트 파일 링크 -->
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="user.UserDAO"%>
<%@ page import="java.io.PrintWriter"%>
<%
request.setCharacterEncoding("UTF-8");
%>
<jsp:useBean id="user" class="user.User" scope="page" />
<jsp:setProperty name="user" property="userID" />
<jsp:setProperty name="user" property="userPassword" />
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no" />
</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 = 'main.jsp'");
script.println("</script>");
}
UserDAO userDAO = new UserDAO();
int result = userDAO.login(user.getUserID(), user.getUserPassword());
if (result == 1) {
session.setAttribute("userID", user.getUserID());
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("location.href = 'main.jsp'");
script.println("</script>");
}
if (result == 0) {
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('비밀번호가 틀립니다.')");
script.println("history.back()");
script.println("</script>");
}
if (result == -1) {
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('아이디가 존재하지 않습니다.')");
script.println("history.back()");
script.println("</script>");
}
if (result == -2) {
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('데이터베이스 오류가 발생했습니다.')");
script.println("history.back()");
script.println("</script>");
}
%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="user.UserDAO"%>
<%@ page import="java.io.PrintWriter"%>
<%
request.setCharacterEncoding("UTF-8");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no" />
</head>
<body>
<%
session.invalidate();
%>
<script>location.href = 'login.jsp'</script>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.io.PrintWriter"%>
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<meta name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<meta name="description" content="" />
<meta name="author" content="" />
<title>JSP 게시판</title>
<link rel="icon" type="image/x-icon" href="img/favicon.ico" />
<script src="https://use.fontawesome.com/releases/v6.3.0/js/all.js"
crossorigin="anonymous"></script>
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700"
rel="stylesheet" type="text/css" />
<link
href="https://fonts.googleapis.com/css?family=Roboto+Slab:400,100,300,700"
rel="stylesheet" type="text/css" />
<link href="css/styles.css" rel="stylesheet" />
<style>
.navbar-nav li {
margin-right: 15px;
}
body {
background-color: #dfd3c3;
}
.btn-primary {
background-color: #b3907a;
border-color: #b3907a;
}
</style>
</head>
<body>
<%
String userID = null;
if (session.getAttribute("userID") != null) {
userID = (String) session.getAttribute("userID");
}
%>
<nav class="navbar navbar-expand-lg navbar-dark"
style="background-color: #b3907a;">
<div class="container-fluid">
<a class="navbar-brand" href="main.jsp">JSP 게시판 웹 사이트</a>
<button class="navbar-toggler" type="button"
data-bs-toggle="collapse" data-bs-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item active"><a class="nav-link active"
href="main.jsp">메인</a></li>
<li class="nav-item"><a class="nav-link" href="bbs.jsp">게시판</a></li>
</ul>
<%
if (userID == null) {
%>
<ul class="navbar-nav ms-auto mb-2 mb-lg-0">
<li class="nav-item dropdown"><a
class="nav-link dropdown-toggle" href="#" id="navbarDropdown"
role="button" data-bs-toggle="dropdown" aria-expanded="false">접속하기</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown">
<li><a class="dropdown-item" href="login.jsp">로그인</a></li>
<li><a class="dropdown-item" href="join.jsp">회원가입</a></li>
</ul></li>
</ul>
<%
} else {
%>
<ul class="navbar-nav ms-auto mb-2 mb-lg-0">
<li class="nav-item dropdown"><a
class="nav-link dropdown-toggle" href="#" id="navbarDropdown"
role="button" data-bs-toggle="dropdown" aria-expanded="false">회원관리</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown">
<li><a class="dropdown-item" href="logoutAction.jsp">로그아웃</a></li>
</ul></li>
</ul>
<%
}
%>
</div>
</div>
</nav>
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<script
src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
<script src="js/scripts.js"></script>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.io.PrintWriter"%>
<%@ page import="bbs.Bbs"%>
<%@ page import="bbs.BbsDAO"%>
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<meta name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<meta name="description" content="" />
<meta name="author" content="" />
<title>JSP 게시판</title>
<link rel="icon" type="image/x-icon" href="img/favicon.ico" />
<script src="https://use.fontawesome.com/releases/v6.3.0/js/all.js"
crossorigin="anonymous"></script>
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700"
rel="stylesheet" type="text/css" />
<link
href="https://fonts.googleapis.com/css?family=Roboto+Slab:400,100,300,700"
rel="stylesheet" type="text/css" />
<link href="css/styles.css" rel="stylesheet" />
<style>
.navbar-nav li {
margin-right: 15px;
}
body {
background-color: #dfd3c3;
}
.btn-primary {
background-color: #b3907a;
border-color: #b3907a;
}
.small-button {
width: 55px; /* 버튼의 너비 */
height: 33px; /* 버튼의 높이 */
font-size: 12px; /* 글꼴 크기 */
padding: 5px; /* 내부 여백 */
}
.button-container {
display: flex;
justify-content: flex-end;
}
.fixed-size {
width: 100%; /* 원하는 너비로 설정 */
height: 350px; /* 원하는 높이로 설정 */
resize: none; /* 사용자가 크기를 조절하지 못하도록 설정 */
}
</style>
</head>
<body>
<%
String userID = null;
if (session.getAttribute("userID") != null) {
userID = (String) session.getAttribute("userID");
}
int bbsID = 0;
if (request.getParameter("bbsID") != null) {
bbsID = Integer.parseInt(request.getParameter("bbsID"));
}
if (bbsID == 0) {
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('유효하지 않은 글입니다.')");
script.println("location.href = 'bbs.jsp'");
script.println("</script>");
}
Bbs bbs = new BbsDAO().getBbs(bbsID);
%>
<nav class="navbar navbar-expand-lg navbar-dark"
style="background-color: #b3907a;">
<div class="container-fluid">
<a class="navbar-brand" href="main.jsp">JSP 게시판 웹 사이트</a>
<button class="navbar-toggler" type="button"
data-bs-toggle="collapse" data-bs-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item "><a class="nav-link" href="main.jsp">메인</a></li>
<li class="nav-item"><a class="nav-link active" href="bbs.jsp">게시판</a></li>
</ul>
<%
if (userID == null) {
%>
<ul class="navbar-nav ms-auto mb-2 mb-lg-0">
<li class="nav-item dropdown"><a
class="nav-link dropdown-toggle" href="#" id="navbarDropdown"
role="button" data-bs-toggle="dropdown" aria-expanded="false">접속하기</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown">
<li><a class="dropdown-item" href="login.jsp">로그인</a></li>
<li><a class="dropdown-item" href="join.jsp">회원가입</a></li>
</ul></li>
</ul>
<%
} else {
%>
<ul class="navbar-nav ms-auto mb-2 mb-lg-0">
<li class="nav-item dropdown"><a
class="nav-link dropdown-toggle" href="#" id="navbarDropdown"
role="button" data-bs-toggle="dropdown" aria-expanded="false">회원관리</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown">
<li><a class="dropdown-item" href="logoutAction.jsp">로그아웃</a></li>
</ul></li>
</ul>
<%
}
%>
</div>
</div>
</nav>
<div class="container" style="margin-top: 20px">
<div class="row">
<table class="table table-striped"
style="text-align: center; border: 1px solid #dddddd">
<thead>
<tr>
<th colspan="3" style="background-color: #b3907a"; text-aligin: "center";>게시판
글 보기 양식</th>
</tr>
</thead>
<tbody>
<tr>
<td style="width: 20%;">글 제목</td>
<td colspan="2"><%=bbs.getBbsTitle()%></td>
</tr>
<tr>
<td>작성자</td>
<td colspan="2"><%=bbs.getUserID()%></td>
</tr>
<tr>
<td>작성일자</td>
<td colspan="2"><%=bbs.getBbsDate().substring(0, 11) + bbs.getBbsDate().substring(11, 13) + "시"
+ bbs.getBbsDate().substring(14, 16) + "분"%></td>
</tr>
<tr>
<td>내용</td>
<td colspan="2" style="min-height: 200px; text-align: left;"><%=bbs.getBbsContent().replaceAll(" ", " ").replaceAll("<", "<").replaceAll(">", ">").replaceAll("\n",
"<br>;")%></td>
</tr>
</tbody>
</table>
<a href="bbs.jsp" class="btn btn-primary small-button"
style="margin-right: 10px">목록</a>
<%
if (userID != null && userID.equals(bbs.getUserID())) {
%>
<a href="update.jsp?bbsID=<%=bbsID%>"
class="btn btn-primary small-button" style="margin-right: 10px">수정</a>
<a href="delt.jsp?bbsID=<%=bbsID%>"
class="btn btn-primary small-button" style="margin-right: 10px">삭제</a>
<%
}
%>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<script
src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
<script src="js/scripts.js"></script>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.io.PrintWriter"%>
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<meta name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<meta name="description" content="" />
<meta name="author" content="" />
<title>JSP 게시판</title>
<link rel="icon" type="image/x-icon" href="img/favicon.ico" />
<script src="https://use.fontawesome.com/releases/v6.3.0/js/all.js"
crossorigin="anonymous"></script>
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700"
rel="stylesheet" type="text/css" />
<link
href="https://fonts.googleapis.com/css?family=Roboto+Slab:400,100,300,700"
rel="stylesheet" type="text/css" />
<link href="css/styles.css" rel="stylesheet" />
<style>
.navbar-nav li {
margin-right: 15px;
}
body {
background-color: #dfd3c3;
}
.btn-primary {
background-color: #b3907a;
border-color: #b3907a;
}
.small-button {
width: 55px; /* 버튼의 너비 */
height: 33px; /* 버튼의 높이 */
font-size: 12px; /* 글꼴 크기 */
padding: 5px; /* 내부 여백 */
}
.button-container {
display: flex;
justify-content: flex-end;
}
.fixed-size {
width: 100%; /* 원하는 너비로 설정 */
height: 350px; /* 원하는 높이로 설정 */
resize: none; /* 사용자가 크기를 조절하지 못하도록 설정 */
}
</style>
</head>
<body>
<%
String userID = null;
if (session.getAttribute("userID") != null) {
userID = (String) session.getAttribute("userID");
}
%>
<nav class="navbar navbar-expand-lg navbar-dark"
style="background-color: #b3907a;">
<div class="container-fluid">
<a class="navbar-brand" href="main.jsp">JSP 게시판 웹 사이트</a>
<button class="navbar-toggler" type="button"
data-bs-toggle="collapse" data-bs-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item "><a class="nav-link" href="main.jsp">메인</a></li>
<li class="nav-item"><a class="nav-link active" href="bbs.jsp">게시판</a></li>
</ul>
<%
if (userID == null) {
%>
<ul class="navbar-nav ms-auto mb-2 mb-lg-0">
<li class="nav-item dropdown"><a
class="nav-link dropdown-toggle" href="#" id="navbarDropdown"
role="button" data-bs-toggle="dropdown" aria-expanded="false">접속하기</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown">
<li><a class="dropdown-item" href="login.jsp">로그인</a></li>
<li><a class="dropdown-item" href="join.jsp">회원가입</a></li>
</ul></li>
</ul>
<%
} else {
%>
<ul class="navbar-nav ms-auto mb-2 mb-lg-0">
<li class="nav-item dropdown"><a
class="nav-link dropdown-toggle" href="#" id="navbarDropdown"
role="button" data-bs-toggle="dropdown" aria-expanded="false">회원관리</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown">
<li><a class="dropdown-item" href="logoutAction.jsp">로그아웃</a></li>
</ul></li>
</ul>
<%
}
%>
</div>
</div>
</nav>
<div class="container" style="margin-top: 20px">
<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: #b3907a"; text-aligin: "center";>게시판
글쓰기 양식</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="text" class="form-control"
palceholder="글 제목" name="bbsTitle" maxlength="50"></td>
</tr>
<tr>
<td><textarea class="form-control fixed-size"
palceholder="글 내용" name="bbsContent" maxlength="2048"
style="height: 350px;"></textarea></td>
</tr>
</tbody>
</table>
<div class="button-container">
<input type="submit" class="btn btn-primary small-button"
value="글쓰기">
</div>
</form>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<script
src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
<script src="js/scripts.js"></script>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="bbs.BbsDAO"%>
<%@ page import="java.io.PrintWriter"%>
<%
request.setCharacterEncoding("UTF-8");
%>
<jsp:useBean id="bbs" class="bbs.Bbs" scope="page" />
<jsp:setProperty name="bbs" property="bbsTitle" />
<jsp:setProperty name="bbs" property="bbsContent" />
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no" />
</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>
반응형
'It Study > 프로그래밍 공부' 카테고리의 다른 글
javascript 종합 기본 예제 - HTML,CSS,JS 연동 (0) | 2024.10.14 |
---|---|
jsp 구구단 기초 예제 - rq클래스 활용(재수정) (1) | 2024.10.03 |
jsp 구구단 기초 예제 (1) | 2024.10.03 |
팀프로젝트 연습 코드(주소록) (12) | 2024.10.01 |
서블릿 구구단 연습 예제 (0) | 2024.10.01 |