JSP

211021_파일입출력을 이용해서 게시판 만들기

요옫 2021. 10. 21. 12:31

퀀텀db로 테이블 생성

순서

퀀텀db에서 테이블 생성 - simpleDto - boardform - simpledao(insert) -boardaction -dao(전체출력) -boardlist - dao(조회수증가,num에 해당하는 하나의 데이터 조회) - content - index - boardlist2 - updateform - updateaction - dao(isEqualPass) - dao(updateboard)

 

 

SimpleDto

package simpleboard.model;

 

import java.sql.Timestamp;

 

public class SimpleDto {

 

private String num;

private String writer;

private String subject;

private String content;

private String imgname;

private String pass;

private int readcount;

private Timestamp writeday;

 

//setter,getter

public String getNum() {

return num;

}

public void setNum(String num) {

this.num = num;

}

public String getWriter() {

return writer;

}

public void setWriter(String writer) {

this.writer = writer;

}

public String getSubject() {

return subject;

}

public void setSubject(String subject) {

this.subject = subject;

}

public String getContent() {

return content;

}

public void setContent(String content) {

this.content = content;

}

public String getImgname() {

return imgname;

}

public void setImgname(String imgname) {

this.imgname = imgname;

}

public String getPass() {

return pass;

}

public void setPass(String pass) {

this.pass = pass;

}

public int getReadcount() {

return readcount;

}

public void setReadcount(int readcount) {

this.readcount = readcount;

}

public Timestamp getWriteday() {

return writeday;

}

public void setWriteday(Timestamp writeday) {

this.writeday = writeday;

}

}

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

SimpleDao

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

boardform.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<link href="https://fonts.googleapis.com/css2?family=Do+Hyeon&display=swap" rel="stylesheet">

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">

<script src="https://code.jquery.com/jquery-3.5.0.js"></script>

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>

<title>Insert title here</title>

</head>

<body>

<form action="boardaction.jsp" method="post" enctype="multipart/form-data">

  <table class="table table-bordered" style="width: 500px;">

    <tr>

      <th style="width: 100px;" bgcolor="#fffacd">작성자</th>

      <td>

        <input type="text" name="writer" class="form-control" style="width: 200px;"

         placeholder="writer" autofocus="autofocus" required="required">

        </td>

    </tr>

    

    <tr>

      <th style="width: 100px;" bgcolor="#fffacd">제목</th>

      <td>

        <input type="text" name="subject" class="form-control" style="width: 400px;"

         placeholder="subject" autofocus="autofocus" required="required">

        </td>

    </tr>

    

    <tr>

      <th style="width: 100px;" bgcolor="#fffacd">이미지 업로드</th>

      <td>

        <input type="file" name="photo" class="form-control" style="width: 300px;"

         required="required">

        </td>

    </tr>

    

    <tr>

      <th style="width: 100px;" bgcolor="#fffacd">비밀번호</th>

      <td>

        <input type="text" name="pass" class="form-control" style="width: 200px;"

         required="required" placeholder="password">

        </td>

    </tr>

    

    <tr>

      <td colspan="2">

        <textarea style="width: 500px; height: 200px;"

         class="form-control" name="content" required="required"></textarea>

      </td>

    </tr>

    

    <tr>

      <td colspan="2" align="center">

        <button type="submit" class="btn btn-success">저장</button>

        <button type="button" class="btn btn-info"

         onclick="location.href='boardlist.jsp'">목록</button>

      </td>

    </tr>

  </table>

</form>

</body>

</html>

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

boardaction.jsp

<%@page import="simpleboard.model.SimpleDto"%>

<%@page import="simpleboard.model.simpleDao"%>

<%@page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy"%>

<%@page import="com.oreilly.servlet.MultipartRequest"%>

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<link href="https://fonts.googleapis.com/css2?family=Do+Hyeon&display=swap" rel="stylesheet">

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">

<script src="https://code.jquery.com/jquery-3.5.0.js"></script>

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>

<title>Insert title here</title>

</head>

<body>

<%

//post방식이니까 한글 엔코딩

request.setCharacterEncoding("utf-8");

 

//업로드에 필요한 변수선언

//업로드할 경로(톰캣에 올라가는 프로젝트 경로)

String realFolder=getServletContext().getRealPath("/photo(1021)");

System.out.println(realFolder);  //경로 확인용

 

//업로드 사이즈

int uploadsize=1024*1024;  //1mb

 

try{

//생성자 파라메터

//request,업로드폴더,업로드사이즈,한글타입(utf-8),new DefaultFileRenamePolicy()

MultipartRequest multi=new MultipartRequest(request,realFolder,

uploadsize,"utf-8",new DefaultFileRenamePolicy());

 

//입력값 읽기..request가 아닌 multi로 읽어야 함

String writer=multi.getParameter("writer");

String subject=multi.getParameter("subject");

String content=multi.getParameter("content");

String pass=multi.getParameter("pass");

 

//실제 업로드 이미지명 읽어오기

String imgname=multi.getFilesystemName("photo");

 

//dto에 담아서 dao메서드에 전달

SimpleDto dto=new SimpleDto();

dto.setWriter(writer);

dto.setSubject(subject);

dto.setContent(content);

dto.setPass(pass);

dto.setImgname(imgname);

 

simpleDao dao=new simpleDao();

dao.insertBoard(dto);

 

//리스트로 이동

response.sendRedirect("boardlist.jsp");

}catch(Exception e){

System.out.println("업로드 오류: "+e.getMessage());

}

%>

</body>

</html>

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

boardlist.jsp

<%@page import="java.text.SimpleDateFormat"%>

<%@page import="simpleboard.model.SimpleDto"%>

<%@page import="java.util.List"%>

<%@page import="simpleboard.model.simpleDao"%>

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<link href="https://fonts.googleapis.com/css2?family=Do+Hyeon&display=swap" rel="stylesheet">

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">

<script src="https://code.jquery.com/jquery-3.5.0.js"></script>

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>

<title>Insert title here</title>

</head>

<body>

<%

//dao선언

simpleDao db=new simpleDao();

 

//list가져오기

List<SimpleDto>list=db.getAllDatas();

%>

 

<!-- 출력 -->

<div class="alert alert-danger" style="width: 800px;">

  <b><%=list.size()%>개의 글이 있습니다</b>

</div>

 

<br>

 

<table class="table table-hover" style="width: 800px;">

  <caption><b>게시판형 목록보기</b>

    <button type="button" class="btn btn-info btn-sm" 

    onclick="location.href='boardform.jsp'" style="margin-left: 600px;">글작성</button>

  </caption>

  

  <tr style="background: #ffe4e1;">

    <th style="width: 70px;">번호</th>

    <th style="width: 400px;">제목</th>

    <th style="width: 100px;">작성자</th>

    <th style="width: 120px;">작성일</th>

    <th style="width: 70px;">조회수</th>

  </tr>

  

  <%

  //날짜형식

  SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");

  

  for(int i=0;i<list.size();i++)

  {

int no=list.size()-i;  //역순으로 넘버링..1번열출력할 번호

 

SimpleDto dto=list.get(i); //i번째 dto얻기

%>

<tr>

<!-- 번호 -->

  <td align="center"><%=no %></td>

<!-- 제목 클릭시 내용보기로 가도록 -->  

  <td>

    <a href="content.jsp?num=<%=dto.getNum()%>">  <!-- 해당num만 보게 -->

    <img alt="" src="../photo(1021)/<%=dto.getImgname() %>" style="width: 30px; height: 30px;">

    <%=dto.getSubject() %>

    </a>

  </td>

<!-- 작성자 -->    

  <td><%=dto.getWriter() %></td>

<!-- 작성일 -->  

  <td><%=sdf.format(dto.getWriteday()) %></td>

<!-- 조회수 -->

  <td align="center"><%=dto.getReadcount() %></td>

</tr>

  <%}

  %>

</table>

</body>

</html>

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

content.jsp

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<link href="https://fonts.googleapis.com/css2?family=Do+Hyeon&display=swap" rel="stylesheet">

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">

<script src="https://code.jquery.com/jquery-3.5.0.js"></script>

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>

<title>Insert title here</title>

</head>

<body>

<!-- 인덱스를 이용하여 레이아웃 변경해보기 -->

<h2>여러 모양으로 게시판 출력하기</h2>

<hr>

<button type="button" class="btn btn-lg btn-danger"

 onclick="location.href='boardlist.jsp'">게시판형 목록</button>

<button type="button" class="btn btn-lg btn-info"

 onclick="location.href='boardlist2.jsp'">앨범형 목록</button>

</body>

</html>

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

boardlist.jsp

<%@page import="java.text.SimpleDateFormat"%>

<%@page import="java.util.List"%>

<%@page import="simpleboard.model.simpleDao"%>

<%@page import="simpleboard.model.SimpleDto"%>

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<link href="https://fonts.googleapis.com/css2?family=Do+Hyeon&display=swap" rel="stylesheet">

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">

<script src="https://code.jquery.com/jquery-3.5.0.js"></script>

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>

<title>Insert title here</title>

<style type="text/css">

a:link {

text-decoration: none;

font-size: 10px;

color: black;

font-weight: bold;

}

</style>

</head>

<body>

<%

//db선언

simpleDao db=new simpleDao();

 

//전체리스트 가져오기

List<SimpleDto>list=db.getAllDatas();

%>

 

<table style="width: 900px;">

  <caption><b>앨범형 목록보기</b>

    <button type="button" class="btn btn-success btn-sm"

      onclick="loaction.href='boardform.jsp'">글작성</button>

  </caption>

  

  <tr>

    <%

    //출력할 날짜형식

    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");

    

    for(int i=0;i<list.size();i++)

    {

    //1번열에 출력할 번호..역순으로 나타내기

    int no=list.size()-i;

    

    //i번째 dto

    SimpleDto dto=list.get(i);

    %>

    <td>

    <a href="content.jsp?num=<%=dto.getNum()%>">

      <img alt="" src="../image/<%=dto.getImgname()%>"

           style="width: 180px; height: 180px; border: 1px solid gray; margin: 5px;">

      <br>

      <%=dto.getSubject() %> </a>

      <br>

      <span style="color: gray; font-size: 12px;">

      조회: <%=dto.getReadcount() %> | <%=sdf.format(dto.getWriteday()) %>

      <br>

      <%=dto.getWriter() %>

      </span>

      <br><br><br>

    </td>

    

    <%

    if((i+1)%4==0)

    {%>

    </tr>

    <tr>

    <%}

    %>

    <%}

    %>

  </tr>

</table>

</body>

</html>

 

 

 

 

'JSP' 카테고리의 다른 글

211022_게시판 만들기  (0) 2021.10.25
211021_파일입출력 개념(내용추가해야함)  (0) 2021.10.21
211021_파일입출력(여러개)  (0) 2021.10.21
211021_파일입출력  (0) 2021.10.21
211020_session  (0) 2021.10.20