데일리로그C:
article thumbnail
Published 2023. 2. 1. 18:22
프로젝트1 JAVA/jsp
!!* 일요일
1. 게시판관리 > 모든 view에 댓글 보이게 하기
2. 회원관리 list에서 등급 바로 수정할 수 있게 하기 (취소_)
3. 사용자 view 댓글 수정, 삭제 버튼 작성자 or 관리자한테만 보이게 (사용자 게시판에서만 설정하면 됨)
*!!

!!* 월요일
1. 로그인 전에 프로필에 null 뜨는거 if문 처리하기
2. 부분 선택 삭제 만들기(배열...)
3. 모든 jsp파일에 rs.close() con.close() 등 했는지 확인하기
4. admin 게시판들에 전체선택 전체해제 넣기
5. 댓글 개수....
6. 냥이 백과 한페이지에 해당 메뉴누르면 그 메뉴 뜨게 하기(토글메뉴 없애기)
7. 아이디, 비밀번호 일치하지 않을 때 경고창 띄우기(아이디가 존재하지 않거나 비밀번호가 올바르지 않습니다.)
8. 비밀번호, 비밀번호 확인 란 문구 띄우기
*!!

!!* 화~금
1. 카테고리 누르면 css 적용되게
2. 사용자 view 댓글 수정, 삭제 버튼 작성자 or 관리자한테만 보이게 (사용자 게시판에서만 설정하면 됨)
3. 댓글 개수
4. 프로필 사진 기능 구현
5. write.jsp 에 editor 연동시키기
6. 채팅 구현...
7. 마이페이지 -> 내가 쓴 글 모아보기, 댓글 모아보기, 회원수정, 회원탈퇴 만들기
8. 회원탈퇴 -> DB에는 남겨두되 회원탈퇴 ok 누르면 개인정보들은 null값으로 update되게(중복아이디로 재가입X)
9. 회원관리 > 총 가입자 수 :    , 회원 수:    , 탈퇴 수: 
*!!





!! 구성 !!
∴ 로그인 전

[로그인] [회원가입]
ㄴ> ID PW 찾기, 회원가입


∴ 로그인 후

[로그아웃] [회원수정]


∴ 관리자 로그인 후

[관리자] [로그아웃] [회원수정]


∴ 관리자 상단바

좌 : [관리자 첫페이지] [사용자 첫페이지]
우 : [회원관리] [공지사항관리] [갤러리관리]


∴ DB - blog

member - 회원
notice - bbs (집사놀이터) --> 댓글창 추가
gallery- bbs2(냥이 백과)
free- bbs3(냥이 분양) --> 댓글창 추가
qna - bb4(상담소) --> 댓글창 추가
comment - 댓글(view 안에 넣어야함)

 

DB명 blog

table명 member : 로그인 (만들엇음)

CREATE TABLE member(
`memberid` varchar(20) NOT NULL DEFAULT '',
`password` varchar(20) NOT NULL DEFAULT '',
`name` varchar(20) NOT NULL DEFAULT '',
`email` varchar(50) NOT NULL DEFAULT '',
`phone` varchar(15) DEFAULT '',
`zipcode` varchar(10) default ''
`zipcode1` varchar(255) default ''
`zipcode2` varchar(255) default ''
`zipcode3` varchar(255) default ''
`zipcode4` varchar(255) default ''
`level` varchar(4) NOT NULL DEFAULT '1',
year varchar(4) default ''
month varchar(2) default ''
day varchar(2) default ''
gender varchar(3) default ''
del enum('y','n') default 'n',
PRIMARY KEY (`memberid`)
);


table명 notice : 집사놀이터 (만들었음)

CREATE TABLE notice (
uid int(11) NOT NULL AUTO_INCREMENT,
id varchar(20) NOT NULL DEFAULT '',
name varchar(20) NOT NULL DEFAULT '',
subject varchar(100) NOT NULL DEFAULT '',
comment text,
signdate varchar(30) DEFAULT '',
ref int(11) DEFAULT '0',
gongji enum('1','2','3') DEFAULT '2',
file1 varchar(40) DEFAULT '',
file1_o varchar(40) DEFAULT '',
file1_s varchar(40) DEFAULT '',
fid int(11) default 0,
thread varchar(20) DEFAULT '',
PRIMARY KEY (uid)
) ;

table명 gallery : 냥이 백과 (만들었음)

CREATE TABLE gallery(
uid int(11) NOT NULL AUTO_INCREMENT,
id varchar(20) NOT NULL DEFAULT '',
name varchar(20) NOT NULL DEFAULT '',
subject varchar(100) NOT NULL DEFAULT '',
comment text,
signdate varchar(30) DEFAULT '',
ref int(11) DEFAULT '0',
gongji enum('1','2','3') DEFAULT '2',
file1 varchar(40) DEFAULT '',
file1_o varchar(40) DEFAULT '',
file1_s varchar(40) DEFAULT '',
fid int(11) default 0,
thread varchar(20) DEFAULT '',
PRIMARY KEY (uid)
) ;

table명 free: 냥이 분양 (만들었음)
CREATE TABLE free(
uid int(11) NOT NULL AUTO_INCREMENT,
id varchar(20) NOT NULL DEFAULT '',
name varchar(20) NOT NULL DEFAULT '',
cat_name varchar(20) NOT NULL DEFAULT '',
cat_type varchar(30) NOT NULL DEFAULT '',
cat_color varchar(10) NOT NULL DEFAULT '',
cat_age varchar(20) NOT NULL DEFAULT '',
cat_gender enum('1','2') DEFAULT '1',
area varchar(10) NOT NULL DEFAULT '',
cost varchar(10) NOT NULL DEFAULT '',
subject varchar(100) NOT NULL DEFAULT '',
comment text,
signdate varchar(30) DEFAULT '',
ref int(11) DEFAULT '0',
gongji enum('1','2','3') DEFAULT '2',
file1 varchar(40) DEFAULT '',
file1_o varchar(40) DEFAULT '',
file1_s varchar(40) DEFAULT '',
fid int(11) default 0,
thread varchar(20) DEFAULT '',
phone varchar(15) DEFAULT '',
PRIMARY KEY (uid)
) ;

table명 qna: 냥이 상담소 (만들었음)
CREATE TABLE qna(
uid int(11) NOT NULL AUTO_INCREMENT,
id varchar(20) NOT NULL DEFAULT '',
name varchar(20) NOT NULL DEFAULT '',
subject varchar(100) NOT NULL DEFAULT '',
comment text,
signdate varchar(30) DEFAULT '',
ref int(11) DEFAULT '0',
gongji enum('1','2','3') DEFAULT '2',
file1 varchar(40) DEFAULT '',
file1_o varchar(40) DEFAULT '',
file1_s varchar(40) DEFAULT '',
fid int(11) default 0,
thread varchar(20) DEFAULT '',
PRIMARY KEY (uid)
) ;

table명 comment : 댓글창 (만들었음)

CREATE TABLE comment ( --> com 붙은게 부모임
`uid` int(11) NOT NULL AUTO_INCREMENT,
`com_table` varchar(20) NOT NULL DEFAULT '',
`com_uid` int(11) , // 게시글 번호
`com_id` varchar(20) NOT NULL DEFAULT '',
`com_name` varchar(10) NOT NULL DEFAULT '',
`com_comment` text,
`com_date` varchar(30) NOT NULL DEFAULT '',
file1 varchar(40) DEFAULT '',
file1_o varchar(40) DEFAULT '',
file1_s varchar(40) DEFAULT '',
fid int(11) default 0,
thread varchar(20) DEFAULT '',
PRIMARY KEY (`uid`)
);


∴ 메뉴 / 메뉴-서브메뉴

<tr>	<!-- 주소="/bbs4/list.jsp?code=gallery" -->
    <td colspan="2" id="menu" class="menu"> 
        <div><a href="/bbs/list.jsp?code=notice" class="a1">∞ 집사 놀이터</a></div>   <!--web bb3 게시판 모듈 // 고양이 사진 자랑(게시글)-->
        <div style="height:10px"></div>
        <div><a href="/bbs2/list.jsp?code=gallery" class="a1">∞ 냥이 백과</a></div> 	<!-- bb4 갤러리형 모듈 // 고양이 관련 지식정보(신문)-->
        <div style="height:10px"></div>
        <div><a href="" class="a1">∞ 냥이 무료분양</a></div> <!-- bb4 갤러리형 모듈 // 사용자들이 올림 -->
        <div style="height:10px"></div>
        <div><a href="" class="a1">∞ Q & A </a></div>   <!-- bb6 질답 모듈 // 글만 쓸수있게(첨부 X) --> 
    </td>
</tr>

 

<td colspan="2" id="menu" class="menu"> 
    <div id="menu_box">
        <ul id="menu">
            <li><a href="/bbs/list.jsp?code=notice" class="a1">∞ 집사 놀이터</a></li>  <!--web bb3 게시판 모듈(db notice) // 고양이 사진 자랑(게시글)-->
            <li><a href="#" class="a1" onmouseover="doDisplay()">∞ 냥이 백과</a></li> <!-- bb4 갤러리형 모듈(db gallery) // 고양이 관련 지식정보(신문)-->
                <ul id="submenu" onmouseleave="doStop()">
                    <li><a href="/bbs2/list.jsp?code=gallery" class="a1">∞ 묘종 백과</a></li>
                    <li><a href="#" class="a1">∞ 행동 백과</a></li>
                    <li><a href="#" class="a1">∞ 건강 백과</a></li>
                </ul> 
            <li><a href="/bbs3/list.jsp?code=free" class="a1">∞ 냥이 분양</a></li> <!-- bb4 갤러리형 모듈 // 사용자들, 관리자  올림 -->
            <li><a href="/bbs4/list.jsp?code=qna" class="a1">∞ 냥이 상담소 </a></li>  <!-- bb6 질답 모듈 // 글만 쓸수있게 --> 
        </ul>
    </div>
</td>



<script>
	function doDisplay(){ 	
	    submenu.style.display = 'block';
	}
	function doStop(){ 	
		submenu.style.display = 'none';
	}
</script>

 

<style>
	.menu_bar {
		margin:0px;
		padding:0px;
	}
	
	li {
		list-style:none;
	}
	
	a {
		text-decoration:none;
	}
	
	.menu {
		position: absolute;
	}
	.menu a{
		display:block;
		
	}
	.menu li ul{
		display:none;
	}
	
	.menu li ul.on {
		display:block;
	}
	
</style>


<script>
	$(document).ready(function(){
		$("#menu a.m").click(function(){
			$(this).next().addBack().toggleClass("on").end().find(".m, ul").removeClass("on").end().parent().siblings().find(".m, ul").removeClass("on");
			return false;
		});
	});
</script>

<div class="menu_bar">
<ul id="menu" class="menu">
	<li>∞ 집사 놀이터</li>
	<li><a href="/bbs2/list.jsp?code=gallery" class="m">∞ 냥이 백과</a></li>
		<ul>
			<li>∞ 묘종</li>
			<li>∞ 행동</li>
			<li>∞ 건강</li>
		</ul>
	<li>∞ 냥이 분양</li>
	<li>∞ Q & A</li>
</ul>
</div>

 

  • getParameter("변수명") --> 이전페이지에서 get으로 보낸 변수명 받는거임
  • rs.getString("필드명") --> DB에 저장되어 있는 정보 가져오는거임

 


아이디는 수정못하게 input 막기 --> readonly로!!! (disabled로 하면 값 안넘어감!)



글 쓸 때 엔터처리하는 거(개행처리) --> JSTL jar 파일 설치

1. head.jsp --> JSTL jar 파일 import시키기

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

<%@ include file="/include/dbconnection.jsp" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>


2. view.jsp --> if or while 문에 적기

if(rs.next()) {

	//tb_comment 개행처리
	pageContext.setAttribute("cmt2", tb_comment); // 현재페이지.set(입력)Attribute(속성)
	pageContext.setAttribute("LF", "\n");  // \n : <br>과 동일
    
}

or 

while(rs.next()) {

    //tb_comment 개행처리
    pageContext.setAttribute("cmt2", tb_comment);  // 현재페이지.set(입력)Attribute(속성)
    pageContext.setAttribute("LF", "\n");   // \n : <br>과 동일
      
}


3. view.jsp --> comment
<%=rs.getString("comment")%> 대신 ${fn:replace(cmt2, LF, '<br>')} 적기

<tr>
    <td width=200 height=550 class="td_title">내용</td>
    <td colspan=3 width=400 class="td_comment" class="td_list">
        <%if(!file1.equals("")){ %>
            <img src="/upload/<%=file1%>" style="width:400px; height:400px;"><br>
        <%}%>
        ${fn:replace(cmt2, LF, '<br>')}
    </td>
</tr>

 


<button>
ㄴ> form(action="" ) 으로 실행시키기

<a>
ㄴ> href ="~~.jsp?code=<%=code%> " 로 페이지 이동시키기

<input type="button" >
ㄴ> <input type="button" onclick="join_ok()"> onclick을 써서 함수 실행 --> form으로 실행


form 쓸 때
<form method="get">
<input type="hidden" name=code value="<%=code%>"> -> 꼭 넣어주기


작성자 or 관리자한테만 view.jsp 에서 [수정][삭제] 보이게 설정! --> equals(변수) // equals("문자") 형식임@@!!!!

<%
if(session_level != null && session_level.equals("10")){  // 관리자이거나
%>
    <a href="modify.jsp?code=<%=code%>&uid=<%=uid%>">[수정]</a> &nbsp;
    <span onclick="delete_ok()" style="cursor:pointer">[삭제]</span>
<%		
} else if(session_id != null && session_id.equals(id)){  // 작성자이거나
%>
    <a href="modify.jsp?code=<%=code%>&uid=<%=uid%>">[수정]</a> &nbsp;
    <span onclick="delete_ok()" style="cursor:pointer">[삭제]</span>
<%
} else {
%>
<%	
}
%>


만약에 이름 수정했을 때 반영되게 하고 싶다면
ㄴ> update.jsp 에서 update 구문에 set name = ' "+session_name+" ' 추가하기 (아이디, 이름, 레벨)



갤러리형 모듈 이용한 게시판 ( 10개씩 반복)

<%
	// 일반 & 비밀글
	int numbering = total_record - (page_now-1) *num_per_page;  // uid 와 같은 역할
	int num = 0;  // 설정한 페이지당 게시글 개수만큼 반복시키기 위해 전역변수 선언
	
	while(rs.next()) {
		int uid = rs.getInt("uid");
		String subject = rs.getString("subject");
		String name = rs.getString("name");
		String signdate = rs.getString("signdate").substring(0,10);
		int ref = rs.getInt("ref");
		
		if(subject.length() >= 20) {
			subject = subject.substring(0,20) + "...";
		}
		
		if(num % 10 == 0) { out.print("<tr>");}
	%>
			<td align=center width=60px font-weight=bold><%=numbering%></td>		
			<td class="td_list" >
				<a href="view.jsp?code=<%=code%>&uid=<%=uid%>"><%=subject%></a>
			</td>		
			<td class="td_list" ><%=name %></td>		
			<td class="td_list"><%=signdate %></td>
			<td align=center ><%=ref %></td>
	<%
		if(num % 10 == 9) {out.print("</tr>");}
	
		num++;
		numbering--;
	}
	
	rs.close();
	stmt.close();
	con.close();
	
	if(total_record == 0) {  // 게시물이 없다면
		out.print("<tr><td colspan=5 align=center height=100>게시글이 없습니다.</td></tr>");
	}
	%>


게시판 모듈

<%
	// 일반 & 비밀글
	int numbering = total_record - (page_now-1) *num_per_page;  // 넘버링  uid 와 같은 역할
	
	while(rs.next()) {
		int uid = rs.getInt("uid");
		String gongji = rs.getString("gongji");
		String subject = rs.getString("subject");
		String name = rs.getString("name");
		String signdate = rs.getString("signdate").substring(0,10);
		int ref = rs.getInt("ref");
		
		if(subject.length() >= 20) {
			subject = subject.substring(0,20) + "...";
		}
	%>
	<tr style="height:35px;">
		<td align=center width=60px font-weight=bold><%=numbering%></td>		
		<td class="td_list" >
			<%
			if(gongji.equals("3")) {  // 비밀글이라면
				if(session_level != null && session_level.equals("10")){  // 관리자 볼수있음
			%>
					<a href="view.jsp?code=<%=code%>&uid=<%=uid%>"><%=subject%></a>
					&nbsp;&nbsp;<img src="img/icon_secret.gif">
			<%		
				} else if(session_id != null && session_id.equals("id")){  // 작성자 볼수있음
			%>
					<a href="view.jsp?code=<%=code%>&uid=<%=uid%>"><%=subject%></a>
					&nbsp;&nbsp;<img src="img/icon_secret.gif">
			<%
				} else {   // 그 외 사람들 못봄(제목만 보이게)
			%>
					<%=subject%>
					&nbsp;&nbsp;<img src="img/icon_secret.gif">
			<%
				}
			} else { // 일반, 공지글이라면
			%>
				<a href="view.jsp?code=<%=code%>&uid=<%=uid%>"><%=subject%></a>
			<%
			}
			%>
		</td>		
		<td class="td_list" ><%=name %></td>		
		<td class="td_list"><%=signdate %></td>
		<td align=center ><%=ref %></td>
	<%
		numbering--;
	}
	rs.close();
	stmt.close();
	con.close();
	
	if(total_record == 0) {  // 게시물이 없다면
		out.print("<tr><td colspan=5 align=center height=100>게시글이 없습니다.</td></tr>");
	}
	%>



갤러리형 모듈

<table border=1 style="border-collapse : collapse;">
	<tr>
		<td>
			<table border=1 >
				<tr>
					<td>이미지</td>
					<td> 
						<table>
							<tr>
								<td colspan="2">제목</td>
							</tr>
							<tr>
								<td colspan="2">작성자</td>
							</tr>
							<tr>
								<td>조회수</td>
								<td>작성일</td> 
							</tr>
						</table>
					</td>
				</tr>
			</table>
		</td>
		<td>
			<table border=1 width=600px>
				<tr>
					<td><img src="/img/01.jpeg" style="width:250px; height:150px;"></td>
					<td> 
						<table border=1>
							<tr>
								<td colspan="2">먼치킨 나폴레옹, 다리가 짧은 닥스훈트 고양이!</td>
							</tr>
							<tr>
								<td colspan="2">망밍</td>
							</tr>
							<tr>
								<td>조회수: 3</td>
								<td>2023-02-03</td>
							</tr>
						</table>
					</td>
				</tr>
			</table>
		</td>
	</tr>
</table>


세로 갤러리형 모듈

<td>
    <table border=1 width=300px>
        <tr>
            <td colspan="2" align=center> 
                <img class="cat_img" src="/img/02.jpeg" >
            </td>
        </tr>
        <tr>
            <td colspan="2" class="cat_subject"> 
                털이 없는 고양이 스핑크스, 종류와 특징은?
            </td>
        </tr>	
        <tr>
            <td colspan="2"  class="cat_name">망밍</td>
        </tr>
        <tr>
            <td class="cat_ref"><img src="img/ref02.PNG">5</td>
            <td class="cat_ref">2023-02-03</td> 
        </tr>
    </table>
</td>

 


더보기 버튼

<!-- 더보기 버튼 -->
<table>
	<tr>
		<td class="more" ><a href="#" id="load" class="load">더보기</a></td>
	</tr>
</table>

<style>
	.more_bt {
		display:none;
	}
	
	.more {
		border:1px solid #FC9345;
		background-color: #FC9345;
		color:white;
		width:80px;
	}
</style>

<script>
	$(function(){
		$(".more_bt").slice(0,2).show(); // 초기갯수(최초 2개 선택)
		$("#load").click(function(e){ //클릭시 more 나오기
			e.preventDefault();
			$(".more_bt:hidden").slice(0,2).show(); // 클릭시 more 갯수 지정(숨김 설정된 다음 2개 선택해서 표시)
			if($(".more_bt:hidden").length ==0){  //컨텐츠 남아있는지 확인
				alert("더이상 게시글이 없습니다."); // 남은게 없을 시 경고창
			}
		});
	});
</script>

 




'JAVA > jsp' 카테고리의 다른 글

카테고리별로 나누기(페이지이동X)  (0) 2023.02.13
비밀번호 일치 유무 알려주기  (0) 2023.02.13
프로젝트(230130)  (0) 2023.01.30
모달창  (0) 2023.01.30
bb5 복습  (0) 2023.01.29
profile

데일리로그C:

@망밍

포스팅이 도움됐다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...