웹 게시판 만들기 | 데이터베이스의 개념과 Crud 게시판 만들기 최근 답변 38개

당신은 주제를 찾고 있습니까 “웹 게시판 만들기 – 데이터베이스의 개념과 CRUD 게시판 만들기“? 다음 카테고리의 웹사이트 https://you.tfvp.org 에서 귀하의 모든 질문에 답변해 드립니다: you.tfvp.org/blog. 바로 아래에서 답을 찾을 수 있습니다. 작성자 조코딩 JoCoding 이(가) 작성한 기사에는 조회수 56,172회 및 좋아요 1,275개 개의 좋아요가 있습니다.

웹 게시판 만들기 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 데이터베이스의 개념과 CRUD 게시판 만들기 – 웹 게시판 만들기 주제에 대한 세부정보를 참조하세요

이번 영상은 데이터베이스의 종류인 RDB(Relational Database), NoSQL(Not only SQL)의 개념과 Database에서 사용되는 전반적인 개념을 간단히 익히고 백엔드 프레임워크인 Ruby on Rails를 활용해 MVC 패턴을 만들어보고 간단한 CRUD 기능이 되는 게시판을 제작해보는 영상입니다.
– 구름IDE
https://ide.goorm.io/
– Ruby on Rails 한글 가이드
https://rubykr.github.io/rails_guides/
– 레일즈 DB 시각화 Gem (rails_db)
https://rubygems.org/gems/rails_db
– 완성 코드보기
https://goor.me/MPn6E
or
https://github.com/youtube-jocoding/rails-crud
많은 내용을 압축된 시간에 담으려다보니 편집 후 영상을 쭉 보니 초보자분들이 보시기에는 너무 정신 없다고 느껴지실 것 같네요.. 차근차근 크게 생각해보면 어렵지 않은 주제들인데 제 욕심에 너무 압축해 놓은 것 같습니다ㅠㅠ 앞으로는 더 가벼운 주제로 더 쉽게 코딩 배우실 수 있도록 영상을 제작해보겠습니다!
항상 영상 봐주시는 분들 감사합니다.
* 12분 경에 create 액션을 만드는 부분이 빠졌는데 14:19 부근 처럼 create라는 액션이 있어야합니다! 영상이 누락되어 죄송합니다ㅠ

웹 게시판 만들기 주제에 대한 자세한 내용은 여기를 참조하세요.

JSP 게시판 웹 사이트 만들기 – Peter blog

JSP 게시판 웹 사이트 만들기. 웹사이트 만들어 보신 적 있으신가요? 훌륭한 예제를 통해, JSP 공부 겸, 간단한 웹사이트를 만들어 볼 수 있습니다.

+ 자세한 내용은 여기를 클릭하십시오

Source: peterkimlab.github.io

Date Published: 3/2/2021

View: 6586

[JSP] JSP 게시판 만들기 1강 준비 – 인생최적화

[JSP] JSP 게시판 만들기 1강 준비 … 그러다가 발견한 유튜브 ‘동빈나’님 채널에 있는 JSP 게시판 만들기 강좌를 발견 … 웹 프로젝트 생성하기 ##.

+ 여기에 더 보기

Source: happy-inside.tistory.com

Date Published: 10/16/2022

View: 8679

[Web] 26. 회원 관리 & 게시판 만들기 ① : 웹 프로젝트 생성 및 …

교육 중에 작성한 예제들은 깃허브에 올려두고 있습니다. gif 파일은 클릭해서 보는 것이 정확합니다. – 회원 관리 & 게시판 만들기 ① : 웹 프로젝트 …

+ 여기를 클릭

Source: upcake.tistory.com

Date Published: 6/24/2022

View: 3069

3-06 Django로 게시판 만들기 – 게시판 페이지

지금부터 웹사이트의 기본인 게시판기능을 차근차근히 만들어보자. 목록 페이지 만들자. 게시판의 글 목록이 있는 목록페이지를 만들어보자. 아래의 경로에 blog.html 파일 …

+ 여기에 자세히 보기

Source: wikidocs.net

Date Published: 11/28/2021

View: 8616

JSP 게시판 만들기 – (14) 웹사이트 메인 페이지 디자인

JSP 게시판 만들기 – (14) 웹사이트 메인 페이지 디자인 … 반응형 웹에 사용하는 메타태그 –>  …

+ 여기에 표시

Source: dogsavestheworld.tistory.com

Date Published: 12/6/2021

View: 5692

JSP 게시판 만들기 CHAPTER 1 (자바스크립트) – 개발환경 …

JDK설치 (게시판 작성을 위한 개발환경을 구성해주기 위해 설치를 해준다.) 위의 사이트에 접속을 한다. Accept 동의를 하고 아래에 본인에게 맞는 …

+ 여기에 표시

Source: alisyabob.tistory.com

Date Published: 2/5/2021

View: 3570

[Web] SNS형 게시판 만들기 프로젝트 (1) – 스토리보드 구성

이번 학기에 웹 프로그래밍 강의를 듣습니다. 예전에 고등학교 시절에 웹 프로그래밍을 간단히 해본 기억이 있어서 부담감은 좀 적긴 한데요.

+ 자세한 내용은 여기를 클릭하십시오

Source: cow-coding.tistory.com

Date Published: 6/3/2021

View: 331

주제와 관련된 이미지 웹 게시판 만들기

주제와 관련된 더 많은 사진을 참조하십시오 데이터베이스의 개념과 CRUD 게시판 만들기. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

데이터베이스의 개념과 CRUD 게시판 만들기
데이터베이스의 개념과 CRUD 게시판 만들기

주제에 대한 기사 평가 웹 게시판 만들기

  • Author: 조코딩 JoCoding
  • Views: 조회수 56,172회
  • Likes: 좋아요 1,275개
  • Date Published: 2019. 10. 30.
  • Video Url link: https://www.youtube.com/watch?v=2CHkds265N8

JSP 게시판 웹 사이트 만들기

JSP 게시판 웹 사이트 만들기

웹사이트 만들어 보신 적 있으신가요?

훌륭한 예제를 통해, JSP 공부 겸, 간단한 웹사이트를 만들어 볼 수 있습니다. 저 역시 동빈나님의 유튜브를 보고, 개념을 잡을 수 있었습니다. 또한 매 강의에 대한, 코드를 반영해 놓았습니다. 영상을 보시면서, 아래 글을 참조하시면, 쉽게 따라 가실 수 있습니다. 저작권은 동빈나님에게 있으며, 훌륭한 강의 감사드립니다.

2강 – 로그인 페이지 디자인

로그인 페이지를 구현 합니다. input 타입으로, 아이디와 비밀번호 입력 받으며, 로그인 버튼을 만드는 화면을 구성해 보겠습니다.

[login.jsp]

<% @ page language = "java" contentType = "text/html; charset=UTF-8" pageEncoding = "UTF-8" %> < html > < head > < meta charset = "UTF-8" > < meta name = "viewport" content = "width=device-width" , initial - scale "=" 1 "> JSP 게시판 웹 사이트

번호 제목 작성자 작성일
1 안녕하세요 홍길동 2017-05-04

글쓰기

< script src = "js/bootstrap.js" > use BBS;

BBS 테이블 생성

mysql> CREATE TABLE BBS ( -> bbsID INT, -> bbsTitle VARCHAR(50), -> userID VARCHAR(20), -> bbsDate DATETIME, -> bbsContent VARCHAR(2048), -> bbsAvailable INT, -> PRIMARY KEY (bbsID) -> );

10강 – 글쓰기 기능 구현하기

글 제목 및 내용을 입력 받고, 글쓰기 버튼 클릭하면, DB에 저장 되게 구현 합니다.

[writeAction.jsp]

<% @ 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 게시판 웹 사이트 <% 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(” history . back () “); script.println(” “); } else { if (bbs.getBbsTitle() == null || bbs.getBbsContent() == null) { PrintWriter script = response.getWriter(); script.println(” < script > “); script.println(” alert ( ‘ 입력이 안된 사항이 있습니다 . ‘ ) “); script.println(” history . back () “); script.println(” “); } 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(” “); } else { PrintWriter script = response.getWriter(); script.println(” < script > “); script.println(” location . href = ‘ bbs . jsp ‘ “); script.println(” ” ); } } } %>

[BbsDAO.java]

public class BbsDAO { private Connection conn ; private ResultSet rs ; public BbsDAO () { try { String dbURL = “jdbc:mysql://localhost:3306/BBS?serverTimezone=UTC” ; String dbID = “root” ; String dbPassword = “hero0825” ; 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 ; // 데이터베이스 오류 } }

글 제목과 글 내용을 입력한 후 글쓰기 버튼을 누르면, DB에 값이 저장 된 것을 확인 할 수 있습니다.

mysql> select * from BBS; +——-+———————+———+———————+————-+————–+ | bbsID | bbsTitle | userID | bbsDate | bbsContent | bbsAvailable | +——-+———————+———+———————+————-+————–+ | 1 | 테스트 글쓰기 | gildong | 2020-10-16 12:13:59 | 내용 무. | 1 | +——-+———————+———+———————+————-+————–+

11강 – 게시판 글 목록 기능 구현하기

게시판의 글 목록 입니다. 목록이 10개 이상이 되면, 다음 페이지로 이동 할 수 있는 버튼이 활성화 됩니다.

[bbs.jsp]

… < div class =" container ">

<% BbsDAO bbsDAO = new BbsDAO(); ArrayList list = bbsDAO.getList(pageNumber); for (int i = 0; i < list.size(); i++) { %>

<% } %>

번호 제목 작성자 작성일
<%= list.get(i).getBbsID() %>

<% if (pageNumber != 1) { %> ” class=” btn btn – success btn – arrow – left “>다음 <% } %> 글쓰기

getList()로 bbsId, bbsTitle, userID, bbsContent, bbsAvailable 정보를 DB로 부터 가지고와서, 게시판 목록에 보여 줍니다.

[BbsDAO.java]

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 ( 1 )); 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 ; } 12강 - 게시판 보기 기능 구현하기 게시판 등록 된 글에 대한 상세내역을 보기 기능을 구현 합니다. [bbs.jsp] <% @ page import =" java.io.PrintWriter " %> <%@ page import=" bbs . Bbs " %> <%@ page import=" bbs . BbsDAO " %> < link rel = "stylesheet" href = "css/bootstrap.css" > < title > JSP 게시판 웹 사이트 < 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 ( "” ); } Bbs bbs = new BbsDAO (). getBbs ( bbsID ); %> < nav class =" navbar navbar - default ">

게시판 글보기
글제목 <%= bbs.getBbsTitle().replaceAll(" ", " & nbsp ; ").replaceAll(" < ", " & lt ; ").replaceAll(" > “,” & gt ; “).replaceAll(” \ n “, ” < br > “) %>
작성자 <%= bbs.getUserID() %>
작성일자 <%= bbs.getBbsDate().substring(0, 11) + bbs.getBbsDate().substring(11, 13) + " 시 " + bbs.getBbsDate().substring(14, 16) + " 분 " %>
내용 <%= bbs.getBbsContent().replaceAll(" ", " & nbsp ; ").replaceAll(" < ", " & lt ; ").replaceAll(" > “,” & gt ; “).replaceAll(” \ n “, ” < br > “) %>

목록 <% if (userID != null && userID.equals(bbs.getUserID())) { %> < script src = "js/bootstrap.js" >

작성 된 글(글제목, 작성자, 작성일자, 내용)을 보여 주기 위한, 레이아웃을 구성 합니다. 현재 유저가, 글쓴이와 같다면, 수정/삭제 버튼을 보여 줍니다.

[BbsDAO.java]

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 ( 1 )); return bbs ; } } catch ( Exception e ) { e . printStackTrace (); } return null ; }

13강 – 게시글 수정 및 삭제 기능 구현하기

게시되어 있는 글을 수정 및 삭제하는 기능을 구현합니다.

[update.jsp]

< div class =" container ">

게시판 글 수정 양식 <%= bbs.getBbsContent() %>

글수정 버튼 클릭 시, bbsID를 updateAction.jsp에 전달 합니다.

[updateAction.jsp]

Bbs bbs = new BbsDAO (). getBbs ( bbsID ); if (! userID . equals ( bbs . getUserID ())) { PrintWriter script = response . getWriter (); script . println ( “” ); } else { if ( request . getParameter ( “bbsTitle” ) == null || request . getParameter ( “bbsContent” ) == null || request . getParameter ( “bbsTitle” ) == “” || request . getParameter ( “bbsContent” ) == “” ){ PrintWriter script = response . getWriter (); script . println ( “” ); } else { BbsDAO bbsDAO = new BbsDAO (); int result = bbsDAO . update ( bbsID , request . getParameter ( “bbsTitle” ), request . getParameter ( “bbsContent” )); if ( result == – 1 ) { PrintWriter script = response . getWriter (); script . println ( “” ); } else { PrintWriter script = response . getWriter (); script . println ( “” ); } } }

bbsTitle, bbsContent를 update 메서드로 전달하여, DB에 업데이트 합니다.

[BbsDAO.java]

public int update ( int bbsID , String bbsTitle , String bbsContent ) { String SQL = “UPDATE BBS SET bbsTitle = ?, bbsContent = ? WHERE bbsID =?” ; try { PreparedStatement pstmt = conn . prepareStatement ( SQL ); pstmt . setString ( 1 , bbsTitle ); pstmt . setString ( 2 , bbsContent ); pstmt . setInt ( 3 , bbsID ); return pstmt . executeUpdate (); } catch ( Exception e ) { e . printStackTrace (); } return – 1 ; // 데이터베이스 오류 } public int delete ( int bbsID ) { String SQL = “UPDATE BBS SET bbsAvailable = 0 WHERE bbsID = ?” ; try { PreparedStatement pstmt = conn . prepareStatement ( SQL ); pstmt . setInt ( 1 , bbsID ); return pstmt . executeUpdate (); } catch ( Exception e ) { e . printStackTrace (); } return – 1 ; // 데이터베이스 오류 }

[view.jsp]

<% if ( userID != null && userID . equals ( bbs . getUserID ())) { %> < a href = "update.jsp?bbsID=<%= bbsID %>” class =” btn btn – primary “>수정

[JSP] JSP 게시판 만들기 1강 준비

반응형

유튜브 동빈나님 JSP 게시판 강좌 따라하기

1강 설치 및 준비

저는 학원에서 자바를 배우고 JSP로 넘어가는 과정에서 코로나 덕분에 수업 일정이 밀려서 JSP를 혼자 공부하기 시작했습니다. 그런 여러 가지 조건이 겹쳐서 시작한 JSP는 저 혼자 공부하기에는 너무 벅찼습니다. 인강을 들어도 머리에 잘 들어오지도 않고 당연히 손에 익지도 않더라구요.

그러다가 발견한 유튜브 ‘동빈나’님 채널에 있는 JSP 게시판 만들기 강좌를 발견하였고, 그 동영상들을 보면서 무작정 JSP 게시판을 따라 만들었습니다. 솔직히 처음에는 잘 몰랐습니다. 이 과정들이 나에게 얼마나 도움이 될지 말이죠. 처음엔 너무 모르는 상태에서 따라 만들다 보니 무엇이 어떻게 돌아가는건지 잘 몰랐는데, 어쨌든 동빈나님의 JSP 게시판 만들기 강좌를 보며 따라했던 과정을 경험한 이후에 다른 곳에서 공부를 해보니 동빈나님의 강좌를 보며 게시판을 만들었던 과정이 결국 JSP공부를 하고 JSP를 이해함에 있어서 가장 저에게 도움이 되었다는 것을 깨달았습니다.

그래서 조금 느슨해졌다 싶으면 심심할 때 다시 동빈나님 강좌를 참고해서 JSP 게시판을 따라 만들었었는데 혹시 저와 비슷한 처지의 분들에게 조금이나마 도움을 드리고자 게시판 과정을 포스팅에 담기로 결정했습니다. 이번 포스팅은 그 첫 번째 과정입니다.

참고로 저는 MySQL이 아닌 MariaDB를 사용하는 중에 이 포스팅을 작성하다 보니 데이터베이스 프로그램이 다를겁니다. 하지만 MySQL과 MaridDB는 문법의 거의 같고 원래 같은 회사였기 때문에 따라하는 데는 문제가 없다고 판단되어 그대로 작성하기로 결정했습니다.

가장 먼저 [JDK] [이클립스] [아파치 톰캣] [MariaDB] 를 설치해야 합니다

설치가 되어 있지 않은 분은 아래 링크 참조 바랍니다

JDK 설치

https://happy-inside.tistory.com/10

이클립스 설치

https://happy-inside.tistory.com/15

아파치 톰캣 설치

https://happy-inside.tistory.com/78

MariaDB 설치(MySQL 대신 사용)

https://happy-inside.tistory.com/39

MySQL 을 사용해도 됩니다

MySQL 설치 링크는 아직 없어서 나중에 포스팅하면 추가하도록 하겠습니다

JSP 게시판 만들기 작업하기에 알맞는 퍼스펙티브로 전환하기

이클립스에서 [Window] – [Perpective] – [Open Perspective] – [Other] [Java EE (default)] – [Open]

## 웹 프로젝트 생성하기 ##

[탐색 창에서 마우스 우클릭] – [New] – [Dynamic Web Project]

1. 프로젝트명을 설정

2. 내가 설치한 톰캣에 맞게 설정

3. ‘Finish’ 를 누르면 새 프로젝트가 생성

## 정상적으로 실행이 되는지 확인하기 ##

기본적으로 지정된 작업폴더는 ‘WebContent’ 입니다

‘WebContent’ 클릭 후 마우스 우클릭

[New] – [JSP File]

‘index’라고 입력 후 ‘Finish’를 누르면 새로운 JSP 파일이 생성됩니다

1. 태그와 태그 사이에 아무 내용이나 입력합니다

2. 저장하기

3. 실행

최초 실행시에는 톰캣을 지정하는 안내 창이 나옵니다

아래 체크버튼을 체크해야 다음부터 뜨지 않습니다

[‘Always use this ….’ 체크] – [Finish]

정상적으로 설치가 되고 실행이 되었다면 입력했던 내용이 잘 나오는 것을 확인할 수 있습니다

https://happy-inside.tistory.com/category/%EC%BD%94%EB%94%A9/JSP%20%EA%B2%8C%EC%8B%9C%ED%8C%90

자기계발하는 개발자

‘인생최적화’

반응형

[Web] 26. 회원 관리 & 게시판 만들기 ① : 웹 프로젝트 생성 및 페이지 작성 전 환경 준비

반응형

https://github.com/upcake/Class_Examples

교육 중에 작성한 예제들은 깃허브에 올려두고 있습니다.

gif 파일은 클릭해서 보는 것이 정확합니다.

– 회원 관리 & 게시판 만들기 ① : 웹 프로젝트 생성 및 페이지 작성 전 환경 준비 –

▲작업지시서

○ 클래스 폴더 설정

○ Package 생성 : member(회원 관리), board(게시판 관리)

▲패키지 목록

회원

관리 com.member.action 회원 관리의 Action Class com.member.study 회원 관리의 DTO, DAO, SQL(JDBC) com.member.mybatis (myBatis 사용할 경우 생성) 회원 관리의 DB FrameWork 게시판관리 com.board.action 게시판의 Action Class com.board.study 게시판의 DTO, DAO, SQL(JDBC) com.board.mybatis (myBatis 사용할 경우 생성) 게시판의 DB Framework 공용 com.commons.action Action Interface, ActionForward Class

○ View 폴더 생성

– board : 게시판의 JSP

– boardupload : 게시판에서 첨부한 파일이 저장되는 폴더

– member : 회원 관리의 JSP

○ DataBase Table 생성

–테이블 생성 CREATE TABLE boardMember( Member_id VARCHAR2(15) PRIMARY KEY NOT NULL, Member_pw VARCHAR2(15), Member_name VARCHAR2(15), Member_age NUMBER, Member_gender VARCHAR2(5), Member_email VARCHAR2(30) ); –테이블 조회 SELECT * FROM boardMember;

▲Member.sql

– boardMember Table : 회원 관리

–테이블 생성 CREATE TABLE memberBoard( Board_num NUMBER PRIMARY KEY NOT NULL, Board_id VARCHAR2(15), Board_subject VARCHAR2(50), Board_content VARCHAR2(2000), Board_file VARCHAR2(20), Board_re_ref NUMBER, Board_re_lev NUMBER, Board_re_seq NUMBER, Board_readcount NUMBER, Board_date DATE ); –제약조건 추가 ALTER TABLE memberBoard ADD CONSTRAINT pk_board_id FOREIGN KEY(Board_id) REFERENCES boardMember(Member_id); –테이블 조회 SELECT * FROM memberBoard;

▲Board.sql

– memberBoard Table : 게시판

○ FrontController Servlet 생성

package com.member.action; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.commons.action.Action; import com.commons.action.ActionForward; @WebServlet(“/MemberFrontController.me”) public class MemberFrontController extends HttpServlet { protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String uri = request.getRequestURI(); String context = request.getContextPath(); String command = uri.substring(context.length()); //System.out.println(command); //콘솔 창에 /memberLogin.me 등이 출력된다. Action action = null; ActionForward forward = null; if(command.equals(“/memberLogin.me”)) { forward = new ActionForward(); forward.setPath(“member/loginForm.jsp”); forward.setRedirect(false); } else if(command.equals(“/memberLoginAction.me”)) { } else if(command.equals(“/memberJoin.me”)) { forward = new ActionForward(); forward.setPath(“member/joinForm.jsp”); forward.setRedirect(false); } else if(command.equals(“/memberJoinAction.me”)) { } if(forward != null) { if(forward.isRedirect()) { //true : sendRedirect() 전환 response.sendRedirect(forward.getPath()); } else { //false : forward() 전환 RequestDispatcher rd = request.getRequestDispatcher(forward.getPath()); rd.forward(request, response); } } } }

▲MemberFrontController.java

– URL Mapping : /MemberFrontController.me

package com.board.action; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(“/BoardFrontController.bo”) public class BoardFrontController extends HttpServlet { protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }

▲BoardFrontController.java

– URL Mapping : /BoardFrontController.bo

○ Servlet Mapping : web.xml

09.Member_Board index.html index.htm index.jsp default.html default.htm default.jsp MemberFrontController MemberFrontController com.member.action.MemberFrontController MemberFrontController *.me BoardFrontController BoardFrontController com.board.action.BoardFrontController BoardFrontController *.bo

▲web.xml

– MemberFrontController url-pattern : *.me

– BoardFrontController url-pattern : *.bo

○ DTO Class, DAO Class

– com.member.study : MemberDTO.java, MemberDAO.java

package com.member.study; import java.io.Serializable; public class MemberDTO implements Serializable { private String member_id, member_pw, member_name; private int member_age; private String member_gender, member_email; public MemberDTO() {} public MemberDTO(String member_id, String member_pw, String member_name, int member_age, String member_gender, String member_email) { super(); this.member_id = member_id; this.member_pw = member_pw; this.member_name = member_name; this.member_age = member_age; this.member_gender = member_gender; this.member_email = member_email; } public String getMember_id() { return member_id; } public void setMember_id(String member_id) { this.member_id = member_id; } public String getMember_pw() { return member_pw; } public void setMember_pw(String member_pw) { this.member_pw = member_pw; } public String getMember_name() { return member_name; } public void setMember_name(String member_name) { this.member_name = member_name; } public int getMember_age() { return member_age; } public void setMember_age(int member_age) { this.member_age = member_age; } public String getMember_gender() { return member_gender; } public void setMember_gender(String member_gender) { this.member_gender = member_gender; } public String getMember_email() { return member_email; } public void setMember_email(String member_email) { this.member_email = member_email; } }

▲MemberDTO.java

package com.member.study; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; public class MemberDAO { private Connection conn; private PreparedStatement ps; private ResultSet rs; public Connection getConn() { String url = “jdbc:oracle:thin:@127.0.0.1:1521:XE”; String user = “hanul”; String password = “0000”; try { Class.forName(“oracle.jdbc.driver.OracleDriver”); conn = DriverManager.getConnection(url, user, password); } catch (Exception e) { e.printStackTrace(); System.out.println(“getConn() Exception!!!”); } return conn; } //getConn() } //class

▲MemberDAO.java

– com.board.study : BoardDTO.java, BoardDAO.java

package com.board.study; import java.io.Serializable; public class BoardDTO implements Serializable { private int board_num; private String board_id, board_subject, board_content, board_file; private int board_re_ref, board_re_lev, board_re_seq, board_readcount; private String board_date; public BoardDTO() {} public BoardDTO(int board_num, String board_id, String board_subject, String board_content, String board_file, int board_re_ref, int board_re_lev, int board_re_seq, int board_readcount, String board_date) { super(); this.board_num = board_num; this.board_id = board_id; this.board_subject = board_subject; this.board_content = board_content; this.board_file = board_file; this.board_re_ref = board_re_ref; this.board_re_lev = board_re_lev; this.board_re_seq = board_re_seq; this.board_readcount = board_readcount; this.board_date = board_date; } public int getBoard_num() { return board_num; } public void setBoard_num(int board_num) { this.board_num = board_num; } public String getBoard_id() { return board_id; } public void setBoard_id(String board_id) { this.board_id = board_id; } public String getBoard_subject() { return board_subject; } public void setBoard_subject(String board_subject) { this.board_subject = board_subject; } public String getBoard_content() { return board_content; } public void setBoard_content(String board_content) { this.board_content = board_content; } public String getBoard_file() { return board_file; } public void setBoard_file(String board_file) { this.board_file = board_file; } public int getBoard_re_ref() { return board_re_ref; } public void setBoard_re_ref(int board_re_ref) { this.board_re_ref = board_re_ref; } public int getBoard_re_lev() { return board_re_lev; } public void setBoard_re_lev(int board_re_lev) { this.board_re_lev = board_re_lev; } public int getBoard_re_seq() { return board_re_seq; } public void setBoard_re_seq(int board_re_seq) { this.board_re_seq = board_re_seq; } public int getBoard_readcount() { return board_readcount; } public void setBoard_readcount(int board_readcount) { this.board_readcount = board_readcount; } public String getBoard_date() { return board_date; } public void setBoard_date(String board_date) { this.board_date = board_date; } }

▲BoardDTO.java

package com.board.study; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; public class BoardDAO { private Connection conn; private PreparedStatement ps; private ResultSet rs; public Connection getConn() { String url = “jdbc:oracle:thin:@127.0.0.1:1521:XE”; String user = “hanul”; String password = “0000”; try { Class.forName(“oracle.jdbc.driver.OracleDriver”); conn = DriverManager.getConnection(url, user, password); } catch (Exception e) { e.printStackTrace(); System.out.println(“getConn() Exception!!!”); } return conn; } //getConn() } //class

▲BoardDAO.java

○ Action Interface, ActionForward Class

package com.commons.action; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public interface Action { public ActionForward execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException; }

▲Action.java

package com.commons.action; public class ActionForward { private String path; //View 페이지 경로와 파일명 private boolean isRedirect; //전환 방식 public String getPath() { return path; } public void setPath(String path) { this.path = path; } public boolean isRedirect() { return isRedirect; } public void setRedirect(boolean isRedirect) { this.isRedirect = isRedirect; } }

▲ActionForward.java

○ Library 추가

반응형

3-06 Django로 게시판 만들기 – 게시판 페이지

게시판 만들기

지금부터 웹사이트의 기본인 게시판기능을 차근차근히 만들어보자.

목록 페이지 만들자

게시판의 글 목록이 있는 목록페이지를 만들어보자.

아래의 경로에 blog.html 파일을 만들어준다.

web_study/main/templates/main/blog.html

Blog List

게시판 페이지입니다

페이지를 만들었으면 main 디렉토리 안의 view.py 파일을 만들어

우리가 만든 html 템플릿을 렌더링 해주는 함수를 만들어준다.

즉, 아래의 index 라는 함수는 서버에 요청이 들어왔을 시 index.html 을 렌더링 해서 우리에게 보여주는 역할을 한다.

web_study/main/views.py

from django.shortcuts import render # index.html 페이지를 부르는 index 함수 def index(request): return render(request, ‘main/index.html’) # blog.html 페이지를 부르는 blog 함수 def blog(request): return render(request, ‘main/blog.html’)

이제 이 views.py 에서 만든 함수와 우리가 사용할 url 을 연결해주어야 한다.

main/urls.py 파일을 하나 만들어서 아래와 같이 연결해주자.

from django.urls import path from .views import * app_name=’main’ urlpatterns=[ path(”,index), path(‘blog/’,blog), ]

이제 연결도 다 했으니, 다시 서버를 켜보자.

$ python manage.py runserver

서버를 키면 127.0.0.1:8000 의 주소에 index.html 로 구현한 메인 페이지가 나타나고,

127.0.0.1:8000/blog 로 접속하면 게시판 페이지가 뜰 것이다!

Model 만들기

우리는 게시판을 만들었지만 게시판에 넣을 게시글이 아직 없다. 게시글을 만들어보자 우리가 보통 생각하는 게시글에는 제목, 글 내용, 작성자 등의 여러가지 정보들이 저장된다.

그러면 이 정보들을 어떻게 서버에 저장하고, 어떻게 이용할 수 있을까?

장고에서는 Model 을 지원해준다.

이 모델을 이용해 게시판에서 각각의 게시글이 데이터베이스에 어떻게 저장될지를 정해준다.

다시 말해 모델이란 붕어빵을 만드는 틀이라고 생각하면 편하다.

게시글이라는 틀을 하나 만들면 그 틀을 이용해서 여러가지 게시글(게시글1, 게시글2, …)을 만들고,

만들어진 게시글들을 데이터베이스에 저장할 것이다.

우리가 해볼것은 제목과 내용이 존재하는 간단한 게시글이다.

Post (게시글) 마다 postname (제목), contents (내용)이 존재한다.

이를 파이썬으로 구현해보자

우리는 게시글이라는 하나의 모델을 만들어야 하기 때문에 models.py 로 가보자 web_study/main/models.py

from django.db import models # Create your models here. # 게시글(Post)엔 제목(postname), 내용(contents)이 존재합니다 class Post(models.Model): postname = models.CharField(max_length=50) contents = models.TextField()

모델을 만들었고 이제 이 모델을 데이터베이스에 넣어 장고가 저장할 수 있도록 해준다.

즉, django 의 db에 migrate 해준다.

일반적인 경우 model.py 를 수정했다면 바로바로 migrate 해주어서 우리가 만든 빵틀을 데이터베이스에 저장한다.

Ctrl + C 를 눌러 웹서버를 종료 후 migration

$ python manage.py makemigrations $ python manage.py migrate

Admin 에 권한

관리자( admin )가 게시글( Post )에 접근할 권한을 준다.

게시글 게시, 삭제, 수정, 저장 등 여러 작업을 할 수 있게 해준다.

web_study/main/admin.py

from django.contrib import admin # 게시글(Post) Model을 불러옵니다 from .models import Post # Register your models here. # 관리자(admin)가 게시글(Post)에 접근 가능 admin.site.register(Post)

하지만 우리는 admin 계정이 없어서 확인할 수가 없다. 관리자 계정을 만들어보자!

Superuser 만들기

Superuser 는 django 프로젝트의 모든 app 및 object 를 관리하는 계정이다.

manage.py 를 통해 Superuser 계정이 생성되며

username , email address , 그리고 강한 password 가 필요하다.

& python3 manage.py createsuperuser

아래와 같이 Superuser 계정을 생성한다.

예측하기 쉬운 비밀번호의 경우 django 가 확인해서 재설정 해줘야한다.

서버를 키고 생성한 Superuser 계정을 확인한다.

$ python3 manage.py runserver

http://자신의URL:8000/admin 으로 접속한다.

Superuser 의 아이디와 비밀번호를 입력해 관리자 페이지로 들어간다.

게시글 작성하기

add 버튼을 눌러 게시글을 작성해보자.

게시글을 하나 더 작성해서 2개의 게시글을 만들어보자.

postname 과 contents 를 구분하기 위해 다른 내용으로 작성하자.

현재 코드에서 게시글을 작성하면

게시글 제목이 나오지 않고 Post object(1), (2) 로 나온다.

이를 postname 이 Post object 대신 들어가도록 개선해보자.

이땐 게시글( Post )의 model 을 개선하자.

web_study/main/models.py

from django.db import models # Create your models here. # 게시글(Post)엔 제목(postname), 내용(contents)이 존재합니다 class Post(models.Model): postname = models.CharField(max_length=50) contents = models.TextField() # 게시글의 제목(postname)이 Post object 대신하기 def __str__(self): return self.postname

안의 내용을 알 수 없는 Post Object 대신

게시글( Post )의 제목( postname )으로 바꾸었다.

목록( blog )페이지에 게시판 보여주자

입력한 게시글을 페이지에 띄워보자

web_study/main/views.py

View ( blog 함수)가 Model ( Post 게시글)을 가져온다.

from django.shortcuts import render # View에 Model(Post 게시글) 가져오기 from .models import Post # index.html 페이지를 부르는 index 함수 def index(request): return render(request, ‘main/index.html’) # blog.html 페이지를 부르는 blog 함수 def blog(request): # 모든 Post를 가져와 postlist에 저장합니다 postlist = Post.objects.all() # blog.html 페이지를 열 때, 모든 Post인 postlist도 같이 가져옵니다 return render(request, ‘main/blog.html’, {‘postlist’:postlist})

web_study/main/templates/main/blog.html

Template ( index.html )에 Model ( Post 게시글)을 붙여주자.

(14) 웹사이트 메인 페이지 디자인

728×90

main.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.io.PrintWriter" %> JSP 게시판 웹 사이트 <% String userID = null; if (session.getAttribute("userID") != null){ userID = (String) session.getAttribute("userID"); } %>

웹 사이트 소개

부트스트랩 기반 JSP 페이지에 오신 것을 환영합니다. 임시로 구성된 테스트 페이지입니다. 만나서 반갑습니다!

자세히 알아보기

custom.css

@import url(http://fonts.googleapis.com/earlyaccess/nanumgothic.css); @import url(http://fonts.googleapis.com/earlyaccess/hanna.css); *{ font-family: ‘Nanum Gothic’; } h1 { font-family: ‘Hanna’; }

해당 css 파일을 모든 페이지에 적용하려면

다음과 같은 링크 tag를 html 헤더부에 추가해야 한다.

*action.jsp파일을 제외한 모든 파일(index.jsp, join.jsp, update.jsp, write.jsp, login.jsp)에 적용한다.

join.jsp에 link 태그를 적용

[결과]

728×90

[Web] SNS형 게시판 만들기 프로젝트 (1) – 스토리보드 구성

이번 학기에 웹 프로그래밍 강의를 듣습니다.

예전에 고등학교 시절에 웹 프로그래밍을 간단히 해본 기억이 있어서 부담감은 좀 적긴 한데요.

HTML5, CSS3, JSP를 이번 수업에서 배우게 됩니다.

웹 프로그래밍 수업 최종 프로젝트가 수업을 하면서 진행을 하게 됩니다.

이번 주제는 ‘SNS형 게시판 만들기’입니다.

공부한 걸 복습할 겸 제 프로젝트 기록을 작성해 봅시다.

저희 학교는 웹 프로그래밍을 할 때 Java Server인 JSP를 쓰기로 했기 때문에 eclipse를 활용합니다.

사실 코딩의 전반적인 걸 이클립스로 해야 하지만 이클립스는 너무 버그도 많고 구리기 때문에….

저는 서버가 필요한 상황 아니면 아톰(Atom) 에디터를 활용하겠습니다.

아톰 에디터는 여러가지 플러그인을 설치하면 굉장히 편리합니다.

제가 사용하는 아톰 플러그인이 궁금하시면 제가 작성한 글을 참고해주시길 바랍니다.

[Project/Web] – [Web] 아톰(Atom) 에디터 사용 플러그인

제가 웹 제작을 할 때 고려한 것은 간단하게 아래와 같습니다.

< 고려사항 > 1. 일단 예뻐야 한다. 2. 현실적인 기능 3. 예쁘되 simple해야 한다.

프런트엔드 개발자는 전체적인 사용자에게 주어지는 화면을 잘 구성을 해줘야 합니다.

결국에는 일반인들이 사용할 줄 모르거나 사용자들을 이끌 수 없으면 실패한 디자인이 되게 됩니다.

저는 일단 외관상으로는 예뻐야 하고 제가 좋아하는 것이 심플한 디자인이기 때문에 심플함을 핵심으로 보겠습니다.

기능은 사실 외관 디자인보다는 백엔드 쪽이니까 skip 하겠습니다.

다양한 SNS 사이트들을 돌아보면서 제가 참고한 SNS는 바로 인스타그램입니다.

심플함과 예쁜 디자인을 모두 갖춰서 많은 사용자들이 사용하는 대표 SNS입니다.

사실 인스타그램은 모바일에 최적화된 SNS라 웹 인터페이스는 크게 특별한 것은 없습니다.

하지만 충분히 간단하지만 예쁜 디자인을 살린 웹입니다.

이제 대략적으로 비슷한 디자인을 구상했으니 스토리보드를 디자인해 봅시다.

가장 기본적으로 로그인 페이지입니다. 체크박스를 통해서 관리자 로그인 여부를 확인할 예정입니다.

회원가입, 로그인 두 개로 구분 버튼을 만들 예정입니다.

전체적으로는 메인 화면을 section태그로 설정해서 적당히 픽셀 조절로 가운데에 위치시켜야겠습니다.

회원가입 페이지입니다. 사진을 가져올 수 있게 만들고, 기본적인 선택사항을 입력 가능하게 해 줍니다.

생년월일은 목록 상자로 구현합니다.

일반적으로 로그인을 진행하면 보이는 초기화면입니다.

개인 사진과 닉네임을 설정하면 표기를 해줍니다. 그리고 로그아웃을 하면 맨 처음 페이지로 이동합니다.

게시글의 전체적인 디자인은 인스타그램의 게시글 느낌으로 보이게 할 예정입니다.

사진 게시는 글쎄요…. 어떻게 할지 참 고민이 많습니다.

사실 제일 초라해 보이는 게시글 작성 페이지입니다.

도저히 생각해도 이 이상의 디자인이 생각이 안 납니다.ㅠㅠ

이 쪽 파트를 여러 페이지를 돌아보면서 디자인 구상을 해야겠습니다.

이건 사실 일반 사용자에게는 보일 수 없는 화면입니다.

Master 관리자, 즉 페이지 제작자가 관리자 권한을 부여한 회원에 한해서만 접속이 가능합니다.

회원정보 수정, 삭제가 가능합니다.

관리자 권한 부여 기능은 master 관리자만 할 수 있습니다. 관리자와 master관리자, 일반회원 구분은 Database에서 특정 key값으로 구분을 할까 구상 중입니다.

사실 스토리보드 관련은 별로 작성할 게 많지 않네요. 이미 학교 과제로 제출한 ppt에서 캡처만 떠서 자세한 구상을 적기만 했습니다.

반응형

키워드에 대한 정보 웹 게시판 만들기

다음은 Bing에서 웹 게시판 만들기 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 데이터베이스의 개념과 CRUD 게시판 만들기

  • 데이터베이스
  • DB
  • Database
  • CRUD
  • 게시판
  • 코딩
  • MVC
  • RDB
  • NoSQL
  • 백엔드
  • Backend
  • 프로그래밍
  • 루비온레일즈
  • Ruby on Rails

데이터베이스의 #개념과 #CRUD #게시판 #만들기


YouTube에서 웹 게시판 만들기 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 데이터베이스의 개념과 CRUD 게시판 만들기 | 웹 게시판 만들기, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

Leave a Comment