반응형
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

bro's coding

java.web.model1 본문

[IT]/java

java.web.model1

givemebro 2021. 4. 12. 23:33
반응형



Model1 Architecture 
JSP <--> Java Beans(component) <--> Database 
JSP : client의 요청을 분석하고 Java Beans와 연동해서 적절한 결과를 응답하는 역할 
Java Beans : 자바 클래스들로 구성된 컴포넌트 , DB 연동 로직과 비즈니스 로직을 수행한다 
          ( 참고 : 컴포넌트란 객체들이 상호 연동되어 독립적 기능 단위를 구성할 때 컴포넌트라고 한다)

 

package org.kosta.webstudy12.model;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

// DAO : Data Access Object 데이터베이스 연동 로직을 정의한 객체
public class MemberDAO {
	private String driver = "oracle.jdbc.OracleDriver";
	private String url = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
	private String user = "scott";
	private String pass = "tiger";

	public MemberDAO() throws ClassNotFoundException {
		Class.forName(driver);
	}

	public void closeAll(PreparedStatement pstmt, Connection con) throws SQLException {
		if (pstmt != null)
			pstmt.close();
		if (con != null)
			con.close();
	}

	// 메서드 오버로딩
	public void closeAll(ResultSet rs, PreparedStatement pstmt, Connection con) throws SQLException {
		if (rs != null)
			rs.close();
		closeAll(pstmt, con);
	}

	public int getTotalMemberCount() throws SQLException {
		int count = 0;
		Connection con = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		try {
			con = DriverManager.getConnection(url, user, pass);
			String sql = "select count(*) from member";
			pstmt = con.prepareStatement(sql);
			rs = pstmt.executeQuery();
			if (rs.next())
				count = rs.getInt(1);
		} finally {
			closeAll(rs, pstmt, con);
		}
		return count;
	}

	public MemberVO findMemberById(String id) throws SQLException {
		MemberVO vo = null;
		Connection con = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		try {
			con = DriverManager.getConnection(url, user, pass);
			String sql = "select name,address from member where id=?";
			pstmt = con.prepareStatement(sql);
			pstmt.setString(1, id);
			rs = pstmt.executeQuery();
			if (rs.next()) {
				vo = new MemberVO(id, null, rs.getString(1), rs.getString(2));
			}
		} finally {
			closeAll(rs, pstmt, con);
		}
		return vo;
	}
}
package org.kosta.webstudy12.model;

public class MemberVO {
	private String id;
	private String password;
	private String name;
	private String address;

	public MemberVO() {
		super();
		// TODO Auto-generated constructor stub
	}

	public MemberVO(String id, String password, String name, String address) {
		super();
		this.id = id;
		this.password = password;
		this.name = name;
		this.address = address;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	@Override
	public String toString() {
		return "MemberVO [id=" + id + ", password=" + password + ", name=" + name + ", address=" + address + "]";
	}

}
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Model 1</title>
</head>
<body>
	<h4>Model 1 Architecture(설계양식) 테스트</h4>
	<ul>
		<li><a href="AllMemberCount.jsp">총회원수 조회</a></li>
		<li><a href="findMemberById-form.jsp">회원검색</a>
	</ul>
	<hr>
	<img src="model1.png" width="600">
</body>
</html>
<%@page import="org.kosta.webstudy12.model.MemberDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원검색화면</title>
</head>
<body bgcolor="lime">
	<%
	//초기 방식에 비해 jsp 의 코드량이 감소 , 데이터 액세스 로직 업데이트시 영향이 없다 
	// 초기 jsp 만으로 개발하는 방식에 비해 재사용성이 높다 
	MemberDAO dao = new MemberDAO();
	int count = dao.getTotalMemberCount();
	%>
	총회원수
	<%=count%>명
	<hr>
	<form action="findMemberById-action.jsp">
		아이디 <input type="text" name="memberId" required="required">
		<button type="submit">검색</button>
	</form>
</body>
</html>


<%@page import="org.kosta.webstudy12.model.MemberVO"%>
<%@page import="org.kosta.webstudy12.model.MemberDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>findMemberById-action</title>
</head>
<body>
	<%--		클라이언트로부터 아이디를 전달받는다 
			MemberDAO 의 findMemberById(id) 를 이용해 회원정보를 검색한다 
			회원정보가 존재하면 
			아이디 : java
			이름 : 아이유
			주소 : 오리 
			아이디에 대한 회원정보가 존재하지 않으면 
			javascript alert으로 머머 아이디에 대한 회원정보가 없습니다 
			location.href="findMemberById-form.jsp"; 로 이동시킨다 
 --%>
	<%
	String id = request.getParameter("memberId");
	MemberDAO dao = new MemberDAO();
	MemberVO vo = dao.findMemberById(id);
	if (vo == null) {
	%>
	<script type="text/javascript">
 			alert("<%=id%>
		아이디에 대한 회원정보가 없습니다!");
		location.href = "findMemberById-form.jsp";
	</script>

	<%
	} else {
	%>
	아이디 :
	<%=id%><br> 이름 :
	<%=vo.getName()%><br> 주소 :
	<%=vo.getAddress()%>
	<%
	}
	%>
</body>
</html>

<%@page import="org.kosta.webstudy12.model.MemberDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>총회원수</title>
</head>
<body bgcolor="yellow">
	<%
	//초기 방식에 비해 jsp 의 코드량이 감소 , 데이터 액세스 로직 업데이트시 영향이 없다 
	MemberDAO dao = new MemberDAO();
	int count = dao.getTotalMemberCount();
	%>
	<h4>
		Model1 설계방식 - 총회원수
		<%=count%>
		명
	</h4>
</body>
</html>
반응형

'[IT] > java' 카테고리의 다른 글

java.web.model2.mvc.forward  (0) 2021.04.13
java.web.model2.mvc.forword/redirect  (0) 2021.04.12
java.web.model2.mvc  (0) 2021.04.12
java.web.초기  (0) 2021.04.12
java.Synchronizaation(동기화)  (0) 2021.03.23
java.project.chatting program  (0) 2021.03.23
java.Network.Inner class/Nested class  (0) 2021.03.22
java.Network.EchoProgram(1:1)  (0) 2021.03.19
Comments