오늘이라도

[Web] 8. JSP ② : jsp03.jsp ~ jsp05.jsp 본문

취업성공패키지 SW 개발자 교육/Web

[Web] 8. JSP ② : jsp03.jsp ~ jsp05.jsp

upcake_ 2020. 5. 18. 09:34
반응형

https://github.com/upcake/Class_Examples

교육 중에 작성한 예제들은 깃허브에 올려두고 있습니다. 

gif 파일은 클릭해서 보는 것이 정확합니다.


▲jsp03 ~ 04 작동 화면

 

▼jsp03Main.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP03 Main</title>
</head>
<body>
	<form action="jsp03.jsp" method="post">
		첫 번째 수 : <input type="number" name="num1" required="required" /><br />
		두 번째 수 : <input type="number" name="num2" required="required" /><br />
		<input type="submit" value= "계산하기" />
		<input type="reset" value="초기화" />
	</form>
</body>
</html>

 

 

▼jsp03.jsp

<%@page import="com.hanul.study.SumMachine"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!-- 
○ Servlet(Controller)의 역할
	- 클라이언트의 요청을 받는다 : jsp03Main.html에서 전달한 매개 변수 num1과 num2를 가져온다.
	- 비즈니스 로직 : SumMachine Class의 getSum() 메서드를 호출하고 결과를 리턴 받는다.
	- 프레젠테이션 로직 : 결괏값을 출력 ▶ jsp04.jsp 넘겨서 출력 : request.forward()
 -->
<%
int num1 = Integer.parseInt(request.getParameter("num1"));
int num2 = Integer.parseInt(request.getParameter("num2"));

SumMachine sm = new SumMachine();
int sum = sm.getSum(num1, num2);

request.setAttribute("num1", num1); //바인딩(연결) 객체
request.setAttribute("num2", num2);
request.setAttribute("sum", sum);
RequestDispatcher rd = request.getRequestDispatcher("jsp04.jsp");	//페이지 호출
rd.forward(request, response);	//페이지 전환
%>

 

 

▼jsp04.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
	//jsp03.jsp에서 넘겨준 바인딩(연결) 객체를 받는다 ▶ 클래스 타입
	Integer num1 = (Integer) request.getAttribute("num1");
	Integer num2 = (Integer) request.getAttribute("num2");
	Integer sum = (Integer) request.getAttribute("sum");
	%>
	첫 번째 수 : <%=num1 %><br />
	두 번째 수 : <%=num2 %><br />
	두 수 사이의 누적합 : <%=sum %>
</body>
</html>

 

 

▲jsp05 작동화면

 

▼jsp05Main.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP05 Main</title>
</head>
<body>
	<form action="jsp05.jsp" method="post">
		이름 : <input type="text" name="irum" required="required" /><br />
		아이디 : <input type="text" name="id" required="required" /><br />
		비밀번호 : <input type="password" name="pw" required="required" /><br />
		나이 : <input type="number" name="age" required="required" /><br />
		주소 : <input type="text" name="addr" required="required" /><br />
		전화번호 : <input type="text" name="tel" required="required" /><br />
		<input type="submit" value="회원가입" />
		<input type="reset" value="초기화" />
		<input type="button" value="회원 목록 보기" onclick="location.href='jsp06.jsp'" />
	</form>
</body>
</html>

 

 

▼jsp05.jsp

<%@page import="com.hanul.study.MemberDAO"%>
<%@page import="com.hanul.study.MemberDTO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%--
/*
//MVC Project에서 학습했던 Servlet 코드 : 순수 자바코드(POJO)
request.setCharacterEncoding("utf-8");
String irum = request.getParameter("irum");
String id = request.getParameter("id");
String pw = request.getParameter("pw");
int age = Integer.parseInt(request.getParameter("age"));
String addr = request.getParameter("addr");
String tel = request.getParameter("tel");
MemberDTO dto = new MemberDTO(irum, id, pw, age, addr, tel);
*/

request.setCharacterEncoding("utf-8");
MemberDTO dto = new MemberDTO();
dto.setIrum(request.getParameter("irum"));
dto.setId(request.getParameter("id"));
dto.setPw(request.getParameter("pw"));
dto.setAge(Integer.parseInt(request.getParameter("age")));
dto.setAddr(request.getParameter("addr"));
dto.setTel(request.getParameter("tel"));

MemberDAO dao = new MemberDAO();
dao.memberInsert(dto);
--%>

<% request.setCharacterEncoding("utf-8"); %>

<!-- id는 식별자, class에는 패키지명을 포함해서 적는다 -->
<!-- MemberDTO dto = new MemberDTO(); ◀ 같은 역할을 한다 -->
<!-- 액션 태그 내부에서는 이클립스에서 자동 완성 기능을 지원하지 않으므로 액션 태그 밖에서 자동 완성을 시킨다. -->
<jsp:useBean id="dto" class="com.hanul.study.MemberDTO">
	<!-- 모든 파라미터를 받기 위해 와일드 카드 문자(*)를 사용한다 -->
	<jsp:setProperty property="*" name="dto"/>
</jsp:useBean>

<jsp:useBean id="dao" class="com.hanul.study.MemberDAO" />

<%
int succ = dao.memberInsert(dto);
if(succ > 0) {
	out.println("<script>alert('회원가입 성공!');");
	out.println("location.href='jsp05Main.html'; </script>");
} else {
	out.println("<script>alert('회원가입 실패!');");
	out.println("location.href='jsp05Main.html'; </script>");
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

</body>
</html>

 

 

▼MemberDAO.java

package com.hanul.study;

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

public class MemberDAO {
	private Connection conn;		//연결 객체
	private PreparedStatement ps;	//전송 객체
	private ResultSet rs;			//결과 객체
	
	//DB 접속
	public Connection getConn() {
		String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
		String user = "hanul";
		String password = "0000";
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			conn = DriverManager.getConnection(url, user, password);
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("getConn() Exception!!!");
		}
		return conn;
	} //getConn()
	
	//회원가입
	public int memberInsert(MemberDTO dto) {
		conn = getConn();
		String sql = "INSERT INTO member VALUES(?, ?, ?, ?, ?, ?)";
		int succ = 0;
		try {
			ps = conn.prepareStatement(sql);
			ps.setString(1, dto.getIrum());
			ps.setString(2, dto.getId());
			ps.setString(3, dto.getPw());
			ps.setInt(4, dto.getAge());
			ps.setString(5, dto.getAddr());
			ps.setString(6, dto.getTel());
			succ = ps.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("memberInsert() Exception!!!");
		} finally {
			dbClose();
		}
		return succ;
	} //memberInsert()
	
	//DB 접속 해제
	public void dbClose() {
		try {
			if(rs != null) rs.close(); 
			if(ps != null) ps.close();
			if(conn != null) conn.close();
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("dbClose() Exception!!!");
		}
	} //dbClose()
}// class
반응형