사이트나 네이버 혹은 다음카페 같은 곳을 가보면 회원 등급이 나누어져 있다. 우리도 등급을 나누어 부여하자
--회원등급
A1: 관리자
B1: 중간 관리자
C1: 우수 사용자
D1: 일반 사용자 (기본)
E1: 비회원
F1: 탈퇴한 회원
--회원테이블
CREATE TABLE member (
id VARCHAR(10) NOT NULL, -- 아이디, 중복 안됨.
passwd VARCHAR(10) NOT NULL, -- 패스워드
mname VARCHAR(20) NOT NULL, -- 성명
tel VARCHAR(14) NULL, -- 전화번호
email VARCHAR(50) NOT NULL UNIQUE, -- 전자우편 주소, 중복 안됨
zipcode VARCHAR(7) NULL, -- 우편번호, 12345
address1 VARCHAR(255) NULL, -- 주소 1
address2 VARCHAR(255) NULL, -- 주소 2(나머지주소)
job VARCHAR(20) NOT NULL, -- 직업
mlevel CHAR(2) NOT NULL, -- 회원 등급, A1, B1, C1, D1, E1, F1
mdate DATE NOT NULL, -- 가입일
PRIMARY KEY (id)
);
unique는 한 번은 Null을 가질 수 있는 반면, primary key는 Null 값을 가질 수 없다.
이제 테이블을 생성하자
로그인 및 회원가입에 대한 것은 member 폴더를 생성하여 관리한다.
loginForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="../header.jsp"%>
<!-- 본문 시작 loginForm.jsp-->
<h3>* 로 그 인 *</h3>
<form name="loginfrm" id="loginfrm">
<table class="table">
<tr>
<td>
<input type="text" name="id" id="id" placeholder="아이디" maxlength="10" required>
</td>
<td rowspan="2">
<!-- type=image는 기본 속성이 submit -->
<input type="image" src="../images/bt_login.gif">
</td>
</tr>
<tr>
<td>
<input type="password" name="passwd" id="passwd" placeholder="비밀번호" maxlength="10" required>
</td>
</tr>
<tr>
<td colspan="2">
<label><input type="checkbox" name="c_id" value="SAVE">아이디 저장</label>
회원가입
아이디/비밀번호찾기
</td>
</tr>
</table>
</form>
<!-- 본문끝 -->
<%@ include file="../footer.jsp"%>
type="image"는 기본 속성이 submit이다.
net.member 패키지를 만들고 그 안에 MemberDAO.java와 MemberDTO.java를 생성한다.
MemberDTO.java
package net.member;
public class MemberDTO { //전송객체 Value Object
private String id;
private String passwd;
private String mname;
private String tel;
private String email;
private String zipcode;
private String address1;
private String address2;
private String job;
private String mlevel;
private String mdate;
//기본생성자 default constructor
public MemberDTO() {}
//getter and setter 함수
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 getMname() {
return mname;
}
public void setMname(String mname) {
this.mname = mname;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getZipcode() {
return zipcode;
}
public void setZipcode(String zipcode) {
this.zipcode = zipcode;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getAddress1() {
return address1;
}
public void setAddress1(String address1) {
this.address1 = address1;
}
public String getAddress2() {
return address2;
}
public void setAddress2(String address2) {
this.address2 = address2;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public String getMlevel() {
return mlevel;
}
public void setMlevel(String mlevel) {
this.mlevel = mlevel;
}
public String getMdate() {
return mdate;
}
public void setMdate(String mdate) {
this.mdate = mdate;
}
@Override
public String toString() {
return "MemberDTO [id=" + id + ", passwd=" + passwd + ", mname=" + mname + ", tel=" + tel + ", zipcode="
+ zipcode + ", email=" + email + ", address1=" + address1 + ", address2=" + address2 + ", job=" + job
+ ", mlevel=" + mlevel + ", mdate=" + mdate + "]";
}
}//class end
JSP 내장 객체
특정 사이트에 페이지를 요청하면 임시로 일종의 나만의 방을 만들어 준다.
빨간색 박스가 그 방의 번호이다.
요청 방식과 상태 등을 볼 수 있다.
우리가 페이지를 요청하면 임시로 세션 아이디를 부여해준다. 로그인은 임시로 아이디를 부여받는 대신 고정적인 아이디를 사용할 수 있도록 하는 것이다.
● [JSP 내장 객체]
- JSP페이지가 서블릿에서 변환될 때(.class) JSP컨테이너(Tomcat웹서버)가 자동적으로 제공
- JSP페이지 내에서 제공하는 특수한 레퍼런스(참조) 타입의 변수
- 객체 생성 없이 바로 사용할 수 있는 JSP의 객체
1) out : 출력 객체
2) pageContext : JSP페이지 자체의 Context 제공
3) request : 요청에 관한 정보
4) response : 응답에 관한 정보
5) session : 요청에 관한 Context 제공
6) application : 서블릿 및 외부 환경 정보 Context 제공
● [Scope의 종류]
- myweb 프로젝트에서 페이지들 간에 값을 공유하기 위해 사용
1) pageContext : 현재 페이지에서만 유효. 기본값
2) request : 부모페이지와 자식페이지에서만 유효
3) session : 프로젝트의 모든 페이지에서 유효 (사용자 개별 접근, 시간)
4) application : 프로젝트의 모든 페이지에서 유효 (모든 사용자 접근, 서버 정보)
● [내부변수 선언 형식] - 별도의 자료형이 없다
1) pageContext.setAttribute("변수명", 값)
2) request.setAttribute("변수명", 값)
3) session.setAttribute("변수명", 값)
4) application.setAttribute("변수명", 값)
● [내부변수값 가져오기]
1) pageContext.getAttribute("변수명")
2) request.getAttribute("변수명")
3) session.getAttribute("변수명")
4) application.getAttribute("변수명")
//각 내부변수에 값 올리기
pageContext.setAttribute("kor", 100);
request.setAttribute("eng", 200);
session.setAttribute("mat", 300);
application.setAttribute("uname", "ITWILL");
//내부 변수값 가져오기
out.print(pageContext.getAttribute("kor"));
out.print("<hr>");
out.print(request.getAttribute("eng"));
out.print("<hr>");
out.print(session.getAttribute("mat"));
out.print("<hr>");
out.print(application.getAttribute("uname"));
out.print("<hr>");
Object obj = pageContext.getAttribute("kor");
int kor = (int)obj;
int eng = (int)request.getAttribute("eng");
int mat = (int)session.getAttribute("mat");
String uname = (String)application.getAttribute("uname");
out.print("1)pageContext 영역 : " + kor + "<hr>");
out.print("2)request 영역 : " + eng + "<hr>");
out.print("3)session 영역 : " + mat + "<hr>");
out.print("4)application 영역 : " + uname + "<hr>");

//내부 변수 삭제
pageContext.removeAttribute("kor");
request.removeAttribute("eng");
session.removeAttribute("mat");
application.removeAttribute("uname");
out.print("<p>* SCOPE영역 변수 삭제 후 *</p>");
out.print("1)pageContext 영역 : " + pageContext.getAttribute("kor") + "<hr>");
out.print("2)request 영역 : " + request.getAttribute("eng") + "<hr>");
out.print("3)session 영역 : " + session.getAttribute("mat") + "<hr>");
out.print("4)application 영역 : " + application.getAttribute("uname") + "<hr>");
'웹개발 교육 > jsp' 카테고리의 다른 글
[55일] jsp (24) - session 내장 객체 (0) | 2022.10.17 |
---|---|
[55일] jsp (23) - SCOPE (0) | 2022.10.17 |
[54일] jsp (21) - myweb 프로젝트(페이징) (0) | 2022.10.14 |
[53~54일] jsp (20) - myweb 프로젝트(게시판-검색) (0) | 2022.10.13 |
[53일] jsp (19) - myweb 프로젝트(게시판-답변 쓰기) (0) | 2022.10.13 |