35일차 - 내장객체

김재령·2022년 2월 27일
0

내장 객체 : 생성자를 통해서 생성하지 않아도, JSP페이지가 기본적으로 참조할 수 있는 객체
입출력 : request, response, out
서블릿 : page, config
외부환경 정보 제공 : session, application, pageContext
예외 : Exception

Request 내장객체

request : 클라이언트가 웹 서버에 전달하는 요청을 객체화한 형태

보내는 사람 : 클라이언트 (ip)
받는 사람 : 웹 서버(ip)
요청 방식 : 내가 문서를 받고 싶다면 get, 내가 어떤 내용을 담아서 보낸다면 post
요청 내용 : 받고 싶은 문서의 이름이나, 클라이언트가 보내는 내용을 받기 원하는 서버의 페이지 이름 (자원의 위치)
URL : Uniform Resource Locator (웹 브라우저의 주소창을 통해서 전달)

http://search.naver.com/search.naver?query=이지은

http://프로토콜, 서버와 클라이언트가 통신하는 규칙과 약속
search.naver.com서버 도메인(IP), 어떤 서버에게 요청을 전달하는가 (받는 사람)
search.naver문서, 페이지의 이름 (자원의 이름)
?query=이지은파라미터, ?변수이름1=변수값1&변수이름2=변수값...
클라이언트가 서버에게 전달하고자 하는 값 (내가 원하는 문서를 특정하기 위해서)

http://도서관.com/대여.html?책이름=드래곤볼&책번호=3
도서관에 가서 대여 창구에서 "책 이름은 드래곤볼이구요, 번호는 3권입니다. 이 책을 저에게 주세요(GET)"

<h4>보내는 사람 : <%=request.getRemoteAddr() %></h4>
<h4>받는 사람 : <%=request.getLocalAddr() %></h4>
<h4>요청 방식 : <%=request.getMethod() %></h4>
<h4>요청 내용 : <%=request.getRequestURL() %></h4>
<h4>자원 식별자 : <%=request.getRequestURI() %></h4>

※-> method를 post로 하면 인코딩하는 방식이 달라지기 때문에 출력하는 쪽에서 인코딩을 해줘야 한다

<%-- post 방식으로 전달받는 데이터의 인코딩을 지정한다(rquest.getParameter() 호출전) --%>
<%-- 봉투에 담았더니 글자가 깨졌다고 생각 --%>
<% request.setCharacterEncoding("UTF-8"); %>

[ autofocus는 페이지에 하나만]

  • required 는 필수 입력값 (HTML5에서 지원 / form이 있고 submit이 있어야 작동한다)

[form 태그의 submit]

  • button 태그는 조건부로 form태그안에서는 submit을 할 수 있다
  • input의 type="button"은 form태그 안에 있어도 안됨
  • <p><input type="submit"></p>

<%-- 시작태그 끝에 / 넣어서 마무리 태그를 생략할 수 있다 XML형식 --%>
<jsp:useBean id="dto" class="day02.Quiz01DTO"/>

<%-- request는 String 형식이지만 setProperty를 이용하면 자동파싱이 된다 --%>
-- > 사용자 입력이라서 request는 String 형식이다
<%-- parseInt를 자동으로 해준다 --%>
<jsp:setProperty property="*" name="dto"/>

public class DTO{
// private 멤버 필드
// public getter/setter
// 작성하지 않은 경우 기본 생성자

<jsp:useBean id="dto" class="day02.Quiz01DTO"/>
<jsp:setProperty property="*" name="dto"/>

// input태그의 name속성을 기준으로 파라미터와 getter/setter를 맵핑한다
// request.getParameter()는 String이지만, <jsp:setProperty/> 는 primitive에 대한 파싱도 자동 지원한다

// 다수의 파라미터를 캡슐화해서 하나의 객체로 취급하기 때문에, 다른 페이지나 DB에 전달하기 용이하다
















profile
with me

0개의 댓글