href,action, - 브라우저가 갖고있는것은 현재주소
view를 연결해줄수 있는 중간역할자 controller-서블릿
JSP기반 웹어플리케이션은 JSP페이지의 역할에 따라 Model1 구조와 Model2구조로 나뉜다
client가 server에 있는 servlet에 요청을 한다
다음줄이 Controller 역할
sevlet에서 만든 data를 들고 WEB-INF안에 있는 jsp로 간다. 여기서 응답데이터를 client에게 보낸다. WEB-INF는 client가 접근할 수 없다.
HTML,JavaScript는 클라이언트 사이드, 자바는 서버 사이드
mvc패턴 적합한 형태 mvcmodel2라고도 부른다
서버(WAS) | jsp |
---|---|
브라우저의 모든 요청을 받고 분석 데이터 만든 후 jsp로 감 | 응답데이터를 만들고 client에게내보낸다 서버가 준 데이터를 쓸수 있어야 한다 |
HTTP Method | 목적 혹은 방식 |
---|---|
GET(Retrieve) | 서버로부터 데이터를 조회 body 필요없음 |
POST(C) | 서버로 데이터를 전송 body 필수 |
PUT/PATCH(U) | 이미 존재하는 서버상의 리소스를 변경 body가 필요하지만 form태그 action을 통해 GET,POST를 통해 전송 |
DELETE(D) | 서버상의 리소스를 삭제 |
HEAD | GET방식과 동일하나 응답 메시지를 제외한 헤더 등의 메타데이터만 조회 |
OPTION | 서버가 현재 지원하는 http메소드를 조회하기 위한 리퀘스트 |
TRACE | 디버깅 목적으로 사용, 요청데이터 중 일부를 다시 돌려받는 리퀘스트 |
속성 | 리턴타입 | 설명 |
---|---|---|
getCharacterEncoding() | String | 클라이언트가 요청 정보를 전송할때 사용한 캐릭터의 인코딩 POST방식에서만 유효 |
getContentLength() | long | 클라이언트가 전송한 요청 정보의 길이 전송된 데이터의 길이를 알 수 없는 경우 -1를 리턴 |
getContentType() | String | 클라이언트가 요청정보를 전송하래 컨텐트의 타입을 구한다 |
server
<%=request.getLocalAddr() %>,<%=request.getLocalName() %>, <%=request.getLocalPort() %>
client
<%=request.getRemoteAddr() %>,<%=request.getRemoteHost() %>, <%=request.getRemotePort() %>
line URI
<%=request.getRequestURI() %>, <%=request.getMethod() %>, <%=request.getProtocol() %>
URL
<%=request.getRequestURL() %> <%=request.getQueryString() %>
파라미터에 포함된 특수문자 처리
HTTP Method | 특징 | 파라미터 디코딩 방식 |
---|---|---|
POST | Message body를 통한 파라미터 전달 | request.stCharacterEncoding(String encoding) |
GET | Request-Line의 Request-URL을 통한 파라미터 전달 라인에 쿼리스트 형태로! | 서버의 설정을 통한 디코딩 방식 설정 톰캣(server.xml) URIEncoding="encodingName" or useBodyEncodingForURI = "true" |
숙제