일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- OrCAD 다운로드
- database
- 파이썬
- error
- clone
- csv
- PHPStorm
- 단축키
- MySQL
- vscode
- jupyter
- Python
- console창
- github token
- 클론
- 오류
- import data
- visualstudio code
- 데이터베이스
- Visual Studio Code
- cmd
- 에러
- run sql script
- DataGrip
- php
- localhost
- 따옴표 삭제
- 깃 토큰
- github clone
- error 해결
- Today
- Total
개발 노트
9/20 : MVC 모델1 제작(1/3) 본문
9/20 : MVC 모델1 제작(1/3)
hayoung.dev 2022. 10. 4. 02:35webapp > ch03폴더 > menu.jsp(jsp)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<h2> 중 식 메 뉴 </h2>
<ul>
<li> 짜장면 </li>
<li> 짬뽕 </li>
<li> 기스면 </li>
<li> 탕수육 </li>
</ul>
<p> 메뉴를 골라주세요.</p>
webapp > ch03폴더 > ajaxMenu.html(html. jsp로 만들어도 괜찮다.)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
div {
width: 180px;
height: 80px;
margin: 3px;
float: left;
}
</style>
<script type="text/javascript" src="../js/jquery.js"></script>
<script type="text/javascript">
$(function() {
/* .click : #menu1을 클릭하면 */
$('#menu1').click(function() {
$.ajax({
url : 'menu.jsp',
/* 값을 받는 데이터의 타입. function(data)의 data를 html형식으로 받는다는 뜻 */
dataType : 'html',
/* if (httpRequest.readyState==4)
if (httpRequest.status == 200)
가 성공하면 */
/* function(data) : httpRequest.responseText을 한다는 뜻과 같음.
즉 위의 menu.jsp를 실행한 결과값이 data로 들어가는 것임. */
success : function(data) {
$('#msg1').html(data)
}
});
});
$('#menu2').click(function() {
$.ajax({
url : 'menu.jsp',
dataType : 'html',
success : function(data) {
/* 리스트만 골라서 */
$('#msg2').html($(data).find('li'));
}
});
});
});
</script>
</head>
<body>
<div>
<a id="menu1">메뉴선택1</a>
<p>
<span id="msg1"></span>
</div>
<p>
<p>
<p>
<p>
<p>
<p>
<div>
<a id="menu2">메뉴선택2</a>
<p>
<span id="msg2"></span>
</div>
</body>
</html>
출력 결과
메뉴선택1과 메뉴선택2를 누르면 각각 하단 모습이 나온다.
webapp > ch03폴더 > ajaxConfirmId.html(html)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
div {
width: 180px;
height: 80px;
margin: 3px;
float: left;
}
</style>
<script type="text/javascript" src="../js/jquery.js"></script>
<script type="text/javascript">
$(function() {
/* .click : #menu1을 클릭하면 */
$('#menu1').click(function() {
$.ajax({
url : 'menu.jsp',
/* 값을 받는 데이터의 타입. function(data)의 data를 html형식으로 받는다는 뜻 */
dataType : 'html',
/* if (httpRequest.readyState==4)
if (httpRequest.status == 200)
가 성공하면 */
/* function(data) : httpRequest.responseText을 한다는 뜻과 같음.
즉 위의 menu.jsp를 실행한 결과값이 data로 들어가는 것임. */
success : function(data) {
$('#msg1').html(data)
}
});
});
$('#menu2').click(function() {
$.ajax({
url : 'menu.jsp',
dataType : 'html',
success : function(data) {
/* 리스트만 골라서 */
$('#msg2').html($(data).find('li'));
}
});
});
});
</script>
</head>
<body>
<div>
<a id="menu1">메뉴선택1</a>
<p>
<span id="msg1"></span>
</div>
<p>
<p>
<p>
<p>
<p>
<p>
<div>
<a id="menu2">메뉴선택2</a>
<p>
<span id="msg2"></span>
</div>
</body>
</html>
src/main/java > oAjax 패키지 > MemberDao.java
package oAjax;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
// Singleton + DBCP
public class MemberDao {
// Singleton --> Resource 절감
//연결이 1024번이 넘어가면 서비스가 죽을 수 있기 때문에 싱글톤으로 연결을 작성하여 리소스를 절감해준다.
private static MemberDao instance;
// Default
//private로 외부에서 마음대로 인스턴스를 생성하지 못하게 한다.
private MemberDao() {
}
//인스턴스 자체는 써야 하므로 public
//인스턴스를 얻음
public static MemberDao getInstance() {
//인스턴스가 없을 때만 인스턴스를 생성해준다.
if (instance == null) {
instance = new MemberDao();
}
return instance;
}
// DBCP
private Connection getConnection() throws SQLException {
Connection conn = null;
try {
Context ctx = new InitialContext();
/* META-INF의 context.xml로 연결 */
/* 이렇게 사용하면 똑같은 걸 반복하지 않아도 되고, 메모리도 절감할 수 있다. */
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/OracleDB");
conn = ds.getConnection();
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
//밖에서 써야 하므로 public
public int confirm(String id) throws SQLException {
int result = 1;
// member1 if aa면 1
// 없으면 0
Connection conn = null;
String sql = "select id from member1 where id=?";
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn = getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, id);
rs = pstmt.executeQuery();
if (rs.next()) result = 1;
else result = 0;
} catch (Exception e) {
System.out.println(e.getMessage());
} finally {
if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
}
return result;
}
}
webapp > ch03폴더 > confirmId.jsp
<%@page import="oAjax.MemberDao"%>
<%@ 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>
<!-- 이것은 모델1이다. 모델2는 이 내용이 서버(src/main/java)에 들어가있다. -->
<%
String id = request.getParameter("id");
MemberDao memberDao = MemberDao.getInstance();
// member1 을 읽음.
// id 존재 --> return 1
// id 존재X --> return 0
int result = memberDao.confirm(id);
if (result == 0) {
out.println("사용할 수 있는 ID입니다");
} else {
out.println("이미 있는 아이디니 다른 것을 사용하세요");
}
%>
</body>
</html>
출력 결과
아이디에 kk2를 입력하고 중복체크를 누르면
아이디에 aaa를 입력하고 중복체크를 누르면
멤버테이블 추가
--------------------------------------------------------
-- 파일이 생성됨 - 화요일-9월-20-2022
--------------------------------------------------------
--------------------------------------------------------
-- DDL for Table MEMBER1
--------------------------------------------------------
CREATE TABLE "SCOTT"."MEMBER1"
( "ID" VARCHAR2(10 BYTE),
"PASSWORD" VARCHAR2(20 BYTE),
"NAME" VARCHAR2(100 BYTE),
"REG_DATE" DATE
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "SYSTEM" ;
REM INSERTING into SCOTT.MEMBER1
SET DEFINE OFF;
Insert into SCOTT.MEMBER1 (ID,PASSWORD,NAME,REG_DATE) values ('kk2','1','대조영',to_date('22/09/15','RR/MM/DD'));
Insert into SCOTT.MEMBER1 (ID,PASSWORD,NAME,REG_DATE) values ('kk3','1','김춘추',to_date('22/09/15','RR/MM/DD'));
--------------------------------------------------------
-- DDL for Index PK_MEMBER1_ID
--------------------------------------------------------
CREATE UNIQUE INDEX "SCOTT"."PK_MEMBER1_ID" ON "SCOTT"."MEMBER1" ("ID")
PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "SYSTEM" ;
--------------------------------------------------------
-- Constraints for Table MEMBER1
--------------------------------------------------------
ALTER TABLE "SCOTT"."MEMBER1" ADD CONSTRAINT "PK_MEMBER1_ID" PRIMARY KEY ("ID")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "SYSTEM" ENABLE;
webapp > ch03폴더 > ajaxSetup.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="../js/jquery.js"></script>
<script type="text/javascript">
$(function() {
//클릭하면 발생하는 이벤트
$('#sub').click(function(){
// 첫번째 방법
// var name = $('#name').val();
// var pass = $('#pass').val();
// var sendData = 'name=' + name + '&pass=' + pass;
// 두번째 방법(위의 방법을 한 번에 할 수 있음.)
var sendData = $('form').serialize();
alert('sendData->'+sendData);
$.ajaxSetup({
type : 'GET',
url : 'checkin.jsp',
dataType : 'text',
success : function(data1) {
$('#msg').html(data1) ;
}
});
$.ajax({
data : sendData
});
});
});
</script>
</head>
<body>
<form>
이름 : <input type="text" name="name" id="name"> <p>
암호 : <input type="password" name="pass" id="pass"> <p>
<!-- 타입이 button이기 때문에 제출하는 것이 아니라 form(위의 내용)을 실행하는 것이다. -->
<input type="button" id="sub" value="확인">
</form>
<div id="msg"></div>
</body>
</html>
webapp > ch03폴더 > checkin.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
이름은 ${param.name }이군요 방가 ?<p>
<c:choose>
<c:when test="${param.name=='admin' && param.pass=='1234' }">
당신은 모든 권한이 있습니다
</c:when>
<c:otherwise>
당신은 권한이 없습니다
</c:otherwise>
</c:choose>
</body>
</html>
출력 결과
이름과 암호를 틀리게 넣으면
이름에 admin과 암호에 1234를 넣으면
[och12] : 최종 MVC 모델1
1. oracle에서 하단쿼리 실행하여 데이터 생성
--------------------------------------------------------
-- DDL for Table MEMBER2
--------------------------------------------------------
CREATE TABLE "SCOTT"."MEMBER2"
( "ID" VARCHAR2(12 BYTE),
"PASSWD" VARCHAR2(12 BYTE),
"NAME" VARCHAR2(20 BYTE),
"ADDRESS" VARCHAR2(50 BYTE),
"TEL" VARCHAR2(20 BYTE),
"REG_DATE" DATE
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "SYSTEM" ;
REM INSERTING into SCOTT.MEMBER2
SET DEFINE OFF;
Insert into SCOTT.MEMBER2 (ID,PASSWD,NAME,ADDRESS,TEL,REG_DATE) values ('aa','1234','김유신','서라벌1','010-2222-3334',to_date('22/02/25','RR/MM/DD'));
Insert into SCOTT.MEMBER2 (ID,PASSWD,NAME,ADDRESS,TEL,REG_DATE) values ('bb','1234','강감찬','거란','010-3333-7777',to_date('22/02/25','RR/MM/DD'));
Insert into SCOTT.MEMBER2 (ID,PASSWD,NAME,ADDRESS,TEL,REG_DATE) values ('kk2','kk2','홍길동 2','서울 강남구 2번지','02-1111-2224',to_date('22/04/25','RR/MM/DD'));
Insert into SCOTT.MEMBER2 (ID,PASSWD,NAME,ADDRESS,TEL,REG_DATE) values ('hh','1234','신유겸','개성','010-6667-8989',to_date('22/02/25','RR/MM/DD'));
Insert into SCOTT.MEMBER2 (ID,PASSWD,NAME,ADDRESS,TEL,REG_DATE) values ('ahn','1234','안예은','케이팝','111-222-3333',to_date('22/04/22','RR/MM/DD'));
Insert into SCOTT.MEMBER2 (ID,PASSWD,NAME,ADDRESS,TEL,REG_DATE) values ('kk0','kk0','홍길동 0','서울 강남구 0번지','02-1111-2222',to_date('22/04/25','RR/MM/DD'));
Insert into SCOTT.MEMBER2 (ID,PASSWD,NAME,ADDRESS,TEL,REG_DATE) values ('kk1','kk1','홍길동 1','서울 강남구 1번지','02-1111-2223',to_date('22/04/25','RR/MM/DD'));
Insert into SCOTT.MEMBER2 (ID,PASSWD,NAME,ADDRESS,TEL,REG_DATE) values ('kk3','kk3','홍길동 3','서울 강남구 3번지','02-1111-2225',to_date('22/04/25','RR/MM/DD'));
Insert into SCOTT.MEMBER2 (ID,PASSWD,NAME,ADDRESS,TEL,REG_DATE) values ('kk5','kk5','홍길동 5','서울 강남구 5번지','02-1111-2227',to_date('22/04/25','RR/MM/DD'));
Insert into SCOTT.MEMBER2 (ID,PASSWD,NAME,ADDRESS,TEL,REG_DATE) values ('kk7','kk7','홍길동 7','서울 강남구 7번지','02-1111-2229',to_date('22/04/25','RR/MM/DD'));
Insert into SCOTT.MEMBER2 (ID,PASSWD,NAME,ADDRESS,TEL,REG_DATE) values ('kk8','kk8','홍길동 8','서울 강남구 8번지','02-1111-2230',to_date('22/04/25','RR/MM/DD'));
Insert into SCOTT.MEMBER2 (ID,PASSWD,NAME,ADDRESS,TEL,REG_DATE) values ('kk9','kk9','홍길동 9','서울 강남구 9번지','02-1111-2231',to_date('22/04/25','RR/MM/DD'));
Insert into SCOTT.MEMBER2 (ID,PASSWD,NAME,ADDRESS,TEL,REG_DATE) values ('kkk','1234','김유신','서라벌','010-2222-3333',to_date('22/04/25','RR/MM/DD'));
--------------------------------------------------------
-- DDL for Index SYS_C007019
--------------------------------------------------------
CREATE UNIQUE INDEX "SCOTT"."SYS_C007019" ON "SCOTT"."MEMBER2" ("ID")
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "SYSTEM" ;
--------------------------------------------------------
-- Constraints for Table MEMBER2
--------------------------------------------------------
ALTER TABLE "SCOTT"."MEMBER2" ADD PRIMARY KEY ("ID")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "SYSTEM" ENABLE;
ALTER TABLE "SCOTT"."MEMBER2" MODIFY ("TEL" NOT NULL ENABLE);
ALTER TABLE "SCOTT"."MEMBER2" MODIFY ("NAME" NOT NULL ENABLE);
ALTER TABLE "SCOTT"."MEMBER2" MODIFY ("PASSWD" NOT NULL ENABLE);
2. 회원확인 페이지와 main 페이지 제작
src/main/java > Member.java(class)
package och12;
import java.util.Date;
public class Member {
private String id;
private String passwd;
private String name;
private String address;
private String tel;
private Date reg_date;
private String img_path;
public String getImg_path() {
return img_path;
}
public void setImg_path(String img_path) {
this.img_path = img_path;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPasswd() {
return passwd;
}
public void setPasswd(String passwd) {
this.passwd = passwd;
}
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;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public Date getReg_date() {
return reg_date;
}
public void setReg_date(Date reg_date) {
this.reg_date = reg_date;
}
}
src/main/java > MemberDao.java(class)
package och12;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
// singleton + DBCP
public class MemberDao {
private static MemberDao instance;
//생성자는 외부에서 접근하지 못하도록 private으로 만든다.
private MemberDao() {
}
public static MemberDao getInstance() {
if(instance == null) {
instance = new MemberDao();
}
return instance;
}
private Connection getConnection() throws SQLException {
Connection conn = null;
try {
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/OracleDB");
conn = ds.getConnection();
} catch (Exception e) {
// TODO Auto-generated catch block
// e.printStackTrace();
System.out.println(e.getMessage());
}
return conn;
}
public int check(String id, String passwd) throws SQLException {
int result = 0;
Connection conn = null;
//id를 가지고 passwd를 가져온다.
String sql = "select passwd from member2 where id=?";
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn = getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, id);
rs = pstmt.executeQuery();
// id가 맞다면
if (rs.next()) {
//passwd를 가져온다.
String dbPasswd = rs.getString(1);
//passwd가 맞다면 result가 1이다.
if (dbPasswd.equals(passwd)) result = 1;
//id가 맞고 passwd가 틀리면 result가 0
else result = 0;
//id가 틀리면 result가 -1
} else result = -1;
} catch(Exception e) {
System.out.println(e.getMessage());
} finally {
if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
}
return result;
}
public int confirm(String id) throws SQLException {
int result = 0;
Connection conn = null;
String sql = "select id from member2 where id=?";
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn = getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, id);
rs = pstmt.executeQuery();
if (rs.next()) result = 1;
else result = 0;
} catch(Exception e) {
System.out.println(e.getMessage());
} finally {
if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
}
return result;
}
public int insert(Member member) throws SQLException {
int result = 0;
Connection conn = null;
String sql = "insert into member2 values(?,?,?,?,?,sysdate)";
PreparedStatement pstmt = null;
try {
conn = getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, member.getId());
pstmt.setString(2, member.getPasswd());
pstmt.setString(3, member.getName());
pstmt.setString(4, member.getAddress());
pstmt.setString(5, member.getTel());
result = pstmt.executeUpdate();
} catch(Exception e) { System.out.println(e.getMessage());
} finally {
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
}
return result;
}
// Image 추가
public int insert3(Member member) throws SQLException {
int result = 0;
Connection conn = null;
String sql = "insert into member2 values(?,?,?,?,?,sysdate,?)";
PreparedStatement pstmt = null;
try {
conn = getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, member.getId());
pstmt.setString(2, member.getPasswd());
pstmt.setString(3, member.getName());
pstmt.setString(4, member.getAddress());
pstmt.setString(5, member.getTel());
pstmt.setString(6, member.getImg_path());
result = pstmt.executeUpdate();
} catch(Exception e) { System.out.println(e.getMessage());
} finally {
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
}
return result;
}
public List<Member> list() throws SQLException {
List<Member> list = new ArrayList<Member>();
Connection conn = null;
String sql = "select * from member2";
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn = getConnection();
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
if (rs.next()) {
do {
Member member = new Member();
member.setId(rs.getString(1));
member.setPasswd(rs.getString(2));
member.setName(rs.getString(3));
member.setAddress(rs.getString(4));
member.setTel(rs.getString(5));
member.setReg_date(rs.getDate(6));
list.add(member);
} while(rs.next());
}
} catch(Exception e) {
System.out.println(e.getMessage());
} finally {
if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
}
return list;
}
public Member select(String id) throws SQLException {
Member member = new Member();
Connection conn = null;
String sql = "select * from member2 where id=?";
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn = getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, id);
rs = pstmt.executeQuery();
if (rs.next()) {
member.setId(rs.getString(1));
member.setPasswd(rs.getString(2));
member.setName(rs.getString(3));
member.setAddress(rs.getString(4));
member.setTel(rs.getString(5));
member.setReg_date(rs.getDate(6));
member.setImg_path(rs.getString(7));
}
} catch(Exception e) {
System.out.println(e.getMessage());
} finally {
if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
}
return member;
}
public int update(Member member) throws SQLException {
int result = 0;
Connection conn = null;
System.out.println("getId->"+member.getId());
System.out.println("getName->"+member.getName());
System.out.println("getAddress->"+member.getAddress());
String sql = "update member2 set passwd=?,name=?,address=?, tel=? where id=?";
System.out.println("sql->"+sql);
PreparedStatement pstmt = null;
try {
conn = getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, member.getPasswd());
pstmt.setString(2, member.getName());
pstmt.setString(3, member.getAddress());
pstmt.setString(4, member.getTel());
pstmt.setString(5, member.getId());
result = pstmt.executeUpdate();
} catch(Exception e) {
System.out.println(e.getMessage());
} finally {
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
}
return result;
}
public int delete(String id, String passwd) throws SQLException {
int result = 0;
Connection conn = null;
result = check(id, passwd);
if (result != 1) return result;
String sql = "delete from member2 where id=?";
PreparedStatement pstmt = null;
try {
conn = getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, id);
result = pstmt.executeUpdate();
} catch(Exception e) {
System.out.println(e.getMessage());
} finally {
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
}
return result;
}
}
webapp > loginForm.jsp(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>
<style type="text/css">
table {
background-color: pink;
}
tr {
font-size: 24 ;
}
</style>
</head>
<body>
<h2>로그인</h2>
<form action="loginPro.jsp" method="post">
<table border="1">
<tr><td>아이디</td><td><input type="text" name="id" class="id" required="required"></td></tr>
<tr><td>암호</td><td><input type="password" name="passwd" required="required"></td></tr>
<tr><td><input type="submit" value="확인"></td>
<td><input type="reset" value="취소" ></td></tr>
</table>
</form><p>
</body>
</html>
webapp > loginPro.jsp(jsp)
<%@page import="och12.MemberDao"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" errorPage="error.jsp"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 값을 html로 가져오는 방법 -->
<jsp:useBean id="member" class="och12.Member"></jsp:useBean>
<!-- 전부 불러옴. -->
<jsp:setProperty property="*" name="member"/>
<%
MemberDao md = MemberDao.getInstance();
int result = md.insert(member);
if (result > 0) {
%>
<script type="text/javascript">
alert("회원가입 축하 !! 이제 고생 좀 해");
location.href="loginForm.jsp";
</script>
<%
} else { %>
<script type="text/javascript">
alert("헐 실패야 똑바로 해 ~");
location.href="joinForm.jsp";
</script>
<% } %>
</body>
</html>
webapp > error.jsp(jsp)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isErrorPage="true"%>
<% response.setStatus(200); %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>공지사항</h2>
공사중입니다. <p>
<%=exception.getMessage() %>
</body>
</html>
webapp > main.jsp(jsp)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- 이걸 실행할 때 이 파일(memberCheck.jsp)을 포함하여 실행한다. -->
<%@ include file="memberCheck.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>회원관리 메뉴</h2>
<%=id %>님 환영합니다<p>
<table bgcolor="pink" border="1" width="80%">
<!-- 로그아웃을 누르면 logOut.jsp으로 이동. 하단도 다 같음. -->
<tr><td><a href="logOut.jsp">로그아웃</a></td></tr>
<tr><td><a href="joinForm.jsp">회원가입</a></td></tr>
<tr><td><a href="joinForm3.jsp">회원가입(image)</a></td></tr>
<tr><td><a href="memberList.jsp">회원명단</a></td></tr>
<tr><td><a href="updateForm.jsp">회원정보수정</a></td></tr>
<tr><td><a href="updateForm3.jsp">회원정보수정(image)</a></td></tr>
<tr><td><a href="deleteForm.jsp">회원탈퇴</a></td></tr>
</table>
</body>
</html>
webapp > memberCheck.jsp(jsp)
<!-- session을 체크해서 만약 id가 없다면 loginForm.jsp으로 이동. 불특정한 사용자로부터 보호 가능 -->
<%
String id = (String)session.getAttribute("id");
if (id == null || id.equals("")) {
response.sendRedirect("loginForm.jsp");
}
%>
실행 순서
0. loginForm.jsp 실행, memberCheck.jsp도 같이 실행.
1. loginForm.jsp에서 id와 passwd를 name에 넣어 loginPro.jsp로 이동한다.
2. loginPro.jsp에서 값이 맞는지 확인한다.
3. MemberDao.java의 check()에서 id와 passwd를 받아 실행하여 result에 값을 넣는다.
4. loginPro에서 result가 1이면 main.jsp로 이동한다.
5. main.jsp가 실행된다.
출력 결과
(암호가 틀린 경우)
(아이디가 틀린 경우)
(아이디와 암호가 맞은 경우)
3. 회원명단 페이지 제작
webapp > memberList.jsp
<%@page import="och12.Member"%>
<%@page import="java.util.List"%>
<%@page import="och12.MemberDao"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" errorPage="error.jsp"%>
<%@ include file="memberCheck.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">tr:hover{ background-color: orange; }
td { text-align: center; }
</style>
</head>
<body bgcolor="yellow">
<%
MemberDao md = MemberDao.getInstance();
List<Member> list = md.list();
if (list == null) {
out.println("회원이 없습니다");
}else {
%>
<h2>회원정보</h2>
<table bgcolor="pink" width="100%">
<tr bgcolor="cyan"><th>아이디</th><th>이름</th><th>주소</th>
<th>전화번호</th><th>가입일</th></tr>
<% for(int i = 0; i < list.size(); i++) {
out.println("<tr><td>"+list.get(i).getId()+
"</td><td>"+list.get(i).getName()+
"</td><td>"+list.get(i).getAddress()+
"</td><td>"+list.get(i).getTel()+
"</td><td>"+list.get(i).getReg_date()+"</td></tr>");
} %>
</table>
<% } %>
</body>
</html>
'프로젝트 기반 JAVA 응용 SW개발 : 22.07.19~23.01.20 > Servlet, JSP' 카테고리의 다른 글
9/22 : MVC 모델1 제작(3/3), MVC 모델2 제작(1/4) (0) | 2022.10.04 |
---|---|
9/21 : MVC 모델1 제작(2/3) (0) | 2022.10.04 |
9/19 css 셀렉터, Ajax (0) | 2022.09.24 |
9/8 JSTL을 구성하는 작은 라이브러리들, forEach, forTokens (0) | 2022.09.15 |
9/7 EL, jsp.forward, 자바빈 (0) | 2022.09.12 |