내장 객체란?
JSP컨테이너가 제공하는 특정 객체(변수)
이러한 객체들은 JSP문법 요소들과 함께 동작해 사용자의 요청을 적절히 처리하여 동적으로 HTML 생성
내장 객체 |
리턴 타입 |
설명 |
request |
javax.servlet.http.HttpServletRequest |
웹 브라우저의 요청 정보를 저장하고 있는 객체 |
response |
javax.servlet.http.HttpServletResponse |
웹 브라우저의 요청에 대한 응답 정보를 저장하고 있는 객체 |
out |
javax.servlet.jsp.jsp.jspWriter |
JSP페이지에 출력할 내용을 가지고 있는 출력 스트림 객체 |
session |
javax.servlet.http.HttpSession |
하나의 웹 브라우저의 정보를 유지하기 위한 세션 정보를 저장하고있는 객체 |
application |
javax.servlet.ServletContext |
웹 어플리케이션 Context의 정보를 저장하고 있는 객체 |
pageContext |
javax.servlet.jsp.PageContext |
JSP페이지에 대한 정보를 저장하고 있는 객체 |
page |
javax.lang.Object |
JSP 페이지를 구현한 자바 클래스 객체 |
config |
javax.servlet.ServletConfig |
JSP 페이지에 대한 설정 정보를 저장하고 있는 객체 |
exception |
java.lang.Throwable |
JSP페이지에서 예외가 발생한 경우에 사용되는 객체 |
request
사용자에게서 넘어온 정보를 걸러주는 객체
//sumit 누르면 action=" "이 실행됨
get방식과 post방식 차이 비교
Request 객체가 정보를 저장한 채로 유지되는건 submit -> action이 참조하는 페이지까지
다른 페이지에서 null로 초기화되는것 확인
회원가입 페이지 만들기 (최종)
회원가입 페이지, 입력 정보 확인 페이지
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | <%@ 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> <h2 align="center">회원가입</h2> <form align="center" action="RequestJoinProc.jsp" method="post"> <table align="center" width="500" border="1"> <tr height="50"> <td width="150" align="center">아이디</td> <td width="350" align="center" ><input type="text" name="id" placeholder="id를 입력하세요" size="40"></td> <tr height="50"> <td width="150" align="center">패스워드</td> <td width="350" align="center"><input type="password" name="password" placeholder="비밀번호는 영문과 숫자만 넣어주세요" size="40"></td> <tr height="50"> <td width="150" align="center">패스워드 확인</td> <td width="350" align="center"><input type="password" name="password2" size="40"></td> <tr height="50"> <td width="150" align="center">이메일</td> <td width="350" align="center"><input type="email" name="email" size="40"></td> <tr height="50"> <td width="150" align="center">전화번호</td> <td width="350" align="center"><input type="tel" name="tel" size="40"></td> <tr height="50"> <td width="150" align="center">당신의 관심분야</td> <td width="350" align="center"> <input type="checkbox" name="hobby" value="캠핑"> 캠핑 <input type="checkbox" name="hobby" value="독서"> 독서 <input type="checkbox" name="hobby" value="영화"> 영화 <input type="checkbox" name="hobby" value="등산"> 등산 </td> <tr height="50"> <td width="150" align="center">당신의 직업</td> <td width="350" align="center"><select name="job"> <option value="교사">교사</option> <option value="개발자">개발자</option> <option value="의사">의사</option> <option value="상담사">상담사</option> </select></td> <tr height="50"> <td width="150" align="center">당신의 연령</td> <td width="350" align="center"><input type="radio" name="age" value="10">10대 <input type="radio" name="age" value="20">20대 <input type="radio" name="age" value="30">30대 <input type="radio" name="age" value="40">40대 </td> <tr height="50"> <td width="150" align="center">남기고 싶은 말</td> <td width="350" align="center"><textarea rows="5" cols="40" name="info"> </textarea></td> </tr> <tr height="50"> <td align="center" colspan="2"><input type="submit" value="회원가입"> <input type="reset" value="다시 입력"></td> </tr> </table> </form> <!--</tr>닫는 태그는 테이블 끝나는 마지막에 한번만 붙여주면 된다<tr>로만 구분. --> <!--textarea cols는 한줄 당 글자 수 (너비로 나타남) --> <!--input은 닫아줄 필요 X--> </body> </html> | cs |
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | <%@ 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> <div style="text-align:center;"> <h2>회원 정보 보기</h2> <% //post방식으로 데이터가 넘어 올 때 한글이 깨질 수 있으므로 request.setCharacterEncoding("UTF-8"); //각종 사용자로부터 넘어온 데이터를 저장해줌 String id = request.getParameter("id"); String password = request.getParameter("password"); String password2 = request.getParameter("password2"); String email = request.getParameter("email"); String tel = request.getParameter("tel"); //복수 선택 가능(checkbox)으로 항목이 여러가지인 데이터는 //[] 배열 타입으로 받아서 리턴 String[] hobby = request.getParameterValues("hobby"); String job = request.getParameter("job"); String age = request.getParameter("age"); String info = request.getParameter("info"); if (!password.equals(password2)) { %> <script type="text/javascript"> alert("비밀번호가 틀립니다."); history.go(-1) //이동하시오. 이전페이지로 이동 </script> <% } %> <!-- 데이터 넘길거 아니니까 form으로 묶어줄 필요가 없다 ??--> <table align="center" width=400 border="1"> <tr height="50"> <td width="150" align="center">아이디</td> <td width="350" align="center"> <%=id%> </td> <tr height="50"> <td width="150" align="center">이메일</td> <td width="350" align="center"><%=email%></td> <tr height="50"> <td width="150" align="center">전화번호</td> <td width="350" align="center"><%=tel%></td> <tr height="50"> <td width="150" align="center">관심 분야</td> <td width="350" align="center"> <% for (String hob : hobby){ out.write(hob); } %> <!-- 배열 요소를 출력하지 않고 배열 변수를 그대로 출력하면 배열 주소가 출력된다 --> </td> <tr height="50"> <td width="150" align="center">직업</td> <td width="350" align="center"><%=job%></td> <tr height="50"> <td width="150" align="center">나이</td> <td width="350" align="center"><%=age%></td> <tr height="50"> <td width="150" align="center">남긴 말</td> <td width="350" align="center"><%=info%></td> </table> </div> </body> </html> | cs |
response
response 객체를 이용하여 로그인페이지 만들기
ResponseSendRedirect.jsp
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 | <%@ 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> <!-- 웹 브라우저의 요청에 대한 응답 정보를 저장하고 있는 객체 --> <!-- ex)로그인 제대로되면 메인페이지로 가야함. 서버측에서 다른 페이지로 떠넘겨 줘야할 때 --> <center> <h2>로그인페이지</h2> <form action="ResponseLoginProc.jsp" method="post"> <table align="center" width="350" border="1"> <tr height="50"> <td width="150" align="center">아이디</td> <td width="350" align="center" ><input type="text" name="id" placeholder="id를 입력하세요" size="25"></td> <tr height="50"> <td width="150" align="center">패스워드</td> <td width="350" align="center"><input type="password" name="password" placeholder="비밀번호는 영문과 숫자만 넣어주세요" size="25"></td> <tr height="50"> <td width="150" align="center" colspan="2"> <input type="submit" value="login" > </td> </tr> </center> </body> </html> | cs |
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 31 32 33 34 35 36 37 38 39 | <%@ 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> <!-- jsp페이지에서 response.sendRedirect가 실행되는 순간 해당 페이지에 있던 내용들은 버퍼에서 사라진다★★★ --> <% request.setCharacterEncoding("UTF-8"); //사용하고있는 데이터베이스 없으므르 임의로 id와 password 설정 String dbid = "aaa"; String dbpassword = "1234"; //사용자로부터 넘어온 데이터 입력 받아줌 String id = request.getParameter("id"); String password = request.getParameter("password"); if (dbid.equals(id) && dbpassword.equals(password)) { //아이디와 패스워드가 일치하면 메인페이지를 보여주어야함 response.sendRedirect("ResponseMain.jsp?id=" + id); //넘어가는 페이지에 변수를 파라미터로 넘겨줄 수 있다.★ get방식 } else { %> <script> alert("아이디와 패스워드가 일치하지 않습니다."); history.go(-1); </script> <% } %> </html> | cs |
ResponseMain.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <%@ 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> <center> <% request.setCharacterEncoding("UTF-8"); %> <h2><%= request.getParameter("id")%>님 반갑습니다. </h2> </center> </body> </html> | cs |
out
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <%@ 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> <!-- jsp페이지 내에서 사용하는 내장객체, 데이터에 있는 내용을 화면에 출력하기위한 객체 --> <% String name = "변수의 값"; %> 스크립트로 표현 시 <%=name%>이 화면에 출력 <p> <% out.println(name + "이 화면에 출력"); %> </body> </html> | cs |
session
http 프로토콜은 컨넥션을 계속 유지하지 않기때문에 클라이언트와 서버 통신의 연속성을 유지하기 위해 사용되는 기술
복잡한 활용예제는 이 후에 진행
SessionTest.jsp
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 | <%@ 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> <!-- 내장 객체는 스크립트릿 안에서만 사용가능!! --> <h2>세션 연습</h2> <% //세션을 이용하여 데이터를 유지 String name = "shin"; session.setAttribute("name1", name); // name값의 키를 name1으로 설정해준다. //세션 유지 시간 session.setMaxInactiveInterval(3); // 세션 유지시간 3초 %> <a href="SessionName.jsp"> 세션네임 페이지로 이동 </a> <!-- ""안에서는 띄어쓰기 주의하기. 문자열 그대로 읽어서 띄어쓰면 오류나는 것 같다. --> </body> </html> | cs |
SessionAnme.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <%@ 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> <h2> 세션네임 페이지 입니다.</h2> <% String name = (String)session.getAttribute("name1");%> <%=name %>님 반갑습니다. </body> </html> | cs |
3초 지난 후 새로고침하면 name이 받아온 데이터가 초기화되면서 null이 출력된다.
application
session이 브라우저 범위 내에사 정보를 유지해주는 객체라면 application은 어플리케이션 범위에서 정보를 유지해주는 객체
쓸 일이 많진 않다.
나머지 객체도 크게 중요하진 않다. exception은 자바 exception
용어정리
URI / URL
https://search.naver.com/search.naver?sm=top_hty&fbm=1&ie=utf8&query=URI+URL+%EC%B0%A8%EC%9D%B4
=> URL
=> URL
루프백 주소(p.178) ( 0:0:0:0:0:0:0:1 또는 :1 )
: 루프백 인터페이스를 식별하는데 사용되고 노드가 자신에게 패킷을 보낼 수 있도록 한다.
'JSP > JSP & Servlet ' 카테고리의 다른 글
액션 태그 jsp: include (0) | 2019.04.29 |
---|---|
JSP의 지시자(Directive) (0) | 2019.04.29 |
JSP 기초문법 (0) | 2019.04.28 |
서블릿 코드로 변환된 파일(.java) (0) | 2019.04.26 |
(이클립스 없이) 톰캣 서버 구동 (0) | 2019.04.26 |