일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 미니프로젝트
- 책리뷰
- jsp
- 뇌정리
- post
- 회고
- 함수형 코딩
- sqldeveloper
- 주간회고
- 서평
- Til
- algorithms
- Real MySQL
- 2020년 일정
- 2020년 제4회 정보처리기사 필기 문제 분석
- 코드숨
- Python
- 2020년 정보처리기사 4회
- If
- java
- LeetCode
- 알고리즘
- 필기
- 항해99
- 성적프로그램
- 스터디
- 정보처리기사
- hackerrank
- git
- Jackson
- Today
- Total
조컴퓨터
201103 JSP 12 - JSP 미니 프로젝트 (세션_로그인) 본문
웹페이지의 SCOPE(유효범위)
1. 내부객체
1) out
2) pageContext : JSP 페이지 자체의 Context 제공
3) request : 요청에 관한 정보
4) session : 요청에 관한 Context 제공
5) response : 응답에 관한 정보
6) application : 서블릿 및 외부 환경 정보 Context 제공
2. SCOPE의 종류
- myweb 프로젝트에서 페이지들 간에 값을 공유하기 위해 사용
1) page : 현재 페이지에서만 유효. 기본값
2) request : 부모 페이지와 자식 페이지에서만 유효
3) session : 모든 페이지에서 유효 (사용자 개별 접근, 시간)
4) application : 모든 페이지에서 유효 (모든 사용자 접근, 서버 정보)
3-1. 내장 변수 선언 형식 : 별도의 자료형이 없다.
1) pageContext.setAttribute("변수명", 값)
2) request.setAttribute("변수명", 값)
3) session.setAttribute("변수명", 값)
4) application.setAttribute("변수명", 값)
3-2. 각 SCOPE의 변수값 가져오기
1) pageContext.getAttribute("변수명")
2) request.getAttribute("변수명")
3) session.getAttribute("변수명")
4) application.getAttribute("변수명")
3-3. 각 SCOPE의 변수 삭제하기
1) pageContext.removeAttribute("변수명")
2) request.removeAttribute("변수명")
3) session.removeAttribute("변수명")
4) application.removeAttribute("변수명")
예시1)
//각 SCOPE에 내장변수를 이용해서 값 올리기
pageContext.setAttribute("kor", 100);
request.setAttribute("eng", 200);
session.setAttribute("mat", 300);
application.setAttribute("uname", "SOLDESK");
//SCOPE영역에 값 가져오기
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>");
결과값

예시2)
//각 SCOPR 변수 삭제
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>");
결과값

예시3) request.setAttribute( )
//request.setAttribute()
request.setAttribute("aver", 95);
out.print(request.getAttribute("aver"));
out.print("<hr>");
결과값

예시4) request.getParameter( )
①
//request.getParameter()
out.print(request.getParameter("total"));
결과값

② 주소 뒤에 total값 추가
//request.getParameter()
//네트워크를 통해서 넘어온 값
//http://localhost:9090/myweb/scope/scopeTest.jsp?total=85
out.print(request.getParameter("total"));
결과값

4. 페이지 이동
1) <a href=""></a>
2) <form action=""></form>
3) location.href=""
4) <jsp:forward page=""></jsp:forward> 액션태그
5) response.sendRedirect("")
예시)
<!-- 1) request.getAttribute("eng")는 null값 -->
<a href="scopeResult.jsp">[SCOPE 결과 페이지로 이동]</a>
<!-- 2) request.getAttribute("eng")는 null값 -->
<form action="scopeResult.jsp">
<input type="submit" value="[SCOPE 결과 페이지로 이동]">
</form>
<!-- 3) request.getAttribute("eng")는 null값 -->
<script>
alert("[SCOPE 결과 페이지로 이동]");
location.href="scopeResult.jsp";
</script>
<!-- 4) 액션 태그로 이동
request.getAttribute("eng")는 200 접근 가능 -->
<jsp:forward page="scopeResult.jsp"></jsp:forward>
<%
//5)
// request.getAttribute("eng")는 null값
response.sendRedirect("scopeResult.jsp");
//6) 페이지 이동
// request.getAttribute("eng")는 200 접근 가능
String view="scopeResult.jsp";
RequestDispatcher rd=request.getRequestDispatcher(view);
rd.forward(request, response);
/*
[scopeTest.jsp에서 scopeResult.jsp로 이동한 경우]
-------------------------------------------------------------
page ○ x
request ○ ○ 또는 x
session ○ ○
application ○ ○
*/
%>
Session 세션
1. session 내부 객체
- HttpSession session
- 요청한 사용자에게 개별적으로 접근
- 요청한 정보의 상태를 유지하기 위해서 선언된 세션 변수는 전역적인 성격으로 유지된다.
- 일정 시간 동안 이벤트가 발생되지 않으면 자동 삭제
2. 세션 시간
1) 현재 세션 유지 시간
out.print("현재 세션 유지 시간:");
out.print(session.getMaxInactiveInterval());
out.print("초(30분)");
out.print("<hr>");
결과값
1800
※ 1800초이므로 30분이다.
2) 변경된 세션 유지 시간
session.setMaxInactiveInterval(60*10);
out.print("변경된 세션 유지 시간:");
out.print(session.getMaxInactiveInterval());
out.print("초(10분)");
out.print("<hr>");
결과값
60*10=600초(10분)
3) /WEB-INF/web.xml 배치관리자에서 세션시간 변경
<!-- 세션 유지 시간 설정(20분) -->
<session-config>
<session-timeout>20</session-timeout>
</session-config>
3. 세션 변수
- 별도의 자료형이 없다.
- myWeb 프로젝트의 모든 페이지에서 공유되는 전역 변수
//세션 변수 선언
session.setAttribute("s_id", "soldesk");
session.setAttribute("s_pw", "12341234");
//세션 변수값 가져오기
Object obj=session.getAttribute("s_id");
String s_id=(String)obj;
String s_pw=(String)session.getAttribute("s_pw");
out.print("세션변수 s_id :" + s_id + "<hr>");
out.print("세션변수 s_pw :" + s_pw + "<hr>");
//세션 변수 강제 제거(로그아웃) -> null
session.removeAttribute("s_id");
session.removeAttribute("s_pw");
out.print("세션 변수 삭제 후 <hr>");
out.print("세션 변수 s_id :" + session.getAttribute("s_id"));
out.print("<hr>");
out.print("세션 변수 s_pw :" + session.getAttribute("s_pw"));
out.print("<hr>");
//세션 영역에 있는 모든 값을 전부 강제 삭제
session.invalidate();
//세션 객체에서 발급해 주는 아이디
out.print("세션 임시 아이디 : ");
out.print(session.getId());
out.print("<hr>");
4. application 내부 객체
- ServletContext application
- 서버에 대한 정보를 관리하는 객체
- 사용자 모두가 공유하는 전역적인 성격의 객체
예시) 실제 물리적 경로
application.getRealPath();
//사용 지양
request.getRealPath();
결과값 예시
웹경로 http://localhost:9090/myweb/bbs
실제경로 D:\java0812\workspace\myweb\WebContent\bbs
5. response 내부 객체
- 요청한 사용자에게 응답할 때
//페이지 이동
response.sendRedirect("")
//요청한 사용자에게 응답 메세지 전송(AJAX에서 많이 사용)
PrintWriter write=response.getWriter();
1. 로그인 개발환경 구축
1) 회원 테이블 생성
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)
);
2) 테스트용 행 추가
insert into member(id, passwd, mname, tel, email, zipcode, address1, address2, job, mlevel, mdate)
values('webmaster', '12341234', '솔데스크'
, '123-4567', 'soldesk3@naver.com'
, '12345', '서울시 종로구 관철동', '코아빌딩5층'
, 'A02', 'A1', sysdate);
insert into member(id, passwd, mname, tel, email, zipcode, address1, address2, job, mlevel, mdate)
values('soldesk', '12341234', '솔데스크'
, '123-4567', 'soldesk@naver.com'
, '12345', '서울시 종로구 관철동', '코아빌딩5층'
, 'A01', 'D1', sysdate);
insert into member(id, passwd, mname, tel, email, zipcode, address1, address2, job, mlevel, mdate)
values('user0', '12341234', '솔데스크'
, '123-4567', 'user@naver.com'
, '12345', '서울시 종로구 관철동', '코아빌딩5층'
, 'A01', 'F1', sysdate);
3) 아이디 중복 확인
select count(*) from member where id='webmaste';
4) 로그인 성공하면 회원등급 가져오기
(단, 비회원(E1), 탈퇴회원(F1)은 제외)
select mlevel
from member
where id='soldesk' and passwd='12341234'
and mlevel in ('A1', 'B1', 'C1', 'D1');
'자바 웹개발자 과정 > JSP' 카테고리의 다른 글
201105 JSP 14 - JSP 미니 프로젝트 (회원가입) (0) | 2020.11.05 |
---|---|
201104 JSP 13 - JSP 미니 프로젝트 (로그인_쿠키) (0) | 2020.11.05 |
201102 JSP 11 - JSP 미니 프로젝트 (공지사항) (0) | 2020.11.03 |
201030 JSP 10 - JSP 미니 프로젝트 (답변, 검색, 페이징) (0) | 2020.11.03 |
201029 JSP 09 - JSP 미니 프로젝트 (수정) (0) | 2020.10.29 |