JSP 문법
- 템플릿 데이터, JSP 전용 태그, 내장 객체
JSP 구성 요소는 크게 템플릿 데이터와 JSP 전용 태그, JSP 내장 객체 세 가지로 나눌 수 있다.
템플릿 데이터
|
클라이언트로 출력되는 콘텐츠
HTML, 자바스크립트, 스타일 시트, JSON, XML, 일반 텍스트 등이 여기에 해당한다.
|
JSP 전용 태그
|
서블릿 생성 시 특정 자바 코드로 바뀌는 태그
Directives(<%@ %>), Scriptlet Elements(<% %>), Declarations(<%! %>), Expressions(<%= %>), JSP Action(<jsp:...>)
|
JSP 내장 객체
|
JSP 기술 사양서에 정의된 필수적인 9개 객체
request, response, pageContext, session, application, config, out, page, exception
JSP에서 별도 선언 없이 사용 가능
|
- JSP 전용 태그
Directives(지시자)
<%@ 지시자 속성="값" 속성="값" ... %>
JSP 지시자는 지시자, 속성에 따라 자바 코드를 생성한다.
JSP 지시자에는 page, taglib, include가 있다.
- page
page 지시자는 JSP 페이지와 관련된 속성을 정의할 때 사용하는 태그이다.
page 지시자의 예
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
속성
|
설명
|
language
|
스크립틀릿, 표현식, 선언부를 작성할때 사용할 프로그래밍 언어를 지정한다.
즉 JSP 페이지에 삽엡되는 코드의 스크립팅 언어를 지정한다.
JSP 2.2에서는 'java'만 허용된다. (모두 소문자로 작성)
language 속성을 생략하면 기본값은 'java'이다.
|
contentType
|
출력할 데이터의 MIME 타입과 문자 집합을 지정한다.
MIME 타입이 'text/html'이면 출력할 데이터가 HTML이라는 의미이다.
문자 집합이 'charset=UTF-8'이면 출력할 데이터를 UTF-8로 인코딩한다.
문자 집합을 생략하면 기본값 'ISO-8859-1'을 사용한다.
자바는 문자열을 다룰때 유니코드(UTF-16 BE)를 사용하는데 클라이언트로 문자열을 출력할때 유니코드를 contentType 혹은 pageEncoding에 설정된 문자 집합으로 인코딩하여 출력한다.
|
pageEncoding
|
출력할 데이터의 문자 집합을 지정한다.
기본값은 'ISO-8859-1'이다.
contentType 설정값보다 우선시된다.
이 속성을 생략하면 contentType에 설정된 값을 사용한다.
|
page 지시자는 다음과 같은 자바 코드를 생성한다.
- taglib
taglib는 태그 라이브러리를 선언할 때 사용한다.
taglib 지시자의 예 : JSTL Core 태그 라이브러리 선언
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
속성
|
설명
|
uri
|
사용할 태그 라이브러리 네임스페이스 식별자(URI)
|
prefix
|
태그 접두사
|
- Scriptlet Elements(스크립트릿)
<% 자바 코드 %>
JSP에 자바 코드를 작성할 때 스크립트릿 태그 <% %> 안에 작성한다.
스크립트릿 태그 안에 작성한 코드는 서블릿 파일을 만들 때 그대로 복사된다.
JSP 스크립트릿 코드의 예
- Declarations(선언문)
<%! %>
서블릿 클래스의 멤버(변수, 메서드)를 선언할 때 사용한다.
JSP 선언문의 예
\JSP에서 작성 위치는 상관없다.
선언문은 _jspService() 메서드 안에 복사되는 것이 아니라 _jspService() 밖의 클래스 블록 안에 복사되기 때문이다.
자바 서블릿 코드의 출력문으로 변환된 선언문의 예
- Expressions(표현식)
<%= %>
문자열을 출력할 때 사용한다.
따라서 표현식 <%= %> 안에는 결과를 반환하는 자바 코드가 와야 한다.
표현식은 출력문으로 만들어지며 스크립트릿과 같이 _jspService() 안에 순서대로 복사된다.
JSP 표현식의 예
- JSP Action
JSP에서 기본으로 제공하는 태그들의 집합을 'JSP Action'이라 한다.
다음은 JSP 2.2에서 제공하는 Standard Action들이다.
액션
|
설명
|
<jsp:useBean>
|
자바 인스턴스를 준비한다. 보관소에서 자바 인스턴스를 꺼내거나 자바 인스턴스를 새로 만들어 보관소에 저장하는 코드를 생성한다. 자바 인스턴스를 자바 빈(Java Bean)이라고 부른다.
|
<jsp:setProperty>
|
자바 빈의 프로퍼티 값을 설정한다.
자바 객체의 settet()를 호출하는 코드를 생성한다.
|
<jsp:getProperty>
|
자바 빈의 프로퍼티 값을 꺼낸다.
자바 객체의 getter()를 호출하는 코두를 생성한다.
|
<jsp:include>
|
정적(HTML, 텍스트 파일 등) 또는 동적(서블릿/JSP) 자원을 including하는 자바 코드를 생성한다.
|
<jsp:forward>
|
현재 페이지의 실행을 멈추고 다른 정적, 동적 자원으로 forwarding하는 자바 코드를 생성한다.
|
<jsp:param>
|
jsp:include, jsp:forard, jsp:params의 자식 태그로 사용한다.
ServletRequest 객체에 매개변수를 추가하는 코드를 생성한다.
|
<jsp:plugin>
|
OBJECT 또는 EMBED HTML 태그를 생성한다.
|
<jsp:element>
|
임의의 XML 태그나 HTML 태그를 생성한다.
|
- JSP Implicit Objects(내장 객체)
: request, response, pageContext, session, application, config, out, page, exception
JSP에서 자바 코드를 작성할 때 별도의 선언 없이 사용할 수 있는 자바 객체이다.
예를 들어 JSP에서 선언 없이 사용할 수 있는 request 객체가 이에 해당한다.
세션(session)
: 세션이란 웹 컨테이너에서 클라이언트의 정보를 서버에 보관하는 기능입니다.
1회성으로 연결이 종료되는 http 프로토콜의 단점을 보완해 클라이언트와 서버 간 접속을 유지시켜 줍니다.
웹 서버는 웹 컨테이너의 상태를 유지하기 위한 정보를 저장하고,
저장한 정보는 브라우저를 닫을 때, 일정 시간이 지났을 때, 서버에서 세션을 삭제했을 때 비로소 삭제가 이루어집니다.
- 세션에 값 저장하기
session.setAttribute(이름, 값)
regist_ok.jsp
String member_id = request.getAttribute("member_id");
session.setAttribute("member_id",member_id);
- 세션에서 값 가져오기
session.getAttribute(name)
String member_id = (String)session.getAttribute("member_id");
- 세션 정보 삭제하기
// 특정 세션 값 삭제
session.removeAttribute(name)
session.removeAttribute("member_id");
// 모든 세션 값 삭제
session.invalidate()
session.invalidate();
<session-config>
<session-timeout>30</session-timeout>
</session-config>
서버에 접속한 후 클라이언트가 요청을 보내지 않았을 때 세션의 기본적인 유지시간은 30분입니다.
이 유지시간에 대한 설정은 web.xml 파일 위와 같은 부분에서
session-timeout 태그를 직접 조작해 변경 가능합니다.
세션 유효 시간을 설정하는 두 가지 방법
1. WEB-INFO\web.xml 파일에 <session-config> 태그를 사용하여 세션 유효 시간 지정 (분 단위)
- 주의! <session-timeout> 값을 0이나 음수로 설정하면 유효 시간을 갖지 않아,
session.invalidate() 메서드를 호출하기 전까지 세션 객체가 계속 서버에 유지되어 메모리 부족 현상이 발생할 수 있음
<%
session.setMaxInactiveInterval(60*60);
%>
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<%@ page session ="true"%>
<%@ page import = "java.util.Date"%>
<%@ page import = "java.text.SimpleDateFormat"%>
<%
Date time = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
%>
<html>
<head>
<title>세션정보</title>
</head>
<body>
세션 ID: <%= session.getId()%><br>
<%
time.setTime(session.getCreationTime());
%>
세션생성시간: <%=formatter.format(time) %><br>
<%
time.setTime(session.getLastAccessedTime());
%>
최근접근시간: <%=formatter.format(time) %>
</body>
</html>
- 스프링 프레임워크 (Spring Framework)
: 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로서 간단히 스프링(Spring)이라고도 한다. 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있다. 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크의 기반 기술로서 쓰이고 있다.
* 특징
: 스프링은 경량 컨테이너로서 자바 객체의 라이프 사이클을 관리하며, 필요한 객체를 제공한다. 일반적인 J2EE 프레임워크에 비해 특정 인터페이스를 구현하거나 상속받을 필요가 없어, 기존 라이브러리를 쉽게 지원하며 객체가 가볍다.
스프링은 제어 반전(IoC), 의존성 주입(DI), 관점 지향 프로그래밍(AOP)을 지원하여, 사용자 코드의 호출, 서비스 간의 연결, 공통 기능의 분리 및 관리 등을 수행한다.
또한, 스프링은 영속성과 관련된 다양한 서비스를 지원하며, iBATIS나 하이버네이트 등의 데이터베이스 처리 라이브러리와 연결할 수 있다.
마지막으로, 스프링은 확장성이 높아, 기존 라이브러리를 간단히 감싸서 스프링에서 사용할 수 있으며, 많은 라이브러리가 이미 스프링에서 지원되고 있다. 이는 스프링에서 사용되는 라이브러리를 별도로 분리하는 것도 용이하게 한다.
해고해주는 웹사이트 (테이블에서 삭제)
해당 사원 번호와 사원 아이디, 사원 비밀번호를 입력하면 jsp에서 퀴리문을 사용해서 data를 삭제해 준다.
다음은 emp테이블에 있는 데이터를 조회하고 manager 이상의 직급부터는 정보를 수정하고, CEO 직급은 해고(데이터 삭제)를 할 수 있는 웹을 만들어보자.
'AIoT' 카테고리의 다른 글
AIoT 정규 36일차 (0) | 2024.02.22 |
---|---|
AIoT 정규 35일차 (0) | 2024.02.20 |
AIoT 정규 33일차 (0) | 2024.02.19 |
AIoT 정규 32일차 (0) | 2024.02.15 |
AIoT 정규 31일차 (0) | 2024.02.15 |