지난 시간 복습

MVC1 모델

MVC2 모델 : Control 과 View 가 분리되어 있음. 역할 분담의 목표가 있고, 코딩적으로 관리하기 편하지만 전체적으로 이해하기 힘들다.
자바단 만들기

src/main/java 폴더 안에 customer.vo package 생성, Notice.java class 생성
Ctrl+Shift+Y : 소문자로 변환
Ctrl+Shift+X : 대문자로 변환
package customer.vo;
import java.util.Date;
public class Notice {
private String seq;
private String title;
private String writer;
private String content;
private Date regdate;
private int hit;
public String getSeq() {
return seq;
}
public void setSeq(String seq) {
this.seq = seq;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getWriter() {
return writer;
}
public void setWriter(String writer) {
this.writer = writer;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public Date getRegdate() {
return regdate;
}
public void setRegdate(Date regdate) {
this.regdate = regdate;
}
public int getHit() {
return hit;
}
public void setHit(int hit) {
this.hit = hit;
}
}
Notice.java
Dao : Data Access Object, data 와 접속하는 내용이 들어간다는 뜻
view 단으로 가서 view 단에 있던 java 코드를 나눌 예정

noticeRegProc.jsp 에서 Notice 객체 생성

NoticeDao 객체 생성 후 오류 제거를 위해 NoitceDao.java 생성
package customer.dao;
import customer.vo.Notice;
public class NoticeDao {
public void write(Notice n) {
}
}
NoticeDao.java
이후 noticeRegProc.jsp 에 있던 java 단 (글쓰기 기능) 을 모두 NoticeDao.java로 옮겨주기
package customer.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import customer.vo.Notice;
public class NoticeDao {
public void write(Notice n) throws Exception {
/* dbcon */
Class.forName("oracle.jdbc.driver.OracleDriver");
String url="jdbc:oracle:thin:@localhost:1521:xe";
String user="hr";
String pw="123456";
Connection con = DriverManager.getConnection(url,user,pw);
String sql="insert into notices values("
+"(select max(to_number(seq))+1 from notices),"
+"?,'dg',?,systimestamp,0)";
//실행
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1, n.getTitle());
pstmt.setString(2, n.getContent());
pstmt.executeUpdate();
pstmt.close();
con.close();
}
}


Edit, Delete, Detail 모두 Java 단으로 옮겨주기
package customer.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import customer.vo.Notice;
public class NoticeDao {
public void write(Notice n) throws Exception {
/* dbcon */
Class.forName("oracle.jdbc.driver.OracleDriver");
String url="jdbc:oracle:thin:@localhost:1521:xe";
String user="hr";
String pw="123456";
Connection con = DriverManager.getConnection(url,user,pw);
String sql="insert into notices values("
+"(select max(to_number(seq))+1 from notices),"
+"?,'js',?,systimestamp,0)";
//실행
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1, n.getTitle());
pstmt.setString(2, n.getContent());
pstmt.executeUpdate();
pstmt.close();
con.close();
}
public void update(Notice n) throws Exception {
/* dbcon */
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "hr";
String pw = "123456";
Connection conn = DriverManager.getConnection(url,user,pw);
String sql="update notices "
+"set title=?,content=? where seq=?";
//실행
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, n.getTitle());
pstmt.setString(2, n.getContent());
pstmt.setString(3, n.getSeq());
pstmt.executeUpdate();
}
public int delete(Notice n) throws Exception {
/* dbcon */
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "hr";
String pw = "123456";
Connection conn = DriverManager.getConnection(url,user,pw);
String sql="delete from notices where seq=?";
//실행
PreparedStatement pstmt=conn.prepareStatement(sql);
pstmt.setString(1, n.getSeq());
int delcnt = pstmt.executeUpdate();
return delcnt;
}
public Notice getNotice(String seq) throws Exception {
/* dbcon */
Class.forName("oracle.jdbc.driver.OracleDriver");
String url="jdbc:oracle:thin:@localhost:1521:xe";
String user="hr";
String pw="123456";
Connection con = DriverManager.getConnection(url,user,pw);
String sql="select seq,title,writer,content,regdate,hit "+
"from notices where seq="+seq;
//실행
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(sql);
rs.next();
Notice n=new Notice();
n.setSeq(rs.getString("seq"));
n.setTitle(rs.getString("title"));
n.setWriter(rs.getString("writer"));
n.setContent(rs.getString("content"));
n.setRegdate(rs.getDate("regdate"));
n.setHit(rs.getInt("hit"));
rs.close();
stmt.close();
con.close();
return n;
}
public Notice edit(String seq) throws Exception {
/* dbcon */
Class.forName("oracle.jdbc.driver.OracleDriver");
String url="jdbc:oracle:thin:@localhost:1521:xe";
String user="hr";
String pw="123456";
Connection con = DriverManager.getConnection(url,user,pw);
String sql = "select seq,title,writer,content,regdate,hit "+
"from notices where seq="+seq;
//실행
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(sql);
rs.next();
Notice n=new Notice();
n.setSeq(rs.getString("seq"));
n.setTitle(rs.getString("title"));
n.setWriter(rs.getString("writer"));
n.setContent(rs.getString("content"));
n.setRegdate(rs.getDate("regdate"));
n.setHit(rs.getInt("hit"));
return n;
}
}
쿠키는 웹사이트에 접속할 때 생성되는 정보를 임시로 저장하는 파일
쿠키size : 4Kb
쿠키의 목적 : 접속자의 정보를 저장하고 유지하여 쉽게 접속할 수 있도록 정보를 제공

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>kjs</title>
</head>
<body>
<h3>makeCookie.jsp</h3>
<!--
쿠키는 웹사이트에 접속할 때 생성되는 정보를 임시로 저장하는 파일
쿠키size : 4Kb
쿠키의 목적 : 접속자의 정보를 저장하고 유지하여 쉽게 접속할 수 있도록 정보를 제공
-->
<%
Cookie cookie=new Cookie("id","master");
cookie.setMaxAge(60*1);
response.addCookie(cookie);
out.println("쿠키생성됨");
%>
<form action="useCookie.jsp">
<input type="submit" value="쿠키생성" />
</form>
</body>
</html>
mainCookie.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>kjs</title>
</head>
<body>
<h3>useCookie.jsp</h3>
<%
// 쿠키 받아오기
Cookie[] cookies=request.getCookies();
if(cookies!=null){
for(int i=0;i<cookies.length;i++){
if(cookies[i].getName().equals("id")){
out.println("cookie name : "+cookies[i].getName());
out.println("cookie value : "+cookies[i].getValue());
}
}
}
%>
</body>
</html>
useCookie.jsp



maxAge 를 60초로 해뒀기 때문에 1분이 지나면 사라진다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>kjs</title>
</head>
<body>
<h3>login.jsp</h3>
<script>
function loginCheck(ff) {
window.open("login_check.jsp","","width=300,height=200,titlebar=0");
}
</script>
<form action="" name="frm">
<table>
<tr>
<td>아이디 <input type="text" id="id" name="id" size="8" />
</td>
<td rowspan="2"><input type="button" value="login"
onclick="loginCheck(this.form)" /></td>
</tr>
<tr>
<td>암호 <input type="text" id="pwd" name="pwd" size="8" />
</td>
</tr>
</table>
</form>
</body>
</html>
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>kjs</title>
</head>
<body>
<h3>login_check.jsp</h3>
</body>
</html>
login_check.jsp

login 버튼 클릭하면 팝업창으로 띄우기
<script>
idArray = new Array("kang", "kim", "lee");
nameArray = new Array("강태공", "김유신", "리여사");
pwdArray = new Array("111", "222", "333");
function member_check() {
//메인창의 정보가저오기
id = window.opener.document.frm.id.value;
pwd = window.opener.document.frm.pwd.value;
rs = document.getElementById("result");
flag = "n";//찾는 맴버없음
tempStr = "";
pos = 0;//배열의 위치
for (var i = 0; i < idArray.length; i++) {
if ((id == idArray[i]) && (pwd == pwdArray[i])) {
pos = i;
flag = "y";
break;
}
}
if (flag == "y") {
tempStr = "<font color='red'>로그인성공</font>";
tempStr += nameArray[pos] + "님 방가방가";
} else {
tempStr = "<font color='blue'>로그인실패</font>";
tempStr += id + "님 다시 로그인 하세요";
}
rs.innerHTML = tempStr;
}
</script>
<div id="result">"result"</div>
login_check.jsp 에 script 추가

