728x90
이전의 게시판list에 추가하여 글을 쓸 수 있는 insertBoardForm.jsp를 만들었다.
제목과 글쓴이 비밀번호와 내용을 입력한다
초기화는 button type을 reset으로 설정했다
완료는 button type을 submit으로 설정했다.
insertBoardForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>insertBoardForm</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Orbit&display=swap" rel="stylesheet">
<style>
body {
font-family: "Orbit", sans-serif;
font-weight: 400;
font-style: normal;
}
</style>
</head>
<body style="background-size : cover; background-image: url('./img/bg.jpg'); height: 100vh; width: 100vw;">
<div class="container" style="opacity: 0.9;">
<div class="row">
<div class="col"></div>
<div class="mt-5 col-9 border border-light-subtle shadow p-5 mb-5 bg-body-tertiary rounded">
<!-- start main-->
<div class="row">
<div class="col">
<h1>게시글 입력</h1>
</div>
<div class="col"></div>
<div class="col">
<form action="./boardList.jsp">
<button type="submit" class="btn-close" aria-label="Close" style="float: right; width:25px; height:25px; background-size: 25px 25px;"></button>
</form>
</div>
</div>
<form action="./insertBoardAction.jsp" method="post">
<table class="table table-hover table-light" style="width: 100%;">
<tr>
<th style="width:20%;">제목</th>
<td><input type="text" style="width: 300px;" name="title"></td>
</tr>
<tr>
<th style="width:20%;">글쓴이</th>
<td><input type="text" style="width: 300px;" name="writer"></td>
</tr>
<tr>
<th style="width:20%;">비밀번호</th>
<td><input type="password" style="width: 300px;" name="pw"></td>
</tr>
<tr>
<th style="width:20%;">내용</th>
<td><textarea rows="10" cols="60" name="content"></textarea></td>
</tr>
</table>
<div class="row">
<div class="col"></div>
<div class="col"></div>
<div class="col" style="text-align: center; margin: auto 0;">
<button type="submit" class="btn btn-light shadow-sm bg-body-#117C74 rounded" style="border:1px solid #117C74; color: white; background-color: #0C7971; float: right; margin-left: 10px;">
완료
</button>
<button type="reset" class="btn btn-light shadow-sm bg-body-#117C74 rounded" style="border:1px solid #117C74; color: white; background-color: #0C7971; float: right;">
초기화
</button>
</div>
</div>
</form>
<!-- end -->
</div>
<div class="col"></div>
</div>
</div>
</body>
</html>
insertBoardForm.jsp를 통해 입력받은 값들은
insertBoardAction.jsp에 getParameter()을 통해 각각 타입에 맞게 변수에 저장한다.
쿼리문에 맞게 변수값들을 적절히 대입하여 쿼리를 실행할 수 있도록 했다.
DB를 연결하고
쿼리의 ?부분의 값을 setxxx()메소드를 사용해 알맞은 변수로 교체해준다.
쿼리가 제대로 실행이 되었다면 row가 1이 반환 될것이고 그렇지 안다면 0이 반환되므로
if문을 사용해 콘솔에 실행 성공인지 실패인지 출력한다.
그후 boardList.jsp로 redirect를 해준다.
마지막으로 사용했던 DB 자원들을 반납해주면 끝이다.
insertBoardAction.jsp
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.net.URLEncoder"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
// 0. post 인코딩 설정
request.setCharacterEncoding("utf-8");
// 1. 입력 값 받는다
String title = request.getParameter("title");
String writer = request.getParameter("writer");
String pw = request.getParameter("pw");
String content = request.getParameter("content");
//sendRedirect사용시 한글은 인코딩x -> URLEncoder.encode("한글", "UTF-8");을 사용해야함
// String encodedName = URLEncoder.encode(name, "UTF-8");
// 값 체크
System.out.println("insertBoardAction - title : " + title);
System.out.println("insertBoardAction - writer : " + writer);
System.out.println("insertBoardAction - pw : " + pw);
System.out.println("insertBoardAction - content : " + content);
// 2. DB 접속해서 입력 값 입력한다.
/*
INSERT INTO board(
title, content, writer, pw
) VALUES(
?, ?, ?, ?
);
*/
String sql = "INSERT INTO board(title, writer, pw, content) VALUES(?, ?, ?, ?)";
Class.forName("org.mariadb.jdbc.Driver");
Connection conn = null;
PreparedStatement stmt = null;
conn = DriverManager.getConnection("jdbc:mariadb://127.0.0.1:3307/board","root","****");
stmt = conn.prepareStatement(sql);
stmt.setString(1, title);
stmt.setString(2, writer);
stmt.setString(3, pw);
stmt.setString(4, content);
System.out.println(stmt); // 값 체크
int row = stmt.executeUpdate();
// row가 1이면 1행 입력 성공, 0이면 입력 실패
if(row == 1) {
System.out.println("입력 성공");
} else {
System.out.println("입력 실패");
}
// 3. 목록(boardList.jsp)을 재 요청(redirect)하게 한다.
response.sendRedirect("./boardList.jsp");
//DB 자원 반납
stmt.close();
conn.close();
%>
728x90
'웹 개발' 카테고리의 다른 글
css,bootstrap사용해서 게시판만들기(4) (0) | 2024.03.22 |
---|---|
css,bootstrap사용해서 게시판만들기(3) (0) | 2024.03.22 |
css,bootstrap사용해서 게시판만들기(1) (0) | 2024.03.21 |
JSP와 MariaDB 연동하기(7) (0) | 2024.03.18 |
JSP와 MariaDB 연동하기(6) (0) | 2024.03.18 |