국비 41일차_1

강지수·2024년 2월 14일
0

국비교육

목록 보기
75/97

지난 시간 복습


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 추가


profile
개발자 준비의 준비준비중..

0개의 댓글