1인 개발의 경우 MVC 방식에 따라 쿼리로 DBMS 내용을 가져와 데이터를 준비하는 servlet(model,controller)과 jsp(출력view) 만으로 나눠 서비스를 해도 크게 상관이 없지만, 기업과 같은 다인 개발의 경우 개발자의 역량이나 기업 업무의 파악도에 따라 servlet에서 추가로 특정 업무 서비스(계좌이체 같은)를 담당하는 파트로 나뉜다.

상대적으로 위험도가 적고 코드 수정이 자유로운 입출력부 Controller는 신입에게, 업무 이해도가 높아야 하는 중요 업무 서비스 혹은 신규 서비스 기능 등은 리스크를 감안해 경험이 많은 개발자에게 맡기는 것

처리해야 할 데이터가 많고 보안이 중요하다면 따로 데이터서비스(DAO), 즉 CRUD 업무를 처리해 DBMS 자체적으로 파일을 관리하여 서버에서는 보안을 위해 DB쿼리 사용을 억제하고 정제된 파일을 받아서 쓰기만 하면 되는 DBA를 쓰기도 한다

기업형 개발 업무의 일반적인 형태
사용자 <-> 문서 출력(View) <-> 제어(Controller) <--(Mode)--> 업무 서비스(트랜잭션 처리) <--(Entity)---> 데이터 서비스(DAO) <--(SQL)--> DBMS

(기업 상황에 따라 유동적으로 업무 로직을 합칠 수도, 분할할 수도 있다)



'Development > etc...' 카테고리의 다른 글

inteliJ, gradle, Spring Boot 자잘한 정보  (0) 2022.10.01
소프트웨어 개발 3대 원칙  (0) 2022.08.16
HTML, CSS, JS 유용한 사이트  (0) 2022.07.16

오늘 배운 것 :

 

JSTL, MVC Model 구조화

 

 

느낀 점:

 

JSTL 편하네

 

 

아쉬웠던 점:

 

X

'TIL' 카테고리의 다른 글

#13  (0) 2022.08.19
#12  (0) 2022.08.17
#10  (0) 2022.08.14
#9  (0) 2022.08.13
#8  (0) 2022.08.12

 

< JSTL (JSP Standard Tag Library) >


JSP View에서 사용할 수 있는 태그 라이브러리

https://www.javatpoint.com/jstl
JSTL 태그 기능 참고 사이트

https://mvnrepository.com/artifact/javax.servlet/jstl/1.2
JSTL 라이브러리 다운로드

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
jar파일 WEB-INF\lib 폴더에 추가 후 jsp 파일 상단에 위의 page지시자 추가



게시판 목록 생성

JSTL 사용 전)

1
2
3
4
5
6
7
8
9
10
11
12
13
<%
    List<Notice> list = (List<Notice>)request.getAttribute("list");
    for(Notice n : list){ 
    pageContext.setAttribute("n", n);
%>
<tr>
    <td>${n.id}</td>
    <td class="title indent text-align-left"><a href="detail?id=${n.id}">${n.title}</a></td>
    <td>${n.writerId}</td>
    <td>${n.regdate}</td>
    <td>${n.hit}</td>
</tr>
<%%>
cs


JSTL 사용 후)

1
2
3
4
5
6
7
8
9
<c:forEach var="n" items="${list}">
<tr>
<td>${n.id}</td>
<td class="title indent text-align-left"><a href="detail?id=${n.id}">${n.title}</a></td>
<td>${n.writerId}</td>
<td>${n.regdate}</td>
<td>${n.hit}</td>
</tr>
</c:forEach>
cs



 

JSTL 기능 범주


Core
Formating
Functions
SQL 
XML

(SQL, XML 기능은 MVC가 나오기 전 쓰던 방식으로 이제는 쓰지 않는 게 좋다)


유용한 JSTL 


<c:set>
<c:remove>
<c:if>
<c:choose>
<c:when>
<c:otherwise>
<c:forEach>
<c:forTokens>
<c:url>
<c:catch>

 

 

간단한 for 태그 라이브러리를 만들기 위한 코드


ForTag 클래스
TagSupport 상속
+doStartTag
+doEndTag
+doAfterBody
메소드 오버라이드


태그 Descriptor

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<taglib>
    <tlibversion>1.0</tlibversion>
    <jspversion>1.1</jspversion>
    <shortname>control</shortname>
    <uri>http://www.abcd.com/jsp/tags/control</uri>  // 고유식별자
    <info>제어구조 라이브러리</info>
 
    <tag>
    <name>for</name>
    <tagclass>
        com.abcd.web.taglib.ForTag
    </tagclass>
    <info>반복문</info>
    </tag>
</taglib>
cs


파일 path : WEB-INF\{파일명}.tld

 

JSP에서 JSTL 사용 시

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
uri = 고유식별자, prefix = 고유식별자가 너무 길기 때문에 fix
사용 - <c:for>


 

JSTL Core 기능

 

1
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
cs

-page 지시자 추가

 


<c:forEach> 태그
var="n"                                  값을 담을 임시변수설정
items="${list}"                      저장소에서 꺼내올 배열
begin="0", end="9"              출력할 인덱스 범위 
varStatus="st"                      반복 중 현재 상태 값 확인                    

varStatus 속성 사용
%{st.current}                     현재 반복되는 아이템
%{st.index}                        현재 반복되는 인덱스
%{st.count}                        현재 반복 횟수
%{st.first}                          현재 아이템이 첫번째면 true
%{st.last}                           현재 아이템이 마지막이면 true
%{st.begin}                        begin 속성에 설정한 값
%{st.end}                           end 속성에 설정한 값
%{st.step}                         반복되는 인덱스의 증가치 (기본:1) (for문의 i++ 구간)

 


<c:set 태그>
-지역 변수를 만들 수 있다
<c:set var="page" value="${param.p}">


<c:if 태그>
-if 문, else 문은 없다
<c:if test="${조건식}">
실행 할 코드
</c:if>


JSTL 사용하여 pager 번호 생성해보기

 

1
2
3
4
5
6
7
8
<c:set var="page" value="${(empty param.p)?1:param.p}" />
<c:set var="startNum" value="${page-(page-1)%5}" />
 
<ul class="-list- center">
    <c:forEach var="i" begin="0" end="4">
        <li><a class="-text- orange bold" href="?p=${startNum+i}&t=&q=">${startNum+i}</a></li>
    </c:forEach>
</ul>
cs


현재 get으로 전달되는 page parameter를 매개로 page의 첫번째 숫자를 구한다.
${(empty param.p)?1:param.p} null일시 기본값을 1페이지로 해서 기본 게시판 페이지의 NullException을 막고
전달되어온 parameter를 기반으로 ${page-(page-1)%5}를 계산해 요청된 parameter의 첫번째 페이지를 구한다
아래에서 forEach로 반복하며 요청 시의 parameter 값 정의와 페이지 번호를 출력하는 용도로 써먹는다


JSTL 사용하여 추가로 pager 버튼 만들어보기


1
<c:set var="LastNum" value="23" />
cs

-MAX 페이지 수 임시 값 등록

다음 버튼

1
2
3
4
5
6
7
8
<div>
    <c:if test="${startNum+5 < LastNum}">
        <a href="?p=${startNum+5}&t=&q=" class="btn btn-next">다음</a>
    </c:if>
    <c:if test="${startNum+5 >= LastNum}">
        <span class="btn btn-next" onclick="alert('다음 페이지가 없습니다.');">다음</span>
    </c:if>
</div>
cs


이전 버튼

1
2
3
4
5
6
7
8
<div>
    <c:if test="${startNum > 1}">
        <a href="?p=${startNum-1}&t=&q=" class="btn btn-prev">이전</a>
    </c:if>
    <c:if test="${startNum <= 1}">
        <span class="btn btn-prev" onclick="alert('이전 페이지가 없습니다.');">이전</span>
    </c:if>
</div>
cs




JSTL forTokens로 첨부파일 목록 출력하기


(현재 Db에 파일명1.확장자1,파일명2,확장자2,파일명3,확장자3 형태로 커밋 해둔 상태)

1
2
3
4
5
6
7
8
9
10
11
<tr>
    <th>첨부파일</th>
    <td colspan="3" style="text-align:left; text-indent:10px;">
    <c:forTokens var="fileName" items="${n.files}" delims="," varStatus="st">
    <a href="${fileName}">${fileName}</a>
    <c:if test="${!st.last}">
        /
    </c:if>
    </c:forTokens>
    </td>
</tr>
cs



 

JSTL Format 기능

 

1
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
cs


-page 지시자 추가


JSTL format 태그로 날짜 형식 변경하기

1
<td><fmt:formatDate pattern="yyyy-MM-dd hh:mm:ss" value="${n.regdate}" /></td>
cs


JSTL format 태그로 숫자 형식 변경하기

1
<td><fmt:formatNumber value="${n.hit}" /></td>
cs

-기본 형식은 세 자릿수 마다 , 로 끊음


https://www.javatpoint.com/jstl-fmt-formatnumber-tag
-참고 주소



JSTL functions 기능


https://www.javatpoint.com/jstl-function-tags
-참고 주소

사용예)

1
2
3
4
5
6
7
8
9
10
<c:forTokens var="fileName" items="${n.files}" delims="," varStatus="st">
    <c:set var="style" value="" />
    <c:if test="${fn:endsWith(fileName, '.zip')}">
        <c:set var="style" value="font-weight:bold; color:red;"/>
    </c:if>
    <a href="${fileName}" style="${style}">${fn:toUpperCase(fileName)}</a>
    <c:if test="${!st.last}">
    /
    </c:if>
</c:forTokens>
cs


${fn:endsWith()} 
-문자열 끝 찾아서 boolean 반환 (아이콘 등을 붙이는 데 사용할 수 있음)

${fn:toUpperCase()}
-대문자 변환

'Development > Java' 카테고리의 다른 글

Servlet / Jsp admin page #10  (0) 2022.08.22
JDBC 제어 oracleDB SQL 게시판용 몇개 #9  (0) 2022.08.21
JSP, EL 보충 #7  (0) 2022.08.15
JSP EL(Expression Language) #6  (0) 2022.08.14
JSP MVC model #5  (0) 2022.08.14

 


html 파일 => jsp 변환 시 소스코드의 한글이 깨졌을때 인코딩 방식 변경방법
File > Properties (Alt+Enter) > Resource > Text file encoding > UTF-8


JSP로 바뀌었으면 브라우저에 출력 인코딩 정보도 넘겨주어야 하기 때문에 page 지시자로 다음 코드도 넣어준다
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>


JSP에서 java 모듈을 임포트 할때도 page 지시자를 쓴다. (hotkey - ctrl+spacebar)
ex) <%@page import="java.sql.DriverManager"%>


웹개발시 서버의 물리적 환경을 어떻게 구축할지 모르기 때문에 참조하는 라이브러리 파일의 path가 달라질 수 있다.
때문에 개발에 사용되는 ojdbc.jar, jstl.jar 또는 직접만든 재사용 라이브러리 등의 파일은 배포할때 함께 포함시켜서 상대 경로로 path를 등록해주어야 한다.

톰캣을 이용한 웹개발에서는 별개로 사용하는 라이브러리가 있을 경우 다음 경로에 포함시켜준다
Prj\src\main\webapp\WEB-INF\lib




< Model 데이터를 위한 클래스(Entity) 정의와 사용방법의 변화 >

 

MVC에서 모델로 사용할 데이터를 그대로 가져다 쓰면 비슷한 코드의 반복이 많아지거나 모델 변수명이 비슷한 의미로 중첩되어 스파게티스러워 진다. 데이터를 클레스로 구조화 시켜주면 유지보수나 개발 시에 직관적으로 파악할 수 있다.

예시)
request.setAttribute("title", title);
request.setAttribute("writerId", writerId);
request.setAttribute("regdate", regdate);
request.setAttribute("hit", hit);
request.setAttribute("files", files);
request.setAttribute("content", content);
== 구조화 ==> request.setAttribute("n", notice);
== JSP 사용시 ==> ${n.title}


EL 사용을 염두해 두고 model 데이터 클래스로 정의하기

 

public class Notice {
private int id;
private String title;
private String writer;
private Date regdate;
private String content;
private int hit;

public int getId() {
return id;
}
}

-멤버 변수들 세팅용 생성자를 오버로드 해주고, getter와 setter 그리고 확인용으로 toString 메소드도 추가해준다.


<td>${notice.id}</td>
<a href=detail.jsp?c=${notice.code}">${notice.title}</a>


-EL 표현식은 get이후 첫스펠링은 소문자로 그리고 get과 생성자함수() 표현은 생략한다.

(private 멤버변수를 꺼내올 수는 없는 거고, getter를 써서 끌어쓰기 때문에 EL에서는 표현식을 생략하고 있는 것을 확인할 수 있다)
-EL은 반복할 수 있는 기능이 없다. 그래서 게시판 등에서 전달받은 목록 배열을 뿌려줄때는 태그 라이브러리(JSTL) 기능 등을 사용하기도 한다.



<View 페이지 은닉>

MVC model2 방식으로 소스를 나눴다면 출력부분은 콘트롤러에 의해서만 불려지고
클라이언트에서 직접 요청해서는 안되는 부분이기 때문에 WEB-INF 폴더에 따로 빼서
사용자가 요청할 수 없는 페이지로 만들어준다.

'Development > Java' 카테고리의 다른 글

JDBC 제어 oracleDB SQL 게시판용 몇개 #9  (0) 2022.08.21
JSTL #8  (0) 2022.08.15
JSP EL(Expression Language) #6  (0) 2022.08.14
JSP MVC model #5  (0) 2022.08.14
Servlet & JSP (method) #4  (0) 2022.08.13

오늘 배운 것 :

 

EL(expression language), JSP MVC model

 

 

느낀 점:

 

생산성과 유지보수를 위한 노력들 덕분에 알아야 할 게 많아서 힘들다

 

 

아쉬웠던 점:

 

영어 실력에 대한 필요성이 점점...

'TIL' 카테고리의 다른 글

#12  (0) 2022.08.17
#11  (0) 2022.08.15
#9  (0) 2022.08.13
#8  (0) 2022.08.12
#7  (0) 2022.08.11

 

< EL (Expression Language) >


-저장 객체에서 값을 추출해서 출력하는 표현식

 

 

JSP에서 출력 부분(HTML)에 EL 표현식을 사용하면 쉽게 값을 추출해서 출력해줄 수 있다.

 

Controller View (java 사용 시) EL (표현식 사용 시)
request.setAttribute("cnt",30); request.getAttribute("cnt"); ${cnt}
List list = new ArrayList(){"1", "test"...};
request.setAttribute("list", list);
((List)request.getAttribute("list")).get(0) ${list[0]}
Map n = new HashMap("title", "제목");
request.setAttribute("n", n);
((Map)request.getAttribute("n")).get("title") ${n.title}



EL이 저장 객체에서 값을 추출하는 순서에는 우선 순위가 있다.

page > request > session > application


위 순서로 추출하며 상위 저장 객체에 저장된 값을 먼저 추출한다.
때문에 동일한 이름의 변수가 존재할 때는 정확하게 원하는 값을 출력하기 위해서 사용하는 내장 객체가 존재한다.

내장 객체 설명
pageScope Page 영역의 생명 주기에서 사용되는 저장소
requestScope Request 영역의 생명 주기에서 사용되는 저장소
sessionScope Session 영역의 생명 주기에서 사용되는 저장소
applicationScope Application 영역의 생명 주기에서 사용되는 저장소
param 파라미터 값을 저장하고 있는 저장소 (?cnt=3 << 3 param)
paramValues 파라미터 값을 배열로 저장하고 있는 저장소
header Header 정보를 저장하고 있는 저장소
headerValues Header 정보를 저장하고 있는 저장소
cookie 쿠키 정보를 저장하고 있는 저장소
initParam 컨텍스트의 초기화 파라미터를 저장하고 있는 저장소
pageContext 페이지 범위의 컨텍스트 저장소

사용법 ex)
${requestScope.cnt}
-request 저장소에서 저장 중인 cnt 변수를 사용


pageContext는 page 내에서 사용할 수 있는 servlet 객체들(request,session,application 등등)을 모아놓았다.
자체적으로 저장소 기능도 갖추고 있어 setAttribute, getAttribute 또한 가능하다

EL에서는 함수를 호출하는 방식은 사용할 수 없고, 속성을 사용하는 것처럼 써야하나 pageContext의 getter는 사용할 수 있다. 다만 사용할 때는 get 명령어와 생성자호출()은 제외하고 작성해야 한다.

사용법 ex)
${pageContext.request.method}

위는 아래의 JSP를 사용한 java 코드와 같은 기능을 한다.
<%=pageContext.getRequest().getMethod()%> 
 


< EL 연산자 >


[] .
()
not ! empty
* / div % mod
+ -
< > <= >= lt gt le ge
== != eq ne
&& and
|| or
? :

 

굳이 < > 대신 lt gt (less then, greater then) 등 문자형 비교연산자를 사용하는 이유


EL은 JSP에서 쓰이는데 HTML이 꺽음쇠를 무조건 사용해서 직관성이 떨어진다.
또한 XHTML 기반의 문서나 HTML을 엄격한 구문으로 파악하는 구조로 만들면 기호형 연산자는 허용하지 않고
오류를 일으킬 가능성이 있다.
(그래도 오류가 없다면 편한 기호형을 쓰자)

 

 

empty 연산자는 자주쓰임


ex) 

EL Java Browser return
empty param.n param.n == null || param.n == "") (url || url?n=) true
not empty param.n !(param.n == null || param.n == "") (url?n=3) true


ex2 삼항연산)
${empty param.n?'값이 비어 있습니다.':param.n} 

 

결과 값 예제
EL Expression Result
${1 > (4/2)} false
${4.0 >= 3} true
${100.0 == 100} true
${(10*10) ne 100} false
${'a' < 'b'} true
${'hip' gt 'hit'} false
${4 > 3} true
${1.2E4 + 1.4} 12001.4
${3 div 4} 0.75
${10 mod 4} 2

 

'Development > Java' 카테고리의 다른 글

JSTL #8  (0) 2022.08.15
JSP, EL 보충 #7  (0) 2022.08.15
JSP MVC model #5  (0) 2022.08.14
Servlet & JSP (method) #4  (0) 2022.08.13
Servlet (service, doGet, doPost) #3  (0) 2022.08.13


<JSP MVC model (model, view, controller)>


Java 코드와 HTML 코드를 Mode(출력데이터)을 사용해 Controller(Java)와 View(Html)로 나누는 코드 작성 방식


JSP MVC model1
-컨트롤러와 뷰가 물리적으로 분리되지 않은 방식

출력 코드(View)에 단순하게 출력할 값을 저장한 변수(Model)만을 넣고
나머지 코드는 모두 입력 코드 부분(controller)으로 집중화


JSP MVC model2
-컨트롤러와 뷰가 물리적으로 분리된 방식

model1의 상태에서 Controller, Model 부분과 View를 다른 파일로 분리 
Dispatcher와 foward 기능을 사용해 view 호출

ex)
RequestDispatcher dispatcher = request.getRequestDispatcher("spag.jsp");
dispatcher.forward(request, response);
(서블렛의 업무를 이어갈 때는 foward, 새로 요청할 때는 redirect 사용)

-실행은 무조건 Controller에서 한다

'Development > Java' 카테고리의 다른 글

JSP, EL 보충 #7  (0) 2022.08.15
JSP EL(Expression Language) #6  (0) 2022.08.14
Servlet & JSP (method) #4  (0) 2022.08.13
Servlet (service, doGet, doPost) #3  (0) 2022.08.13
Servlet (Application, Session, Cookie) #2  (0) 2022.08.12



<JSP (Jasper)>


-html을 java servlet을 사용해 동적 페이지로 편하게 출력해 줄 수 있게 해주는 프로그램
(html 속에 java servlet이 직관적으로 보기 편하게 공존하는 뭐 그런 느낌이다)

-요청할 때마다 달라진 게 있다면 jasper는 다시 만들어주기 때문에 서버를 재시작할 필요가 없다.
(servlet 순수 개발은 재컴파일 과정이 필요하기에 ide 개발을 하더라도 서버를 재시작해줄 필요가 있었다)

-톰캣 프로젝트 명이 Catalina라 경로 폴더에 해당 프로젝트 명이 있다
(톰캣설치폴더\work\Catalina\localhost\ROOT\org\apache\jsp)

-.jsp 확장자를 사용하여 작성하며 파일명_jsp.java (컴파일시 파일명_jsp.class 추가) 로 생성된다
(.jsp 파일명 자체가 url로 맵핑된다)

-html 확장자를 jsp로 만들어 위 파일을 실제로 열어보면 무수한 out.write로 처리된 html 구문을 볼 수 있다
(옛날엔 실제로 일일히 out.write를 쳐줬다고 한다...ㅋ)



<Jasper를 이용한 코드 작성>


출력 코드(html,css)
-그대로 작성

<%! java code %>
-jsp 멤버함수, 멤버변수가 있는 클레스에 java code 사용
-jsp 메소드 밖, jsp 서비스 메소드가 속한 클래스에서의 코드 사용(일반 클래스에서 하는 작업이 모두 가능)

<% java code %> 
-jspService 메소드 내에서 사용하는 java code
-지역변수 알고리즘이 있는 함수 속이라 멤버변수 정의, 함수정의 등이 불가능

<%= 출력변수 %>
-<% out.print(출력변수) %>와 같은 의미

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
-page 지시자
-jsp에서는 인코딩 설정시 출력코드가 입력 지시보다 먼저 이루어지는 경우가 있기에 illegalStateException을 내뱉는다.
-그래서 page 인코딩 등의 설정에 우선 순위를 주기 위해 사용한다



<JSP 내장 객체>


-jasper에는 보이지 않을 뿐 jsp servlet와 내부 service 메소드에는 미리 정의해놓은 변수와 함수들이 존재한다.
-이 내장 객체들과 동일한 이름을 사용하면 오류가 발생한다.


<Servlet, JSP 내장 객체 환기>

 

Request

                                          메서드                                              설명
getParameterNames() 사용자가 전달한 키들을 Enumration 객체로 반환
getParameter(name) 사용자가 전달한 name과 일치하는 값을 반환
getParameterValues(name) 사용자가 전달한 name과 일치하는 값을 배열형식으로 반환
getCookies() 클라이언트에서 전달한 쿠키를 배열 형식으로 반환
getMethod() 현재 요청방식이 GET인지 POST인지를 문자열로 반환
getSession() 현재 세션 객체를 반환
getRemoteaddr() 클라이언트의 IP 주소를 반환
getProtocol() 현재 서버의 프로토콜을 문자열로 반환
setCharacterEncoding() 현재 JSP로 전달되는 내용을 지정한 문자셋으로 변환해준다.
getHeaderNames() 현재 요청이 가지는 헤더의 이름들을 반환
getHeaders(name) 현재 요청한 헤더에서 지정한 이름의 모든 값들을 반환
getQueryString() 현재 요청에 포함된 쿼리문자열을 반환
내장 객체 request : HttpServletRequest

 

Response

                                          메서드                                            설명
setContentType(type) 컨텐트 형식을 설정("test/html; charset=UTF-8")
setHeader(name, value) 클라이언트에게 헤더로 전달할 값을 설정
setDateHeader(name, date) 클라이언트에게 헤더로 전달할 날짜를 설정
sendError(status, msg) 클라이언트에게 에러코드와 메시지를 전달
sendRedirect(url) 클라이언트 요청을 다른 페이지로 전달
addCookie(cookie) 클라이언트에게 전달할 쿠키를 설정
encodeURL(url) URL로 유효하지 않은 문자를 인코딩
setStatus(sc) 상태 코드를 설정
내장 객체 response : HttpServletResponse

 

Out

                                          메서드                                             설명
getBufferSize() output buffer의 크기를 byte로 알려준다
getRemaining() 남아있는 버퍼의 크기중 사용가능한 비율을 알려준다
cleaBuffer() 버퍼에 있는 콘텐츠를 모두 지운다
flush() 버퍼를 비우고 output stream도 비운다
close() output stream을 닫고 버퍼를 비운다
println(content) content의 내용을 newline과 함께 출력한다
print(content) content의 내용을 출력한다
내장 객체 out : javax.servlet.jsp.JspWriter

 

Session

                                         메서드                                             설명
getID() 각 접속에 대한 세션 고유의 id를 문자열 형태로 반환
getCreationTime() 세션이 생성된 시간을 밀리세컨드 값으로 반환
getLastAccessedTime() 현재 세션으로 마지막 작업한 시간을 밀리세컨드 값으로 반환
getMaxInactiveInterval() 세션 유지 시간을 초로 반환
setMaxInactiveInterval(t) 세션 유효시간을 t에 설정된 초 값으로 설정
invalidate() 현재 세션을 종료. 세션과 관련한 값을 모두 지움
getAttribute(attr) 문자열 attr로 설정된 세션값을 object 형태로 반환
setAttribute(name,attr) 문자열 name으로 attr을 설정
removeAttribute(name) 세션에 설정한 속성 값을 삭제
내장 객체 session : javax.servlet.http.HttpSession

 

Application

                                          메서드                                             설명
setAttribute(name, value) application 범위의 값 설정
getAttribute(name) application 범위 값 얻기
getRealPath(path) 실제 물리 경로를 반환
getResource(path) path 경로의 리소스를 가리키는 URL을 반환
getServerInfo() 현재 요청 방식이 GET인지 POST인지를 문자열로 반환
getSession() 현재 세션 객체를 반환
getRemoteAddt() 클라이언트의 IP 주소를 반환
getProtocol() 현재 서버의 프로토콜을 문자열로 반환
setCharacterEncoding() 현재 JSP로 전달되는 내용을 지정한 문자셋으로 변환해준다
내장 객체 application : javax.servlet.ServletContext

 

 

'Development > Java' 카테고리의 다른 글

JSP EL(Expression Language) #6  (0) 2022.08.14
JSP MVC model #5  (0) 2022.08.14
Servlet (service, doGet, doPost) #3  (0) 2022.08.13
Servlet (Application, Session, Cookie) #2  (0) 2022.08.12
Servlet #1  (0) 2022.08.11

+ Recent posts