JSP(Java Server Page)
6) 스크립트 요소
(1) <%@ 지시어 %>: 지시어 (Directive)
(2) <%! 선언부 %> : 선언부 (Declaration), 전역 변수 선언, 메소드
(3) <%= 표현식 %>: 표현식(Expression), 결과 값 출력(변수값, 리턴값)
(4) <% 스크립트릿%>: 스크립트릿(Scriptlet), 일반 자바 코드
include 지시어
- 현재 페이지에 다른 페이지를 포함시킬 때 사용
- 형식
<%@ include file="footer.jsp" %>
4가지 영역★★★
(1) 데이터가 저장되는 4가지 영역(객체)가 있다.
(2) 영역에 따라 데이터가 유지되는 생명주기(life cycle)가 다르다.
(3) 4가지 영역(객체)(짧은 생명주기부터 순서대로!!)
- pageContext 객체
① 하나의 페이지를 처리할 때 사용하는 영역
② page 영역
③ 해당 페이지를 벗어나면 데이터가 삭제됨
- request 객체
① 하나의 요청을 처리할 때 사용하는 영역
② request 영역
③ response 하면 데이터가 삭제됨
- session 객체
① 하나의 웹 브라우저를 처리할 때 사용하는 영역
② session 영역
③ 웹 브라우저를 종료하면 데이터가 삭제됨
- application 객체
① 하나의 웹 애플리케이션에서 사용하는 영역
② application 영역
③ 웹 애플리케이션을 종료하면 데이터가 삭제됨
세션(session)
(1) 세션에 데이터 저장하기
- session.setAttribute("속성","값");
(2) 세션에 저장된 데이터 불러오기
- session.getAttribute("속성");
request 객체의 정보 확인
<li>클라이언트 IP 주소(★) : <%= request.getRemoteAddr() %></li>
<li>요청정보 전송방식(★) : <%= request.getMethod() %></li>
<li>요청 URI(★) : <%= request.getRequestURI() %></li> <!-- getContextPath 이하 경로 -->
<li>요청 URL(★) : <%= request.getRequestURL() %></li> <!-- 전체 경로 -->
<li>컨텍스트 경로(★) : <%= request.getContextPath() %></li> <!-- 프로젝트명 -->
request 객체의 주요 메소드
<li>포워드: request.getRequestDispatcher("이동할경로").forward(request, response); </li>
<li>세션 얻기: request.getSession(); </li>
<li>파라미터 얻기: request.getParameter(); </li> <!-- 단수 -->
<li>파라미터들 얻기(배열): request.getParameterValues(); </li> <!-- 복수 -->
<li>쿠키 얻기: request.getCookies(); </li>
<li>속성값 얻기: request.getAttribute("속성"); </li>
<li>속성값 저장하기: request.setAttribute("속성", 값);</li>
function send(f){
f.action = '/chapter02_jsp/Ex05_02_receive.jsp';
f.submit(); //함수
}
submit으로 넘기면
//자바단
request.setCharacterEncoding("utf-8");
String name = request.getParameter("name");
int age =Integer.parseInt (request.getParameter("age"));
int tel =Integer.parseInt (request.getParameter("tel"));
String[] gender = request.getParameterValues("gender"); 배열로 받을 수 있다
String[] hobbies = request.getParameterValues("hobbies");
String etc = request.getParameter("etc");
String addr = request.getParameter("addr");
String[] foods = request.getParameterValues("foods");
String nickname = request.getParameter("nickname");
화면이동
<!-- 파라미터 전달 o -->
<a href="Ex06_03_page_move.jsp?name=<%=name%>&age=<%=age%>">파라미터 o</a><!-- get방식은 가능 -->
<br><hr><br>
<%--2. location 객체로 이동하기 --%>
<button onclick="location.href ='Ex06_03_page_move.jsp'">파라미터 x</button>
<button onclick="location.href ='Ex06_03_page_move.jsp?name=<%=name%>&age=<%=age%>'">파라미터 o</button>
<br><hr><br>
<%-- 3. 포워드로 이동 --%>
<!-- 데이터를 같이 전송할 때 포워드 방식 사용, 화면 이동 됐으나 주소가 이동되지 않음 -->
<%
//request.getRequestDispatcher("Ex06_03_page_move.jsp").forward(request, response);
%>
<%-- 4. 리다이렉트로 이동 --%>
<!-- 특징: 원칙상 파라미터 담지 못하고 이동, 대신 편법은 사용 가능 -->
<%
response.sendRedirect("Ex06_03_page_move.jsp");
%>
서블릿 Servlet
서버
액션 태그
자바빈(VO,DAO)
쿠키
클라이언트(웹 브라우저)가 관리하는정보
쿠키(팝업창)는 클라이언트가 관리, 세션은 서버가 관리(user)
EL
표현방식
${변수값}
JQ
표현방식
$( )
MYbatis
표현방식
#{ }
EL 내장객체 중 파라미터를 사용하는 경우 param, paramValues를 사용
(변수) (배열)
6) EL 연산자
(1) 산술 연산자
- + : 더하기
- - : 빼기
- div : a를 b로 나눈 몫
- mod : a를 b로 나눈 나머지
(2) 비교 연산자
- eq : == 같다 .
- ne : != 같지않다.
- gt : > 크다.
- lt : < 작다.
- ge : >= 크거나 같다.
- le : <= 작거나 같다.
(3) EL 논리 연산자
- and : && 그리고
- or : || 또는
- not : ! 아니다
(4) empty 연산자(empty 값)
- 값이 null이면 true 리턴
- 값이 빈 문자열("")이면 true 리턴
- 값의 길이가 0인 배열이면 true 리턴
- 값이 빈 Map이면 true 리턴
- 값이 빈 Collection이면 true 리턴
JSTL(자료파일이 필요함)
(1) core 변수, 제어문 c(접두어) http://java.sun.com/jsp/jstl/core
core 라이브러리
1) 변수 지원
(1) set : 변수 선언 (EL의 setAttribute)
(2) remove : 변수 삭제 (EL의 removeAttribute)
2) 제어문 지원
(1) if : else는 없다.
<c:if test="조건"></c:if>
(2) choose : 다중 if 처리
(3) forEach : 루프, 컬렉션 루프
(4) forTokens: 구분자(delim)로 데이터를 분리(토큰 생성)
3) URL 지원
(1) import : <jsp:include> 와 동일 (다른 동적 페이지 포함)
(2) redirect : 리다이렉트
4) 기타
(1) out : 출력
(2) catch : 예외 처리
조건문,반복문 chapter에서 확인
DB
<1.전체검색>
select * from green where id=?
매개변수 : string
리턴타입 : vo
<2.회원조회>
select * from green where id=#{id}
매개변수 : string
리턴타입 : vo
<3.회원추가>
insert into green values(green_seq.nextval, #{id}, #{pw}, #{name}, #{age}, #{addr}, sysdate)
매개변수 : vo
리턴타입 : int
<4.회원삭제>
DELETE FROM green WHERE id=#{id} and pw=#{pw}
매개변수 : vo
리턴타입 : int
<5.회원수정>
update green set pw=#{pw} ,name=#{name} ,age=#{age} ,addr=#{addr} where idx=#{idx}
매개변수 : vo
리턴타입 : int