일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 예약어
- 함수
- 오버라이딩
- 친절한 SQL 튜닝
- 스프링시큐리티 로그아웃
- 자바의정석
- 객체
- 비교 연산자
- spring 게시판 삭제
- StringBuffer
- 산술 연산자
- 이클립스 설치
- @PreAuthorize("isAuthenticated()")
- 상속
- SQL
- join
- 오버로딩
- SQL 튜닝
- 친절한 SQL
- SQL튜닝
- 배열
- 연산자
- java
- 논리 연산자
- 식별자
- 반복문
- 인텔리제이 Web 애플리케이션
- 객체지향
- SpringSecurity 로그인
- SpringSecurity 로그아웃
Archives
- Today
- Total
gi_dor
JSP 개념 본문
728x90
JSP
- Java Server Page
- 사용자의 요청이나 조건에 따라 변하는 컨텐츠인 동적 웹 컨텐츠의 응답으로 제공하는 웹 애플리케이션 개발에
쓰이는 자바의 웹 기술이다
• HTML , XML , JSON - HTML태그로 구성된 문서 내에 자바 코드 사용이 가능한 파일
• Java 코드 덕분에 DB작업이나 , 동적으로 태그 생성하는 것도 가능하다 - JSP를 이용해 개발된 웹 애플리케이션을 실행하기 위해서는 웹 애플리케이션 서버가 필요하다
• Tomcat , Jetty , Jboss , Weblogic , JEUS
JSP 구성요소
Page 디렉티브
- contentType : 응답 컨텐츠의 타입 및 인코딩 방식 설정
<% page contentType="text/html; charset=utf-8" %> <% page contentType="text/xml; charset=utf-8" %> <% page contentType="application/json; charset=utf-8" %> <% page contentType="text/plain; charset=utf-8" %>
- page Encoding : jsp 파일을 저장할 때 사용하는 인코딩 방식 설정
<%@ page pageEncoding="utf-8" %>
- import : jsp 파일에 사용되는 클래스에 대한 import문
<%@ page import="java.util.List"%>
- include : JSP 페이지에 다른 JSP 페이지를 포함시킨다
<%@ include file="현재페이지에 포함시킬 jsp파일의 경로와 이름" />
<%@ include file="include/navbar.jsp" %>
- Scriptlet : 웹 애플리케이션에서 동적인 컨텐츠 생성하는 데 사용
서블릿 보다 간결하고 작성하는 방법이 쉽다.
📌 예시
Servlet 을 사용한 코드
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 응답의 Content Type을 HTML로 설정
response.setContentType("text/html");
// 출력 스트림을 얻어옴
PrintWriter out = response.getWriter();
// HTML 내용 출력
out.println("<html>");
out.println("<head><title>Hello, Servlet!</title></head>");
out.println("<body>");
out.println("<h1>Hello, Servlet!</h1>");
out.println("</body></html>");
// 출력 스트림을 닫음
out.close();
}
}
스트립틀릿 사용한 코드
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Hello, Scriptlet!</title>
</head>
<body>
<h1>Hello, Scriptlet!</h1>
<% out.println("<p>This is a simple example of Scriptlet.</p>"); %>
</body>
</html>
- 표현식 : 변수의 값 , 메서드 실행 결과를 출력에 포함시킬 때 사용한다
<%= 변수명 , 혹은 반환 값이있는 메서드%>
<%
int bookNo = Integer.parseInt(request.getParameter("no"));
BookService bookService = BookService.getInstance();
Book book = bookService.getBookInfo(bookNo);
%>
<dl>
<dt>제목</dt><dd><%=book.getTitle() %></dd>
<dt>저자</dt><dd><%=book.getWrite() %></dd>
<dt>쟝르</dt><dd><%=book.getGenre() %></dd>
<dt>가격</dt><dd><%=book.getPrice() %></dd>
<dt>재고량</dt><dd><%=book.getStock() %></dd>
<dt>상태</dt><dd><%=book.getStatus() %></dd>
</dl>
JSP 내장객체
- JSP 페이지가 Java로 변환될 때 _jspService() 메서드에서 사용가능한 객체
- JSP는 웹 애플리케이션 개발이 필요한 객체를 미리 생성한 뒤에 변수에 저장, 스트립틀릿에서 사용 가능한
상태로 초기화
_jspService(request,response) {
PageContext pageContext =...;
ServletContext application = pageContext.getServletContext()
ServletConfig config = pageContext.getServletConfig()
JspWriter out = pageContext.getWriter();
HttpSession session = pageContext.getSession()';
Object page = this;
}
변수명 | 클래스명 | 설명 |
request | HttpServletRequest | 클라이언트가 보낸 요청메세지 정보를 저장 |
response | HttpServletResponse | 클라이언트로 보낼 응답메세지 정보를 저장 |
session | HttpSession | 세션정보를 저장(로그인처리와 관련) |
application | ServletContext | 웹 애플리케이션을 나타내는 객체 |
out | JspWriter | 응답컨텐츠를 클라이언트로 출력하는 스트림 |
config | ServletConfig | 서블릿의 초기화에 필요한 정보를 저장 |
pageContext | PageContext | JSP 페이지에 대한 정보를 저장 |
exception | Throwable | 에러정보를 저장(isErrorPage="true")에서만 사용가능 |
page | Object | JSP 페에지를 구현한 자바객체가 저장 |
ServletContext
- 웹 애플리케이션 하나당 하나 생성되는 객체
- 웹서버가 가동될 때 상성
- 웹 서버가 종료될 때 폐기
- 웹 애플리케이션과 관련된 설정 정보를 포함한다
HttpServletRequest , HttpServletResponse
- Http 요청당 하나 생성되는 객체
- 요청을 처리하고 응답이 완료되면 폐기
- 요청메세지 , 응답 메세지를 담당
HttpServletRequest
- ServletRequest 인터페이스를 상속받은 인터페이스 , HTTP 요청 메세지 처리에 특화된 기능이 추가로 정의
- request 변수에 저장
- 클라이언트 서버로 보낸 요청 메세지를 저장한다
- 요청 메세지 정보를 획득할 수 있는 다양한 getXXX() 메서드 제공
반환타입 | 메서드 | 설명 |
String | getParameter(String name) | 지정된 이름의 요청파라미터 값을 반환 요청파라미터값이 없으면 null |
void | setAttribute(String name, Object value) | 요청객체에 이름, 객체의 속성을 저장 |
Object | getAttribute(String name) | 요청객체에서 지정된 이름으로 저장된 속성 반환 지정된 이름의 속성이 존재하지 않으면 null |
void | removeAttribute(String name) | 요청객체에서 지정된 이름으로 저장된 속성을 삭제 |
HttpSession | getSession( ) | • 요청객체의 세션아이디에 해당하는 세션객체를 반환 • 세션아이디가 없으면 세션객체를 새로 생성 후 반환 • 세션아이디에 해당하는 세션객체가 없으면 새로 생성 후 반환 |
HttpServletResponse
- ServletResponse 인터페이스를 상속받은 인터페이스 , HTTP 응답 메세지 처리에 특화된 기능 추가로 정의
- response 변수에 저장
- 서버가 클라이언트로 보낼 응답 메세지
- 응답 메세지에 대한 정보를 얻을수 있는 setXXX() 메서드 제공
반환타입 | 메서드명 | 설명 |
void | senedRedirect(String url) | 지정된 url을 재요청하게 하는 응답을 보냄 |
void | setContentType(String type) | 응탑 컨텐츠의 타입 설정 |
void | setStstus(int statuscode) | HTTP 응답 코드 설정 |
void | setHeader(String name , String value) | 응답 헤더 값을 설정 |
HttpSession
- 클라이언트 당 하나 생성되는 객체
- 클라이언트 마다 고유한 자신의 세션 객체가 있다 ( 인증된 로그인정보 저장 )
- 로그아웃을 실행하거나 , 일정 시간 이상 웹사이트 이용이 없다면 폐기 ( 기본 30분 )
- 클라이언트가 처음 접속 할 시 자동 생성 및 생성된 HttpSession 객체의 아이디가 응답으로 클라이언트에게 보내짐
- 세션 아이디를 전달받은 클라이언트는 요청할 때마다 세션 아이디를 요청 헤더에 담아서 서버로 전송
- 인증이 완료된 사용자 정보를 속성으로 저장
- 서버는 요청헤더의 세션 아이디를 조회해서 그 아이디에 해당하는 세션객체를 실행되는 JSP session 변수에 저장
HttpSession 용도
- 클라이언트의 정보를 보관
클라이언트 별로 각각 다른 세션 객체를 사용하기 때문
개인화된 정보를 속성으로 저장 ( 장바구니 , 마이페이지 , 최근본 상품 ) - 클라이언트의 상태 유지
접속한 클라이언트를 식별해 해당 클라이언트에게 적절한 응답 제공
반환타입 | 메서드 | 설명 |
void | setAttribute(String name , Object value) | 세션객체에 이름, 속성 저장 |
Object | getAttribute(String name) | 세션객체에서 지정된 이름으로 저장된 속성 반환 저장된 이름이 없다면 null |
void | removeAttribute(String name ) | 세션객체에서 지정된 이름으로 저장된 속성 삭제 |
void | invalidate() | 세션 객체를 무효화 로그아웃 요청시 실행 |
728x90
'Back_End > JSP_Servlet' 카테고리의 다른 글
Redirect , Forward (0) | 2024.03.11 |
---|---|
FrontController - 간단 (0) | 2024.02.14 |
[Web] MVC 패턴 - Model1 Model2 (1) | 2024.02.14 |
세미 프로젝트 - 로그인 , 세션 다루기 (1) | 2024.02.14 |
인텔리제이에서 Web 애플리케이션 프로젝트 만들기 (1) | 2024.01.01 |