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

bro's coding

java.web.model2.mvc.forward 본문

[IT]/java

java.web.model2.mvc.forward

givemebro 2021. 4. 13. 00:06
반응형
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Model2 MVC</title>
</head>
<body>
	<h3>Model2 MVC Basic</h3>
	<ul>
		<li><a href="AllMemberCountServlet">총회원수 조회</a></li>
		<li><a href="findMemberById-form.jsp">회원검색</a>
	</ul>
	<hr>
	<img src="Model2-1.png">
	<br>
	<br>
	<img src="Model2-2.png">
	<br>
	<br>
	<img src="4_forward.png">
</body>
</html>
<%@ 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">
	<%--
		2. 아이디로 회원 검색 
																Controller						Model 				Database 
index.jsp -- findMemberById-form.jsp --request-->  FindMemberByIdServlet	<--> MemberDAO <-->
																	|
																	| Model 연동 
																	| 회원이 존재하면 
																	| request.setAttribute("memberVO",vo)
																	| forward  find-ok-view.jsp
																	| 회원이 존재하지 않으면 
																	| forward  find-fail-view.jsp 
																	|
 																View( find-ok-view.jsp ) 
 																  request.getAttribute("memberVO") 
 																or
 																View (find-fail-view.jsp )
 																 alert() -> 회원검색결과가 존재하지 않습니다 
 																 location.href="findMemberById-form.jsp";
 --%>
	<form action="FindMemberByIdServlet">
		아이디 <input type="text" name="memberId" required="required">
		<button type="submit">검색</button>
	</form>
</body>
</html>

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>find-fail-view</title>
</head>
<body>
	<%-- forward 방식이므로 request가 유지되므로 아래처럼 getParameter(name) 가 가능하다 --%>
	<script type="text/javascript">
	alert("<%=request.getParameter("memberId")%>
		아이디에 대한 회원정보가 존재하지 않습니다");
		location.href = "findMemberById-form.jsp";
	</script>
</body>
</html>

<%@page import="org.kosta.webstudy13.model.MemberVO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>find-ok-view</title>
</head>
<body>
	<%
	MemberVO vo = (MemberVO) request.getAttribute("memberVO");
	%>
	<h3>검색결과</h3>
	아이디
	<%=vo.getId()%><br> 이름
	<%=vo.getName()%><br> 주소
	<%=vo.getAddress()%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>membercount-view</title>
</head>
<body>
	<%-- Controller가 request에 저장한 attribute 정보를 이용해 클라이언트에게 응답한다 --%>
	총 회원수
	<%=request.getAttribute("totalCount")%>
	명
</body>
</html>
package org.kosta.webstudy13.controller;

import java.io.IOException;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.kosta.webstudy13.model.MemberDAO;

/**
 * Servlet implementation class AllMemberCountServlet
 */
@WebServlet("/AllMemberCountServlet")
public class AllMemberCountServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public AllMemberCountServlet() {
		super();
		// TODO Auto-generated constructor stub
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		try {
			MemberDAO dao = new MemberDAO();
			int count = dao.getTotalMemberCount();
			// request 객체에 회원수를 저장한다
			request.setAttribute("totalCount", count);
			// 적절한 이동방식(forward방식)으로 view를 선택하여 이동시켜 클라이언트에게 응답하게 한다
			request.getRequestDispatcher("membercount-view.jsp").forward(request, response);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}
package org.kosta.webstudy13.controller;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.kosta.webstudy13.model.MemberDAO;
import org.kosta.webstudy13.model.MemberVO;

/**
 * Servlet implementation class FindMemberByIdServlet
 */
@WebServlet("/FindMemberByIdServlet")
public class FindMemberByIdServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public FindMemberByIdServlet() {
		super();
		// TODO Auto-generated constructor stub
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println("Find 검색작업");
		// client로부터 검색할 회원의 아이디를 받아온다
		String id = request.getParameter("memberId");
		// Model과 연동, 연동 결과를 반환받는다
		try {
			MemberDAO dao = new MemberDAO();
			MemberVO vo = dao.findMemberById(id);
			String view = null;
			if (vo != null) {// 회원이 존재하면
				view = "find-ok-view.jsp";
				// 검색 결과를 request에 저장한다
				request.setAttribute("memberVO", vo);
			} else {// 회원이 존재하지 않으면
				view = "find-fail-view.jsp";
			}
			request.getRequestDispatcher(view).forward(request, response);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}
package org.kosta.webstudy13.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.webstudy13.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 + "]";
	}

}
반응형

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

java.DisignPattern.Front Controller Pattern  (0) 2021.04.16
java.mvc.member  (0) 2021.04.14
java.DisignPattern.Singleton  (0) 2021.04.14
java.web.model2.mvc.redirect  (0) 2021.04.14
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.web.model1  (0) 2021.04.12
Comments