Servlet | JSP |
---|---|
1. 자바 코드 내에 HTML을 삽입 2. Compile 기반 | 1. HTML내에 자바 코드를 삽입 2. Servlet 먼저 사용하다가 HTML 코드가 Java 코드 보다 더 방대하기 때문에 JSP방식이 생겼다. 3. Script 기반 - 코딩을 할대는 Script 기반이지만 컴파일 시 Compile기반으로 동작되어 느리지 않음. |
<%! 멤버변수, 메소드 선언 %>
index.jsp 코드 | index_jsp.java 코드 |
---|---|
<%= 출력될 값 %>
<%= 출력될 값 %>
가 out.print(”출력될 값”);
으로 변경됨. <%-- 주석 구문 --%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%! // 선언부에 변수나 메소드 만들기
String name = null;
public void init(){
name = "이름";
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>Hello world!! 안녕</h2>
<h1>안녕하세요 <% out.print(name); %>님!!!</h1> <%-- 출력 방법 1 --%>
<h1>안녕하세요 <%= name %>님!!!</h1> <%-- 출력 방법 2 --%>
</body>
</html>
<%@ page 속성1="값1" 속성2="값2">
속성 | 기본 값 | 설명 |
---|---|---|
language | jave | |
info | ||
contentType | text/html;charset=ISO-8859-1 | UTF-8 로 설정하여 한글을 사용할 수 있게 해야한다.브라우저에게 이러한 타입으로 저장하겠다라는 것을 알려줌 |
pageEncoding | ISO-8859-1 | jsp를 servlet으로 바꿀 때,어떤 타입으로 encoding 해야 하는지 정의 |
import | 사용할 java 패키지나 클래스를 지정 (자바에서 import하는 것과 동일) | |
session | true (세션 사용) | 세션 사용 유무를 결정 |
errorPage | 에러가 발생할 때 대신 처리될 에러 페이지를 지정 | |
isErrorPase | false(현재 페이지는 에러페이지가 아님을 뜻함) | 에러가 났을 때 보여줄 페이지면 true로 설정해야 함 |
buffer | 8KB | html을 만들고 clinet에 보낼 때,얼만큼의 buffer공간을 사용하여 보낼 것인가를 지정 |
autoflush | true | 버퍼의 내용을 자동으로 브라우저로 보낼 지에 대한 설정 |
isThreadsafe | true (스레드를 직접관리하지 않음) | false : thread를 직접 관리할 때 사용 (클라이언트가 100개면 servlet이 100개가 만들어 지는것이 아닌 thread가 100개 만들어짐),티켓팅같은 경우 처리하는 순서가 중요할 때,false로 바꿔 스레드를 직접 관리 |
extends | javax.servlet.jsp.HttpJspPage (자기네 서버에 최적화된 서버를 상속받음) | 현 jsp페이지를 기본적인 클래스가 아닌 다른 클래스로부터 상속하도록 변경 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
import = "java.util.*, java.io.*"
session="false"
isErrorPase = "true"
%>
java <%@ include file="파일 path" %>
객체명 | type | 설명 |
---|---|---|
request | ||
response | ||
pageContext | 각종 기본 객체를 얻거나 forward / include할 때 사용 | |
session | 클라이언트에 대한 세션 정보처리할 때 사용, session= true일 때만 사용 가능 | |
application | javax.servlet.ServletContext | = Project = Context |
out | ||
config | servlet의 환경정보를 얻어냄 | |
page | this라고 생각 | |
객체 | scope |
---|---|
pageContext | 딱 한번 요청되는 다음페이지까지만 범위 존재 (forward까지만 범위가 존재) |
request | |
session | session=true인 페이지 전부 범위 존재 (session시간까지만 유효) |
application | 가장 넓은 범위로 제약조건 없이 프로젝트 어디에서든 사용 가능, 무조건 application에만 담아놓으면 메모리 낭비가 발생할 수 있음 |
http://localhost:8080/test/MainServlet?a=hello | http://localhost:8080/test/ResponseServlet |
---|---|
context, request, session의 data 속성에 hello가 저장 | context, request, session의 data 속성을 조회 |
http://localhost:8080/test/MainServlet?a=hello
요청http://localhost:8080/test/ResponseServlet
응답 확인http://localhost:8080/test/ResponseServlet
응답 확인첫번째로 응답(chrome) | 두번재 응답(edge) |
---|---|
- session은 클라이언트 당 하나씩 할당 되기 때문에 두번째로 응답을 받은 브라우저에 값이 할당되지 않았다. |
|||