주제: 벤치 마킹
원하는 사이트 벤치마킹
사이트의 100%기능 모두 구현
사이트맵 구성
역할분담(개인당 2개씩 먼저)
'jsp' 카테고리의 다른 글
파일 업로드 (0) | 2014.07.24 |
---|---|
숙제(빨간색 추가) (0) | 2014.07.23 |
회원가입 게시판 응용 (0) | 2014.07.21 |
게시판 (0) | 2014.07.18 |
board (0) | 2014.07.17 |
주제: 벤치 마킹
원하는 사이트 벤치마킹
사이트의 100%기능 모두 구현
사이트맵 구성
역할분담(개인당 2개씩 먼저)
파일 업로드 (0) | 2014.07.24 |
---|---|
숙제(빨간색 추가) (0) | 2014.07.23 |
회원가입 게시판 응용 (0) | 2014.07.21 |
게시판 (0) | 2014.07.18 |
board (0) | 2014.07.17 |
form
method="post"
post값만 사용 가능
enctype="multipart/form-data
method와 enctype가 들어가야 파일 업로드 가능
위 파일을 WEB-INF폴더 lib폴더에 복사
form.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<form method="post" action="formPro.jsp" enctype="multipart/form-data">
파일 업로드<input type="file" name="upload" />
작성자<input type="text" name="name"/>
<input type="submit" value="전송"/>
</form>
formPro.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ page import="com.oreilly.servlet.MultipartRequest" %>
<%@ page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy" %>
<%@ page import="java.io.*" %>
<%
String save = "d://save//";
int size=1024*1024*5;
String enc="euc-kr";
DefaultFileRenamePolicy de = new DefaultFileRenamePolicy();
MultipartRequest multi = new MultipartRequest(request, save,size,enc,de);
File file =multi.getFile("upload");
String type = multi.getContentType("upload");
%>
업로드 파일의 크기 =<%=file.length() %><br/>
업로드 파일의 타입 = <%=type%><br/>
업로드 파일의 이름 = <%=multi.getFilesystemName("upload") %><br/>
업로드 파일의 원본이름 = <%=multi.getOriginalFileName("upload") %><br/>
파라미터 확인 = <%=multi.getParameter("name") %>
팀프로젝트 (0) | 2014.07.24 |
---|---|
숙제(빨간색 추가) (0) | 2014.07.23 |
회원가입 게시판 응용 (0) | 2014.07.21 |
게시판 (0) | 2014.07.18 |
board (0) | 2014.07.17 |
BoardDBBean.java 파일에서
public int getArticleCount() throws Exception {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
int x=0;
try {
conn = getConnection();
pstmt = conn.prepareStatement("select count(*) from board");
rs = pstmt.executeQuery();
if (rs.next()) {
x= rs.getInt(1);
}
} catch(Exception ex) {
ex.printStackTrace();
} finally {
if (rs != null) try { rs.close(); } catch(SQLException ex) {}
if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {}
if (conn != null) try { conn.close(); } catch(SQLException ex) {}
}
return x;
}
를 복사해서
public int getArticleCount(String id) throws Exception {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
int x=0;
try {
conn = getConnection();
pstmt = conn.prepareStatement("select count(*) from board where writer=?");
pstmt.setString(1,id);
rs = pstmt.executeQuery();
if (rs.next()) {
x= rs.getInt(1);
}
} catch(Exception ex) {
ex.printStackTrace();
} finally {
if (rs != null) try { rs.close(); } catch(SQLException ex) {}
if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {}
if (conn != null) try { conn.close(); } catch(SQLException ex) {}
}
return x;
}
mylist.jsp
List articleList = null;
BoardDBBean dbPro = BoardDBBean.getInstance();
String id = (String)session.getAttribute("memId");
count = dbPro.getArticleCount(id);
if (count > 0) {
articleList = dbPro.getArticles(startRow, endRow, id);
}
number=count-(currentPage-1)*pageSize;
sql
select *from board where writer=? order by reg_date;
boardDbbean.java
public List getArticles(String id) throws Exception {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
List articleList=null;
try {
conn = getConnection();
pstmt = conn.prepareStatement("select * from board where writer=? order by reg_date");
pstmt.setString(1, id);
rs = pstmt.executeQuery();
if (rs.next()) {
articleList = new ArrayList();
do{
BoardDataBean article= new BoardDataBean();
article.setNum(rs.getInt("num"));
article.setWriter(rs.getString("writer"));
article.setEmail(rs.getString("email"));
article.setSubject(rs.getString("subject"));
article.setPasswd(rs.getString("passwd"));
article.setReg_date(rs.getTimestamp("reg_date"));
article.setReadcount(rs.getInt("readcount"));
article.setRef(rs.getInt("ref"));
article.setRe_step(rs.getInt("re_step"));
article.setRe_level(rs.getInt("re_level"));
article.setContent(rs.getString("content"));
article.setIp(rs.getString("ip"));
articleList.add(article);
}while(rs.next());
}
} catch(Exception ex) {
ex.printStackTrace();
} finally {
if (rs != null) try { rs.close(); } catch(SQLException ex) {}
if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {}
if (conn != null) try { conn.close(); } catch(SQLException ex) {}
}
return articleList;
}
public List getArticles(int start, int end, String id) throws Exception {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
List articleList=null;
try {
conn = getConnection();
pstmt = conn.prepareStatement(
"select num,writer,email,subject,passwd,reg_date,ref,re_step,re_level,content,ip,readcount,r "
+
"from (select num,writer,email,subject,passwd,reg_date,ref,re_step,re_level,content,ip,readcount,rownum r " +
"from (select num,writer,email,subject,passwd,reg_date,ref,re_step,re_level,content,ip,readcount " +
"from board order by ref desc, re_step asc) order by ref desc, re_step asc ) where r >= ? and r <= ? ");
pstmt.setInt(1, start);
pstmt.setInt(2, end);
rs = pstmt.executeQuery();
if (rs.next()) {
articleList = new ArrayList(end);
do{
BoardDataBean article= new BoardDataBean();
article.setNum(rs.getInt("num"));
article.setWriter(rs.getString("writer"));
article.setEmail(rs.getString("email"));
article.setSubject(rs.getString("subject"));
article.setPasswd(rs.getString("passwd"));
article.setReg_date(rs.getTimestamp("reg_date"));
article.setReadcount(rs.getInt("readcount"));
article.setRef(rs.getInt("ref"));
article.setRe_step(rs.getInt("re_step"));
article.setRe_level(rs.getInt("re_level"));
article.setContent(rs.getString("content"));
article.setIp(rs.getString("ip"));
articleList.add(article);
}while(rs.next());
int size = articleList.size();
if(size > end){
articleList = articleList.subList(start-1, end);
}else{
articleList = articleList.subList(start-1, end);
}
main.jsp
<input type="button" value="회원가입" onclick="javascript:window.location='inputForm.jsp'">
<input type="button" value="게시판" onclick="javascript:window.location='../board/list.jsp'">
<input type="button" value="나의작성글" onclick="javascript:window.location='../board/mylist_1.jsp'">
비밀글
list --->비밀번호 폼----> 확인 ---> conten
deleteForm내용 복사해서 넣음
list.jps
content.jsp ->
passwordCheck.jsp?num=<%=article.getNum()%>&pageNum=<%=currentPage%>
passwordCheck.jsp(deletForm.jsp내용 복사)
<%
String num=request.getParameter("num");
String pageNum= request.getParameter("pageNuM");
%>
<BODY onload="begin()" bgcolor="<%=bodyback_c%>">
<form name="myform" action="passwordPro.jsp" method="post" onSubmit="return checkIt()">
<input type="hidden" name="num" value="<%=num %>" />
<input type="hidden" name=" pageNum" value="<%=pageNum %>"/>
<TABLE cellSpacing=1 cellPadding=1 width="260" border=1 align="center" >
<TR height="30">
<TD colspan="2" align="middle" bgcolor="<%=title_c%>">
<font size="+1" ><b>회원 탈퇴</b></font></TD></TR>
<TR height="30">
passwordPro.jsp
deletePro.jsp에서 내용 복사해서 붙여 넣음
boardDBBean.jsp에서
deleteArticle 내용 복사해서
붙여 넣고
deleteArticle을 passwordCheck로 변경
pstmt = conn.prepareStatement(
"delete from board where num=?");
pstmt.setInt(1, num);
pstmt.executeUpdate();
내용 삭제
passwordPro.jsp
<%@ page contentType="text/html;charset=euc-kr" %>
<%@ page import = "board.BoardDBBean" %>
<%@ page import = "java.sql.Timestamp" %>
<% request.setCharacterEncoding("euc-kr");%>
<%
int num = Integer.parseInt(request.getParameter("num"));
String pageNum = request.getParameter("pageNum");
String passwd = request.getParameter("passwd");
BoardDBBean dbPro = BoardDBBean.getInstance();
int check = dbPro.passwordCheck(num, passwd);
if(check==1){
// response.sendRedirect("content.jsp?num="+num+"&pageNum="+pageNum);
%>
<meta http-equiv="Refresh" content="0;url=list.jsp?pageNum=<%=pageNum%>" >
<% }else{%>
<script language="JavaScript">
<!--
alert("비밀번호가 맞지 않습니다");
history.go(-1);
-->
</script>
<%
}
%>
관리자로 접속시 게시판 볼 때 비밀번호 안넣고 들어가는것
passwordCheck.jsp
<%
String num=request.getParameter("num");
String pageNum= request.getParameter("pageNum");
String id = (String)session.getAttribute("memId");
if(id !=null){
if(id.equals("admin")){
response.sendRedirect("content.jsp?num="+num+"&pageNum="+pageNum);
}
}
%>
<BODY onload="begin()" bgcolor="<%=bodyback_c%>">
수정
1. 로그인 후 게시판 글쓰기 가능
list.jsp
<body bgcolor="<%=bodyback_c%>">
<center><b>글목록(전체 글:<%=count%>)</b>
<%if(session.getAttribute("memId") != null){ %>
<table width="700">
<tr>
<td align="right" bgcolor="<%=value_c%>">
<a href="writeForm.jsp">글쓰기</a>
</td>
</table>
<%} %>
로그인 안되어 있으면 글쓰기 버튼 안나옴
contents.jsp
로그인 안되어 있는 상태에서 주소창에서 주소 써서 들어올 때 로그인 창으로 이동
<td colspan="4" bgcolor="<%=value_c%>" align="right" >
<%if(session.getAttribute("memId") !=null){ %>
<input type="button" value="글수정"
onclick="document.location.href='updateForm.jsp?num=<%=article.getNum()%>&pageNum=<%=pageNum%>'">
<input type="button" value="글삭제"
onclick="document.location.href='deleteForm.jsp?num=<%=article.getNum()%>&pageNum=<%=pageNum%>'">
<input type="button" value="답글쓰기"
onclick="document.location.href='writeForm.jsp?num=<%=num%>&ref=<%=ref%>&re_step=<%=re_step%>&re_level=<%=re_level%>'">
<%} %>
<input type="button" value="글목록"
onclick="document.location.href='list.jsp?pageNum=<%=pageNum%>'">
</td>
로그인 안되어 있으면 글 수정, 글 삭제, 답글쓰기 안됨
로그인 안되어 있는 상태에서 주소창으로 주소써서 들어올 때 로그인 페이지로 이동
writeForm.jsp
<%@ page contentType="text/html; charset=euc-kr" %>
<%@ include file="/view/color.jsp"%>
<html>
<head>
<title>게시판</title>
<link href="style.css" rel="stylesheet" type="text/css">
<script language="JavaScript" src="script.js"></script>
</head>
<%
if(session.getAttribute("memId") == null){%>
<script type="text/javascript">
alret("로그인 후 글쓰기 가능합니다");
window.location="/jsp/member/main.jsp";
</script>
<%} %>
2. 글 작성시 작성자는 현제 로그인된 ID
writeForm.jsp
<tr>
<td width="70" bgcolor="<%=value_c%>" align="center">이 름</td>
<td width="330">
<input type="text" size="10" maxlength="10" name="writer"></td>
</tr>
에서
<td width="70" bgcolor="<%=value_c%>" align="center">이 름</td>
<td width="330"><%=id%>
<input type="hidden" size="10" maxlength="10" name="writer" value="<%=id%>"></td>
로 수정
3. 내가 작성한 글 목록 보기
- select * from board where writer=? order by reg_date
4. 비밀글. 글 읽기시 비밀번호 확인 후 글 읽기
5. 관리자ID 생성 후 관리자는 비밀글 비밀번호 확인없이 읽기 가능
content.jsp
String id =(String)session.getAttribute("memId")
if(id !=null && id.equals("admin")){
}
6. 관리자만 답변 가능 → Q&A
7. 관리자만 글쓰기 가능. - 일반회원은 읽기만 가능 →공지사항
<%String id =(String)session.getAttribute("memId");
if(id !=null && id.equals("11")){ %>
<table width="700">
<tr>
<td align="left" bgcolor="<%=value_c%>">
<a href="write_notice.jsp">공지사항쓰기</a><br/>
</td>
<%} %>
8. 답변 + 댓글 게시판으로 변경 →
9. 자동 로그인 기능 구현 → Cookie
글을 읽었을 때
http://localhost:8000/jsp/board/writeForm.jsp?num=30&ref=30&re_step=0&re_level=0
num=30&ref=30&re_step=0&re_level=0 에서 값이 getparameter에 들어간다
sql
select * from board에서
ref 글 그룹
re_step 답변 글의 순서
re_level 글 답변 그룹
예)
11111111111
▶ 3333333333
▶444444444
▶222222222
▶555555555
▶666666666
aaaaaaaaa
▶ccccccc
▶bbbbbbbbbb
ref re_step re_level
11111111111 1 0 0
222222222 1 3 1
3333333333 1 1 1
444444444 1 2 2
555555555 1 5 2
666666666 1 4 2
aaaaaaaaa 2 0 0
bbbbbbbbbb 2 2 1
ccccccc 2 1 1
숙제(빨간색 추가) (0) | 2014.07.23 |
---|---|
회원가입 게시판 응용 (0) | 2014.07.21 |
board (0) | 2014.07.17 |
쿠키 (0) | 2014.07.14 |
설정 (0) | 2014.07.14 |
sql table board
create table board(
num number primary key,
writer varchar2(100),
subject varchar2(300),
email varchar2(100),
content varchar2(4000),
passwd varchar2(100),
reg_date date,
readcount number default 0,
ip varchar2(100),
ref number,
re_step number,
re_level number
);
desc board;
select count(*) from board 글 갯수 확인
loginForm.jps
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<from action="LoginPro.jsp" method="post">
id <input type="text" name="id"/><br />
id <input type="password" name="pw"/><br />
<input type="submit" value="로그인" />
</from>
LoginPro.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%
String id =request.getParameter("id");
String pw =request.getParameter("pw");
//DB를 통해 ID/PW확인
Cookie cooId = new Cookie("cookieId",id);
Cookie cooPw = new Cookie("cookiePw",pw);
cooId.setMaxAge(60);
cooPw.setMaxAge(60);
response.addCookie(cooId);
response.addCookie(cooPw);
%>
쿠키 생성 완료!
cookieCheck.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<h2>생성된 클라이언트의 쿠키 확인</h2>
<%
Cookie [] cookie = request.getCookies();
if(cookie != null){
for(Cookie coo : cookie){
String key = coo.getName();
String value = coo.getValue();
out.println(key+"="+value+"<br />");
}
}
%>
loginPro.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ page import="test.dao.TestDAO" %>
<%
String id =request.getParameter("id");
String pw =request.getParameter("pw");
//DB를 통해 ID/PW확인
TestDAO dao = TestDAO.getInstance();
boolean result = dao.loginCheck(id,pw);
if(result){
session.setAttribute("sessionId", id);
session.setAttribute("sessionPw", pw);
/*
Cookie cooId = new Cookie("cookieId",id);
Cookie cooPw = new Cookie("cookiePw",pw);
cooId.setMaxAge(60);
cooPw.setMaxAge(60);
response.addCookie(cooId);
response.addCookie(cooPw);
*/
out.println("로그인 되었습니다. 쿠키생성완료");
}else{
out.println("id, pw를 확인하세요!");
}
%>
쿠키 생성 완료!
cookieCheck.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<h2>생성된 클라이언트의 쿠키 확인</h2>
<%
Cookie [] cookie = request.getCookies();
if(cookie != null){
for(Cookie coo : cookie){
String key = coo.getName();
String value = coo.getValue();
out.println(key+"="+value+"<br />");
}
}
%>
Attribute→Java
ㄴObject
Parameter-HTML-form
ㄴString
이클립스 -> 서버 ->context.xml
<Resource name="jdbc/orcl"
auth="Container"
type="java.sql.DataSource"
driverClassName="oracle.jdbc.driver.OracleDriver"
loginTimeout="10"
maxWait="5000"
maxActive="30"
username="java17"
password="java17"
testOnBorrow="true"
url="jdbc:oracle:thin:@khserver.iptime.org:7000:orcl" /> <==추가
</Context>
form.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<form action="update.jsp" method="post">
id : <input type ="text" name="id" /><br/>
pw : <input type ="password" name="pw" /><br/>
age : <input type ="text" name="age" /><br/>
<input type ="submit" name="정보수정" /><br/>
</form>
update.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ page import="java.sql.*"%>
<%
String id = request.getParameter("id");
String pw = request.getParameter("pw");
int age = Integer.parseInt(request.getParameter("age"));
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@khserver.iptime.org:7000:orcl";
String user = "java17";
String password="java17";
Connection conn = DriverManager.getConnection(url, user, password);
String sql="update test set age=? where id=? and pw=?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, age);//숫자는 위의 ?에 들아갈 순서
pstmt.setString(2, id);
pstmt.setString(3, pw);
pstmt.executeUpdate();
pstmt.println("수정 되었습니다");
pstmt.close();
conn.close();
%>
쿠키 (0) | 2014.07.14 |
---|---|
설정 (0) | 2014.07.14 |
회원가입 (0) | 2014.07.11 |
Oracle 데이터 연동 (0) | 2014.07.10 |
Oracle-sql (0) | 2014.07.10 |
form.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<form action="insert.jsp" method="post">
id : <input type ="text" name="id" /><br/>
pw : <input type ="password" name="pw" /><br/>
age : <input type ="text" name="age" /><br/>
<input type ="submit" name="회원가입" /><br/>
</form>
insert.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ page import="java.sql.*"%>
<%
String id = request.getParameter("id");
String pw = request.getParameter("pw");
int age = Integer.parseInt(request.getParameter("age"));
Class.forName("oracle.jdbs.driver.OracleDriver");
String url = "jdbc.oracle:thin:@khserver.iptime.org:7000:orcl";
String user = "java17";
String password="java17";
Connection conn = DriverManager.getConnection(url, user, password);
String sql="insert into test(?,?,?,sysdate)";
//?는 위치 홀더 채워 넣어야 할 부분(코드)
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, id);//숫자는 위의 ?에 들아갈 순서
pstmt.setString(2, pw);
pstmt.setInt(3, age);
pstmt.executeUpdate();
out.println(id+"님 가입되었습니다.");
pstmt.close();
conn.close();
%
%>
설정 (0) | 2014.07.14 |
---|---|
정보수정 (0) | 2014.07.11 |
Oracle 데이터 연동 (0) | 2014.07.10 |
Oracle-sql (0) | 2014.07.10 |
가장 많이 사용하는 요소 (0) | 2014.07.09 |