오늘이라도
[Web] 8. JSP ② : jsp03.jsp ~ jsp05.jsp 본문
반응형
https://github.com/upcake/Class_Examples
교육 중에 작성한 예제들은 깃허브에 올려두고 있습니다.
gif 파일은 클릭해서 보는 것이 정확합니다.
▼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>
▼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
반응형
'취업성공패키지 SW 개발자 교육 > Web' 카테고리의 다른 글
[Web] 10. JSP ④ : jsp09 ~ 12 : 수정 기능 추가 / JSP, Action Tag, EL 문법 출력 비교 (0) | 2020.05.20 |
---|---|
[Web] 9. JSP ③ : jsp06.jsp ~ jsp08jsp : 삭제 기능 추가, 회원 정보 수정 화면 구성 (0) | 2020.05.19 |
[Web] 7. JSP (0) | 2020.05.15 |
[Web] 6. NCS 평가 프로젝트 : 작성 조건, 도서 정보 입력, 조회, 삭제 구현 (0) | 2020.05.13 |
[Web] 5. 회원 목록 삭제 추가, 정적 페이지 전환, 동적 페이지 전환 : forward(), sendRedirect() (0) | 2020.05.12 |