티스토리 뷰
JSP & 서블릿정리
///////////////////////////////////
//
Data 전송방식
Get : - 클라이언트의 요청 데이터를 패킷의 해더부분인
URL 꼬리에 달아
보낸다. 최대 256byte
- 주소창에 데이터가 유출된다.
- 검색용도로 많이 사용
- Http 프로토콜의 기본 데이터 전송방식
- 주소창에서 요청시, html에서 <A>로
링크된 페이지를 요청
<form>에서 요청방식을 생략시, <form
method="get">으로 요청시
Post : -클라이언트의 요청 데이터를 패킷의 바디부분에 담아 보낸다
- 데이터 유출이 없으므로 중요 정보를 보낼때 사용됨
- 데이터 양의 제한이 없다.
- <form
method="post">로 해야만 post로 전송된다.
//////////////////////////////////////////////////////////
//
Form 양식
: 클라이언트로 부터 직접 정보를 입력 받을 때 사용
syntex:
<form
[method="데이터전송방식"] [action="data를 전송할 url"]
[name="form에
대한 이름값으로 자바스크립트에서 객체로 인식"]
[enctype="data의 마임타입으로 파일전송시에만 사용"]
>
<input
type="text|hidden|password|button|image|radio|checkbox"
name="자바스크립트에서 객체로 인식, data를 전송할 이름 "
value="서버에 보낼 실제 값">
<select name="자바스크립트에서 객체로 인식, data를 전송할 이름 ">
<option
value="서버에 보낼 값">화면에 보일 값
</select>
</form>
//////////////////////////////////////////////////////////
//
form양식을 통해 입력된 데이터 얻어오기
- HttpServletRequest
public
String getParameter(String name) : get, post모두 사용
name :
input태그에서 지정한 name을 지정
하나의 name으로 한개의 value가 넘어올때 사용
public String[] getParameterValues(String name) : get, post모두 사용
하나의 name으로 여러개의 value가 넘어올때 사용 => checkbox
public String
getQueryString() : get방식으로 전송된 데이터만 추출 가능
Model : 프로세스 주요 로직
DAO(Data Access Object) : DB table에 접근하여
삽입, 수정, 삭제, 검색 하는
로직
VO(Value Obejct) : View, Controller, Model사이에서 DB Table에 대한 정보를
표현하는 객체
View(GUI) : 화면을 구성하는 프로세스
Controller : View와 Model 사이에서 조정해주는 역할
View에서 들어온
input을 Model에 전달하고 Model에서 처리한 결과를
View에 전달 시켜준다.
Model2 : MVC 패턴을 적용하여 View는 JSP로 Controller는 Servlet으로
Model은 bean으로 작성
///////////////////////////////////////////////////////////////
//
JSP
동적으로 html을 만들어주는 기술중에 하나로 내부적으로는 servlet으로
되어 있지만 html과
server script코드로 구성되어 있어 화면단을
작성하기 편리하다.
■ 기본 server script
▲
스크립트렛(scriptlet) : <% //java code 작성 %>
자바 프로그램을 하고자
할때 사용 =>서블릿으로 변환시 service 메소드 바디로 구성됨
ex) <% int i = 10;
%>
▲ 표현식(expression) : 자바 코드를 출력하고자 할때 사용
=>서블릿으로 변환시
service 메소드 바디로 구성됨
syntax: <%= %>
ex) <%="i
:"+i%> => out.print("i :"+i);와 같은 표현
▲ 선언(Declaration) : 멤버
변수나, 메소드를 선언시 하용
=> 서블릿 클래스 선언시 멤버로 선언됨
syntax:
<%! %>
ex) <%! private int count = 0;
public void method1(){} %>
▲ 주석 : 기본코드 내부에는 모두 자바코드를 작성하므로 자바
주석을 사용해도 무방함
<%-- --%> : jsp 주석 servlet파일로 변환될때 빠진다
<% // %> : java주석 servlet으로 변환된 파일이 컴파일 되면서 빠진다.
<%/* */%>: java주석 servlet으로 변환된 파일이 컴파일 되면서 빠진다.
<!--<% %>--> : html주석으로 JSP코드는 실행된다.
///////////////////////////////////////////////////////////
// 상태
유지
Session : 클라이언트의 상태 정보를 서버측에서 유지
- 클라이언트에게 session에 대한
key로 jsessionid를 쿠키 형태로 발급한다.
- session 객체 얻기
public
HttpSession getSession(boolean b):
true : 클라이언트가 처음 접속했다면
jsessionid가 아직 없는 상태이므로
새로운 Session에 대한 jsessionid를 발급하고
Session객체를 생성
클라이언트가 jsessionid를 갖고 있다면 jsessionid해당하는 Session
객
체를 생성
false : 클라이언트가 jsessionid를 갖고 있지 않다면 Session객체를 생성하지
않고 null을 리턴, 클라이언트가 jsessionid를 갖고 있을때만 jsessionid에
해당하는
Session객체를 생성한다.
public HttpSession getSession() : true값에 적용해서
Session객체를 생성한다.
ex) HttpSession session =
request.getSession();
- session에 클라이언트 정보 저장하기
public
void setAttribute(String key, Object o) : 객체를 key값으로 저장한다.
ex) session.setAttribute("id",id);
- session에 저장한 클라이언트 정보 꺼내오기
public Object getAttribute(String key)
: key값으로 저장한 객체를
Object타입으로 리턴=>캐스팅 필요
ex) String id =
(String)session.getAttribute("id);
- session이 처음인지 확인
public boolean isNew() : 처음 발급 받은 세션이면 true값을 리턴
- session 만료 시키기
public void invalidate() : 새로운 세션 아이디를 부여 하여 이전 세션을 끊어준다.
////////////////////////////////////////////////////////////////////////////////
//
jsp : directive code
: jsp에게 특정 기능을 지시
형식 : <%@ directive
attribute=value... %>
종류 : page, include, tablib
■ page : JSP에
대한 환경 설정를 지시하는 code
<%@ page language="java" extends=""
isThreadSafe="true"
info="" buffer="8kb"
autoFlush="true"
import=""
contentType="text/html;charset=iso-8859-1"
isELIgnored="false"
session="true" pageEncoding="iso-8859-1"
isErrorPage="false"
errorPage="url셋팅" %>
language: jsp의 베이스 언어 설정 기본은 java로 설정되어
있고 java가 아니며
jsp가 동작하지 않는다.
extends : jsp는
반드시 HttpJSPBase를 상속 받아야 jsp로서 기능을 수행할 수 있으므로
다른 클래스를
상속 받으면 error 발생 한다.
isThreadSafe: 기본값이 true로 설정되어 있다. 이는 현재 JSP가
멀티쓰레딩 될때
안전하게 동작하고 있음을 표시 false로 하면
SingleThreadModel을
구현하게 되어 있다. SingleThreadModel을 구현하면
멀티쓰레딩이
되지 않고 쓰레드가 Single로 돌아간다.
info : jsp에 특정 부가
정보를 표현할때 사용 getServletInfo()로 값을 얻어올수 있다.
buffer : JSP가 사용자에게
응답할때 내부적으로 Buffering을 하고 있다
none을 설정하면 버퍼링을 하지 않음.
숫자로 버퍼사이즈 설정 가능
autoFlush : 버퍼가 꽉차면 자동으로 출력하는 기능 기본으로 true로
설정되어있다.
-------------------------------------------------------------------
기억해두어야 할 속성들...
import : 다른 package에 있는 클래스를 참조하고자 할때 사용 ,로 구분
contentType: 기본은 html/text;charset=iso-8859-1로 셋팅되어 있다.
한글을 출력하고자할때 charset=euc-kr로 셋팅해야 된다.
pageEncoding: 사용자의 입력 인코딩을
iso-8859-1로 읽기 때문에
한글인코딩을 하고자 할때 euc-kr로 셋팅해야
한다.
session : HttpSession객체를 의미 기본은 true로 설정되어 있어 ssesion이라는
내장 객체를 사용할 수 있다. false로 설정하면 session이라는 내장객체는
사용할 수 없다.
errorPage : JSP 페이지 내부에서 에러가 발생했을때 페이지 내부에서 처리 하지 않고
지정한 url로 이동해서 처리 할수 있도록 한다.
isErrorPage : Error를 처리하는 페이지에서
exception이라는 내장 객체를 사용하고자
할때 true설정 기본은 false로
설정되어 있다.
isELIgnored : ELtag를 사용하지 않는다면 true셋팅 기본은 false로 되어 있다.
■ include : jsp, txt, html page를 현재 JSP에 복사
<%@ include
file=url%>
■ taglib : 사용자가 만든 태그를 현재 JSP에서 사용할 것임을 선언
<%@ taglib prefix="" uri="tlb파일 경로" %>
//////////////////////////////////////////////////////
//
Custom Tag
: 사용자가 tag를 만들어서 사용
- 필요한것 : tld 파일 , handler
file(class file), Jsp에서 등록(<%@ taglib ...%>)
1. tld 파일 : xml파일로
사용자가 만들 tag와 handler파일을 연결 시킨다.
형식 :
<taglib>
<tlibversion>1.0</tlibversion>
<jspverseion>1.2</jspversion>
<shortname></shortname>
<tag>
<name><!--
사용할 태그 이름 지정--></name>
<tagclass><!--태그를 사용했을때
실행할 classfile--></tagclass>
</tag>
</taglib>
2. Handler file
javax.servlet.jsp.tagext 패키지의
class를 이용
2.1 body의 내용을 읽지 않는 태그 만들기
Tag를
implements받거나 TagSupport를 extends 받는다.
상속 받은 메소드
public int
doStratTag() : 시작 태그를 만났을때 자동으로 호출되는 메소드로
시작
태그에서 할 일을 구현
return값으로 사용할 상수:
SKIP_BODY : 바디를
읽지 않는다.
EVAL_BODY_INCLUDE : 바디를 읽는다.
public int
doEndTag() : 끝태그를 만났을때 자동으로 호출되는 메소드
SKIP_PAGE : end 태그 이후에
JSP페이지에 대해 읽지 않는다
=> 다른 커스텀 태그가 실행되지 않다.
EVAL_PAGE : end 태그 이후에 JSP페이지를 읽어 다른 커스텀 태그도
실행
2.2 태그의 바디를 읽는 태그 만들기
BodyTag를 implements받거나
BodyTagSupport를 extends받는다.
- BodyTag에서 추가된 메소드
int doAtferBody() : 바디를 읽은후 호출되는 메소드
SKIP_BODY
EVAL_BODY_AGAIN
void doInitBody() : 바디 읽을때 호출되는 메소드
2.3 속성 tag 만들기
- Handler(class)파일에서 사용할 속성을 멤버로 선언한다.
- 선언한 멤버의 setter, getter를 만들어준다.
- 속성은 start tag에서 선언하므로 속성이
읽어지는 시기는
start tag이후 이므로 doEndTag()에서 처리해 준다.
///////////////////////////////////////////////////////////////////////
///
Action Tag : Sun에서 만들어 기본적으로 제공하는 사용자정의태그
- include : url에 해당하는 페이지를 현재 JSP에 포함 시킨다.
: 이때 url에 특정 페이지에 대한
url뿐만 아니라 변수값을 넣어 상황에 따라
다른 url을 include 할수 있다.
<jsp:include
page="url"/> ex) <% String url ="a.jsp"%>
<jsp:include
page=""> <jsp:include page="<%=url%>"/>
<jsp:param name="" value=""/>
</jsp:include>
-forward : 속성 page에 지정한 url로 이동시킨다.
=>
RequestDispatcher send = request.getRequestDispatcher("url");
send.forward(request, response)와 같은 역활
<jsp:forward
page=""/>
<jsp:forward page="">
<jsp:param
name="" value=""/>
</jsp:forward page="">
- usebean : class속성에 지정한 클래스의 객체를 id로 지정한 변수 이름으로
객체를 생성시켜준다.
scope는 생략시 기본으로 page scope를 갖는다.
<jsp:useBean id="" class =""
scope="page|request|session|application"/>
ex1) <jsp:useBean
id="bbs" class="model.BBSDao" scope="page"/>
BBSDao bbs
= new BBSDao();
ex1) <jsp:useBean id="bbs"
class="model.BBSDao" scope="request"/>
BBSDao bbs=
(BBSDao)request.getAttribute("bbs");
if(bbs== null) {
bbs =
new BBSDao();
request.setAttribute("bbs",bbs);
}
-
property
<jsp:setProperty name="" property="" [value="" or
param=""]/>
: uesBean 태그를 통해 생성된 객체의 속성에 값을 셋팅
ex)
<jsp:useBean id="bbs" class="vo.BBS" scope="session"/>
<% String id = request.getParameter("id");
bbs.setId(id); %>
=><jsp:setProperty name="bbs"
property="id" param="id"/>
name : uesBean에서 사용한 id(객체)이름
property:
객체의 속성
param: request.getParameter("")을 통해 속성에 값을 셋팅
value :
속성에 값을 셋팅
<jsp:getProperty name="" property="" [value="" or
param=""]/>
: uesBean 태그를 통해 생성된 객체의 속성 값을 얻어와준다.
///////////////////////////////////////
//jstl
다운 받기 :
http://jakarta.apache.org/site/downloads/downloads_taglibs-standard.cgi
=> jsp2.0버전
복사 위치 : jstl.jar , standard.jar
context폴더/WEB-INF
/lib/
만약 Jeus인경우 : C:\TmaxSoft\JEUS5.0\lib\application\ 에도 복사 해야 한다.
■ jstl 등록하기 :썬에서 확장한 사용자 정의 태그이므로 jsp에서 등록해서 사용해야한다.
<%@
taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
-
prefix값은 보통 사용자가 jsp에서 원하는 이름으로 등록하면 되지만
jstl의 core부분을 사용하는 경우
c로 등록 해서 사용한다.
- uri는 http://java.sun.com/jsp/jstl/core
으로 등록. 오타나면 error발생
■ forEach
ArrayList list
=(ArrayList)session.getAttribute("list");
for(int i =0;
i<list.size(); i++){
BBS bbs = (BBS) list.get(i);
}
<c:forEach var="bbs" items="${list}">
</c:forEach>
■ if
형식 : <c:if test="조건"> if(조건){
</c:if> }
■ choose ~when ~otherwise
형식 :
<c:choose> if(조건){
<c:when test="조건>
</c:when>
<c:when
test="조건> }else if(조건){
</c:when>
<c:otherwise>
}else{
</c:otherwise>
</c:choose> }
■ set : 내장 객체에 속성을
셋팅하거나 내장 객체에 셋팅한 속성의 값을 셋팅한다.
- 내장 객체에 문자열 속성을 셋팅할 경우
<c:set var="속성이름" scope="page|request|session|application"
value=""/>
또는
<c:set var="속성이름"
scope="page|request|session|application" >
value1,
value2.... =>배열 형태가 된다.
</c:set>
- 내장 객체에 셋팅한
속성중 객체의 값을 셋팅 할경우
<c:set target="${내장 객체에 셋팅한 객체이름}"
property="객체의 속성"
value=""/>
- 내장 객체에 셋팅한 속성중
Map에 속성과 값을 셋팅 할경우
<c:set target="${내장 객체에 셋팅한 맵이름}"
property="맵에 셋팅할 속성이름"
value=""/>
ex)
Hashtable table = (Hashtable)session.getAttribute("table");
table.put("Level","king");
<c:set target="${table}"
property="Level" value="king"/>
■ import : <jsp:include
page=""/>와 같음
<c:import url="include할 url" /> or
<c:import url="include할 url" >
<c:param name=""
value=""/>
<c:import/>
■ remove : 내장 객체에 저장해 놓은 객체를 삭제
시켜준다.
형식 :
<c:remove var="속성이름"
scope="page|request|session|application"/>
[출처] jsp& 서블릿정리|작성자 코비
'WEB > JSP' 카테고리의 다른 글
java.lang.IllegalArgumentException: Not writable 에러 (0) | 2011.10.11 |
---|---|
JSP 파일 업로드(엑셀) (2) | 2011.10.11 |
JSP에서 파일 업로드 확장자 체크하기 (3) | 2011.10.11 |
파일업로드 (FileItem, DiskFileItemFactory) (0) | 2011.10.11 |
request.getParameter 한글 깨질 때 처리 방법 (0) | 2011.10.11 |
- Total
- Today
- Yesterday
- java파일삭제
- 이클립스 단축키
- Split
- 자바 객체
- This Android SDK requires An...e ADT to the latest version
- Marry You
- 펌방지해제
- 문자열자르기
- MySQL
- 타루 예뻐할께
- 체크박스
- jason maraz
- jason marz im yours
- 갈릴레오 svn
- java 객체
- lol 서포터
- eclipse svn
- 불독맨션 좋아요
- 스크린세이버
- sax vs dom
- 자바스크립트강의
- 자바정의
- java 인스턴스
- java파일복사
- eclipse 단축키
- bruno mars marry you
- marry you 프로포즈
- dom vs sax
- javascript강의
- Mysql명령어
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |