- 웹 브라우저의 HTTP 요청 정보를 저장
예제01)
==> 결과
<request1.html><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"/> </head> <body> <h1>Request Example1</h1> <FORM METHOD="get" ACTION="request1.jsp"> 성명 : <INPUT NAME="name"><br/> 학번 : <INPUT NAME="studentNum"><br/> 성별 : 남자 <INPUT TYPE="radio" NAME="gender" VALUE="man" checked> 여자 <INPUT TYPE="radio" NAME="gender" VALUE="woman"><br/> 전공 : <SELECT NAME="major"> <OPTION SELECTED VALUE="국문학과">국문학과</OPTION> <OPTION VALUE="영문학과">영문학과</OPTION> <OPTION VALUE="수학과">수학과</OPTION> <OPTION VALUE="정치학과">정치학과</OPTION> <OPTION VALUE="체육학과">체육학과</OPTION> </SELECT><br/> 취미 : 인터넷<input type="checkbox" name="hobby" value="인터넷"> 여행<input type="checkbox" name="hobby" value="여행"> 게임<input type="checkbox" name="hobby" value="게임"> 영화<input type="checkbox" name="hobby" value="영화"> 운동<input type="checkbox" name="hobby" value="운동"><br/> <INPUT TYPE="submit" value="보내기"> </FORM> </body> </html><request1.jsp>
<%@ page contentType="text/html; charset=EUC-KR" isErrorPage="true"%> <% request.setCharacterEncoding("EUC-KR"); String name = request.getParameter("name"); String studentNum = request.getParameter("studentNum"); String gender = request.getParameter("gender"); String major = request.getParameter("major"); String hobby[] = request.getParameterValues("hobby"); %> 성명 : <%=name%> <br> 학번 : <%=studentNum%><br> 성별 : <%=gender%><br> 전공 : <%=major%><br> 취미 : <% for(int i=0; i<hobby.length; i++){ out.println(hobby[i] + " "); } %>예제02)
==> 결과
<request2.jsp><%@page contentType="text/html; charset=EUC-KR"%> <% request.setCharacterEncoding("EUC-KR"); String protocol = request.getProtocol(); String serverName = request.getServerName(); int port = request.getServerPort(); String remoteAddr = request.getRemoteAddr(); //게시판에서 글쓴이 ip주소 저장되는 값 String remoteHost = request.getRemoteHost(); String method = request.getMethod(); StringBuffer requestURL = request.getRequestURL(); String requestURI = request.getRequestURI(); String query = request.getQueryString(); String useBrowser = request.getHeader("User-Agent"); String fileType = request.getHeader("Accept"); %> 프로토콜 : <%=protocol%><p> 서버의 이름 : <%=serverName%><p> 서버의 포트 번호 :<%=port%><p> 사용자 컴퓨터의 주소 : <%=remoteAddr%><p> 사용자 컴퓨터의 이름 : <%=remoteHost%><p> 사용 method : <%=method%><p> 요청 경로(URL) : <%=requestURL%><p> 요청 경로(URI) : <%=requestURI%><p> query : <%=query%><p> 현재 사용하는 브라우저 : <%=useBrowser%><p> 브라우저가 지원하는 file의 type : <%=fileType%><p> 요청된 조건을 포함한 URL : <%=requestURL + "?" + query%>
- 웹 브라우저 http 요청에 대한 응답 정보를 저장
예제01) response.setHeader() 메서드 사용하여 캐시영역에 소멸시키기
<response1.jsp>
<%@ page contentType="text/html; charset=EUC-KR"%> <%request.setCharacterEncoding("EUC-KR"); response.sendRedirect("response2.jsp"); %><response2.jsp>
<%@ page contentType="text/html; charset=EUC-KR"%> <%request.setCharacterEncoding("EUC-KR"); //캐시영역에 저장이 안됨(이 페이지는 항상 서버 요청을 해야함) // 공식처럼 사용됨 // - 예를들어 로그인 후 페이지를 뒤로가기 클릭 시 아래 공식을 쓰지않으면 로그인 페이지가 유지됨 // --> 뒤로가기 클릭 시 로그인 유지 소멸 시키기 위해 아래 메서드를 사용 response.setHeader("Progma", "no-cache"); if(request.getProtocol().equals("HTTP/1.1")){ response.setHeader("Cache-Control","no-store"); } %> response2.jsp 페이지
예제02) response.sendRedirect 메서드 사용
<%@ page contentType="text/html; charset=EUC-KR"%> <%request.setCharacterEncoding("EUC-KR"); response.sendRedirect("http://www.google.com"); %>
- 웹 브라우저의 정보를 유지하기 위한 세션 정보를 저장
예제01)
==> 결과
<session2.jsp><%@ page contentType="text/html; charset=EUC-KR"%> <%request.setCharacterEncoding("EUC-KR"); String season = request.getParameter("season"); String fruit = request.getParameter("fruit"); // id는 세션에서 가져옴. 저장했던 타입으로 가져와야 함 // 객체 불변의 법칙 : new 연산자로 생성된 객체는 불변 String id =(String)session.getAttribute("idKey"); String sessionId = session.getId(); int intevalTime = session.getMaxInactiveInterval(); if(id!=null){ %> <%=id%> 님이 좋아하는 계절과 과일은 <%=season%>과 <%=fruit%> 입니다. <br> 세션ID : <%=sessionId%> <br> 세션 유지 시간 : <%=intevalTime%> 초 <% // 세션에 저장된 idKey 값을 제거 //session.removeAttribute("idKey"); // 세션 객체 자체를 제거(무효화) //session.invalidate(); %> <%} else{ out.println("세션의 시간이 경과를 하였거나 다른 이유로 연결을 할 수 없습니다."); out.println("<a href='session1.html'>로그인</a>"); }%><session1.html>
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"/> </head> <body> <h1>Session Example1</h1> <FORM METHOD="POST" ACTION="session1.jsp"> 아이디 : <INPUT NAME="id" value="aaa"><p> 비밀번호 : <INPUT TYPE="password" NAME="pwd" value="0000"><p/> <INPUT TYPE="submit" VALUE="로그인"> </FORM> </body> </html><session1.jsp>
<%@ page contentType="text/html; charset=EUC-KR"%> <%request.setCharacterEncoding("EUC-KR"); String id = request.getParameter("id"); String pwd = request.getParameter("pwd"); // db연동 // 세션이라는 저장 공간에 키 값이 idKey로 id를 저장 session.setAttribute("idKey", id); // 세션의 생명 주기 : 기본 30분 session.setMaxInactiveInterval(2*60); // 2분 %> <FORM METHOD="POST" ACTION="session2.jsp"> 1.가장 좋아하는 계절은?<br> <INPUT TYPE="radio" NAME="season" VALUE="봄">봄 <INPUT TYPE="radio" NAME="season" VALUE="여름">여름 <INPUT TYPE="radio" NAME="season" VALUE="가을">가을 <INPUT TYPE="radio" NAME="season" VALUE="겨울">겨울<p> 2.가장 좋아하는 과일은?<br> <INPUT TYPE="radio" NAME="fruit" VALUE="watermelon">수박 <INPUT TYPE="radio" NAME="fruit" VALUE="melon">멜론 <INPUT TYPE="radio" NAME="fruit" VALUE="apple">사과 <INPUT TYPE="radio" NAME="fruit" VALUE="orange">오렌지<p> <INPUT TYPE="submit" VALUE="결과보기"> </FORM>
- 웹 어플리케이션의 콘텍스트 정보를 저장
예제01)
==> 결과
<application.jsp><%@ page contentType="text/html; charset=EUC-KR"%> <% request.setCharacterEncoding("EUC-KR"); String realPath = application.getRealPath("/"); // 저장공간의 영역 크기 application > session > request > page application.setAttribute("aaa", "테스트"); %> 서블릿 컨테이너 이름과 버전 <%=application.getServerInfo() %> <br> 로컬파일 시스템 경로 <%=realPath%> <br> aaa : <%=application.getAttribute("aaa") %>
- jsp 페이지의 예외 발생을 처리
예제01)
- <%@ errorPage="error.jsp" 페이지 작성 - 에러코드 작성==> 결과
<exception.jsp><%@ page contentType="text/html; charset=EUC-KR" errorPage="error.jsp"%> <%request.setCharacterEncoding("EUC-KR"); int num = Integer.parseInt("aaa"); %> exception1.jsp<error.jsp>
<%@ page contentType="text/html; charset=EUC-KR" isErrorPage="true"%> <%request.setCharacterEncoding("EUC-KR"); String msg = exception.getMessage(); String obj = exception.toString(); %> 에러 메세지 : <%=msg%> <br> 에러 내용 : <%=obj%>