Leeyebin의 블로그

JSP강좌 요약 본문

프로그래밍/JSP

JSP강좌 요약

안되면될때까지 2016. 4. 1. 17:17

JSP 1강

JSP : html파일 내에 java언어를 삽입한 문서

servlet : java언어로 이루어진 웹프로그래밍 문서

JavaScript : 클라이언트 기능을 구현하기 위한 언어

Jquery : JavaScript의 대표적인 라이브러리로써, 클라이언트 사이드 스크립트 언어를 단순화 할 수 있다.

CSS : 웹어플리케이션의 레이아웃 및 스타일을 지정하는 언어

웹서버 : 클라이언트의 요청에 의해 정보를 제공해 주는 서버(ex: 아파치) 별도의 구현이 필요한 로직이 있을 경우 웹어플리케이션 서버에 요청.

웹브라우저 : 웹서버에 정보를 요청하고, 웹서버로부터 정보를 받는 매개체, 이때 http 프로토콜을 사용함.

프로토콜 : 네트워크상에서 약속한 통신규약

ip : 네트워크상에서 컴퓨터를 식별할 수 있는 주소

DNS : ip주소를 인간이 쉽게 외우도록 맵핑한 문자역

port : ip주소가 컴퓨터를 식별할 수 있게 해준다면, port번호는 해당컴퓨터의 구동되고 있는 프로그램을 구분할 수 있는 번호


화면 <-> 웹서버 <-> WAS <-> DB


2강(4/10)

eclipse(이클립스에서 서버세팅 포트랑 경로 등)

apache-tomcat

jdk(환경변수 포함)


3강(4/11)

jsp특징

-동적 웹어플리케이션 컴포넌트

-jsp 확장자

- 클라이언트의 요청에 동적으로 작동하고 응답은 html을 이용

-jsp는 서블릿으로 변환되어 실행

-mvc패턴에서 view로 이용됨


jsp아키텍쳐

.jsp file(helloworld.jsp) -----java파일로 변환-----> Java file(helloworld_jsp.java)-----컴파일------>class file(helloworld_jsp.class)

java나 class파일은 예제(C:\javalec\apache-tomcat-7.0.68\work\Catalina\localhost\practice20160411\org\apache\jsp)에 있음


4강(4/12)

Servlet특징

 - 동적 웹어플리케이션 컴포넌트.

 - .java 확장자.

 - 클라이언트의 요청에 동적으로 작동하고, 응답은 html을 이용.

 - java thread이용하여 동작.(강점)

 - MVC패턴에서 Controller로 이용됨.


매핑시 web.xml에서 하는 방법, 어노테이션으로 하는 방법이 있다

<servlet-name>

임의의 이름을 만들어 준다.

<servlet-class>

매핑할 클래스 파일명을 패키지명을 포함하여 입력

<url-pattern>

servlet-class의 클래스를 매핑할 임의의 이름을 입력 한다. '/'로 시작해야한다


5강(4/13)

-프로젝트만들기

-doGet()

-doPost()

-Context Path


Servlet클래스는 HttpServlet클래스를 상속 받음[ Servlet(인터페이스)<---GenericServlet(추상클래스)<---HttpServlet]

Request(요청처리객체) 및 Response(응답처리객체)를 톰캣에서 받음.


GET - URL값으로 정보가 전송되어 보안에 약함.(html작성시 form태그에서 mothod속성값에 get)

POST - header를 이용해 정보가 전송되어 보안에 강함.(html작성시 form태그에서  mothod속성값에 post)


HttpServletResponse 객체의 setContentType() 메소드 호출하여 응답방식 결정(ex response.setContentType("text/html; charset=euc-kr"); )

HttpServletResponse 객체의 getWriter() 메소드를 이용하여 출력 스트림을 얻음

출력스트림의 println() 메소드를 이용하여 출력하면,  웹브라우저에 출력


-Context Path

WAS(Web Application Server)에서 웹어플리케이션을 구분하기 위한 path

이클립스에서 프로젝트를 생성하면, 자동으로 server.xml에 추가됨0


6강(4/13)

-Servlet 작동순서

클라이언트에서 servlet요청이 들어 오면 서버에서는 servlet컨테이너를 만들고, 요청이 있을 때마다 쓰레드가 생성된다.

웹브라우저 -> 웹서버 -> 웹어플리케이션 서버(was) -> Servlet컨테이너(스레드 생성, servlet객체 생성)


-Servlet 라이프사이클

Servlet의 사용도가 높은 이유는 빠른 응답 속도이기 때문

Servlet은 최초 요청 시 객체가 만들어져 메모리에 로딩되고, 이후 요청 시에는 기존의 객체를 재활용하게 되기때문에 동작 속도가 빠름.


Servlet 객체생성(최초한번) -> Init()호출(최초 한번) -> service(), doGet(), doPost() 호출(요청시 매번) -> destroy()(마지막 한번, ex:servlet수정, 서버 재가동 등등)

-Servlet 선처리 후처리

! Servlet의 라이프 사이클중 init()과 destroy()메소드와 관련하여 선처리와 후처리 작업이 가능함.(init호출하기전, destroy호출한 후)
! 어노테이션에 추가

@PostConstruct
private void initPostConstruct() {
// TODO Auto-generated method stub
System.out.println("initPostConstruct");
}
@PreDestroy
private void destoryPreDestory() {
// TODO Auto-generated method stub
System.out.println("destoryPreDestory");
}

7강(4/15)

HTML form태그
-HTML의 form태그는 서버쪽으로 정보를 전달할 때 사용하는 태그.

주요 태그(input / text,password,submit,select....등)

<form action = "FormEx(요청하는 컴포넌트 이름)" method = "post">

Form태그의 submit버튼을 클릭하여 데이터를 서버로 전송하면, 해당파일(Servlet)에서는 HttpServletRequest객체를 이용하여 Paramter값을 얻을 수 있다.


HTML 파일
##################################
<form>
<input type=“submit” value=“전송”>
.
.
.
</form>

##################################

##################################
Servlet 파일
HttpServletRequest객체를 이용하여,
Parameter값을 얻음.

<관련 메소드>
getParameter(name)
getParameterValues(name)
getParameterNames()
##################################

한글처리
Tomcat 서버의 기본 문자 처리 방식은 IOS-8859-1 방식
별도의 한글 인코딩을 하지 않으면 한들이 깨져 보이는 현상이 있음
Get방식(server.xml 수정)과 Post방식(request.setCharacterEncoding() 수정)에 따라서 한글처리 방식에 차이가 있음.
get인지 post인지 redirect인지 경우가 3가지 있음

8강(4/15)
-서블릿 초기화 파라미터 : ServletConfig
1번째 방법(web.xml에 작성)
web.xml 파일에 초기화 파라미터 기술(특정한 Servlet에서만 특정 파라미터를 준다)
Servlet 클래스 제작 -> web.xml 파일에 초기화 파라미터 기술 -> ServletConfig 메소드 이용해서 데이터 불러오기(Servlet에서 getInitParameter이용)

2번째 방법(Servlet파일에 초기화 파라미터 직접 기술)
Servlet 클래스 제작 -> @WebInitParam에 초기화 파라미터 기술 -> ServletConfig 메소드 이용해서 데이터 불러오기

-여러 Servlet에서 특정 데이터를 공유해야 할 경우 context parameter를 이용해서 web.xml에 데이터를 기술하면 됨.
데이터 공유 : ServletContext

-웹 어플리케이션의 생명주기를 감시하는 리스너가 있다. ServletContextListener
리스너의 해당 메소드가 웹 어플리케이션의 시작과 종료 시 호출 됨.(contextInitialized(), contextDestroyed())

-웹어플리케이션 감시 : ServletContextlistener
리스너 클래스 제작(contextDestroyed, contextInitialized 각각 오버라이드) -> web.xml파일에 리스너 클래스 기술(<listener>) or 리스너 클래스에 어노테이션 붙이기(@WebListener)
 
참고(직접 로그 찍어서해보기)
contextInitialized -> 선처리 -> Init메소드 실행 -> doGet or doPost -> desroy매소드 -> 후처리 ->  contextDestroyed

9강(4/15)
-JSP 태그의 개념 이해
Servlet은 JAVA언어를 이용하여 문서를 작성하고, 출력객체를 이용하여 HTML코드를 삽입.
JSP는 Servlet과 반대로 HTML코드에 JAVA언어를 삽입하여 동적 문서를 만들 수 있다.
HTML코드안에 JAVA코드를 삽입하기 위해서는 태그를 이용해야 한다.

지시자 : <%@   %> : 페이지 속성
주석 : <%-- --%>
선언 : <%!   %> : 변수, 메소드 선언
표현식 : <%=   %> : 결과값 출력
스크립트릿 : <%   %> : JAVA 코드
액션태그    : <jsp:action> </jsp:action> : 자바빈 연결


-JSP 동작 원리
클라이언트가 웹브라우저로 helloWorld.jsp를 요청 -> JSP컨테이너가 JSP파일을 Servlet파일(.java)로 변환 -> Servlet파일(.java)은 컴파일된 후 -> class파일로 변환 -> 요청한 클라이언트한테 html파일 형태로 응답 됨.

-JSP 내부 객체
객체를 생성하지 않고 바로 사용할 수 있는 객체
JSP에서 제공되는 내부객체는 JSP컨테이너에 의해 Servlet으로 변환도리 때 자동으로 객체가 생성 됩니다.
내부 객체 종류
입출력 객체 : request.response, out
서블릿 객체 : page, config
세션 객체 : session
예외 객체 : exception

10강(4/18)
스크립트릿, 선언, 표현식
JSP문서안에 JAVA언어를 넣기 위한 방식들

스크립트릿(scriptlet): <% java 코드 기술 %>
JSP페이지에서 JAVA 언어를 사용하기 위한 요소 중 가장 많이 사용하는 요소

선언(declaration) : <%! java 코드 기술 %>
JSP페이지 내에서 사용되는 변수 또는 메소드를 선언할 때 사용.
여기서 선언된 변수 및 메소드는 전역으 의미로 사용됨.

표현식(expression) : <%= java 코드 기술   %>
JSP페이지 내에서 사용되는 변수의 값 또는 메소드 호출 결과값을 출력하기 위해 사용.
결과값은 String 타입이며, ‘;’를 사용 할 수 없음.

지시자
JSP페이지의 전체적인 속성을 지정할 때 사용 합니다.
page, include, taglib 가 있으며, <%@  속성 %>형태로 사용 됩니다. 
page : 해당 페이지의 전체적인 속성 지정
include : 별도의 페이지를 현재 페이지에 삽입
taglib : 태그라이브러리의 태그 사용



-page지시자(jsp안에 다른 페이지를 넣거나 할 때 header나 footer같은 것)
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>

-file 지시자
<#@ include file = file = "파일이름.jsp등" %>

-taglib 지시자
사용자가 만든 tag들을 태그라이브러리라고 합니다. 그리고 이러한 태그라이브러리를 사용하기 위해 taglib지시자를 사용.
uri 및 prefix 속성이 있으며, uri는 태그라이브러이의 위치 값을 가지며, prefix는 태그를 가리키는 이름 값을 가짐

주석(테스트 용도 및 프로그램 설명 용도)
HTML주석은 <!-- 내용 -->                     [소스보기시 소스가 보임]
JSP주석은 "<%-- 내용 -->" , "//", "/* */"    [소스보기시 소스가 안보임]

11강(04/24)
request(요청), response(응답) 객체의 이해

request 객체의 이해

getContextPath() : 웹어플리케이션의 컨텍스트 패스를 얻습니다.

getMethod() : get방식과 post방식을 구분할 수 있습니다.

getSession() : 세션 객체를 얻습니다.

getProtocol() : 해당 프로토콜을 얻습니다.

getRequestURL() : 요청 URL를 얻습니다.

getRequestURI() : 요청 URI를 얻습니다.

getQueryString() : 쿼리스트링을 얻습니다.

getParameter(String name) : name에 해당하는 파라미터 값을 구함.

getParameterNames() : 모든 파라미터 이름을 구함.

getParameterValues(String name) : name에 해당하는 파라미터값들을 구함.


response 객체의 이해

getCharacterEncoding() : 응답할때 문자의 인코딩 형태를 구합니다.

addCookie(Cookie) : 쿠키를 지정 합니다.

sendRedirect(URL) : 지정한 URL로 이동합니다.


참고

getParameter()와 getAttribute() 차이점

getParameter()는 return 값이 String타입일 경우에만 가능

getParameter()는 String 값을 다루기때문에 주로 쿼리 등을 받는데 사용됨

getAttribute()는 return 값으로 Object가 가능함(자바빈 객체 혹은 다른 클래스객체 등을 받을 때 사용함 주로)

< %
Object x = request.getAttribute("객체명");
% >

 

Object 형으로 받는 다는 것. 포인트


12강(04/24)

액션태그

forward, include, param 태그


-액션태그

JSP페이지 내에서 어떤 동작을 하도록 지시하는 태그

forward - 현재의 페이지에서 다른 특정페이지로 전화할 때 사용함.(ex : "<jsp:forward page="test.jsp"/>

include - 현재 페이지에 다른 페이지를 삽입할 때 사용(ex : "<jsp:include page = "test1.jsp" flush = "ture"/>

param - forward 및 include 태그에 데이터 전달을 목적으로 사용되는 태그

ex

<jsp:forward page = "test.jsp">

<jsp:param name = "id" value="abcdef"/>

<jsp:param name = "pw" value = "1234"/>

</jsp:forward>


13강(05/03)

쿠키

웹브라우저에서 서버로 어떤 데이터를 요청 하면, 서버측에서는 알맞은 로직을 수행한 후 데이터를 웹브라우저에 응답함. 그리고, 서버는 웹브라우저와의 관계를 종료함. 이렇게, 웹브라우저에 응답 후 관계를 끊는 것은 http프로토콜의 특징



연결이 끊겼을 때 어떤 정보를 지속적으로 유지하기 위한 수단으로 쿠키라는 방식을 사용.

쿠키는 서버에서 생성하여, 서버가 아닌 클라이언트측에 특정 정보를 저장. 그리고 서버에 요청 할 때 마다 쿠키의 속성값을 참조 또는 변경 할 수 있음.

쿠키는 4kb로 용량이 제한적이며, 300개까지 데이터 정보를 가질 수 있다.

[쿠키 클래스를 이요하여 쿠키생성] -> [setter를 이용하여 속성 설정] -> [response객체에 쿠키 탑재(response.addCookie())]


쿠키관련 메소드

setMaxAge() : 쿠키 유효기간을 설정 합니다.

setpath() : 쿠키사용의 유효 렉토리를 설정 합니다.

setValue() : 쿠키의 값을 설정 합니다.

setVersion() : 쿠키 버전을 설정 합니다.

getMaxAge() : 쿠키 유효기간 정보를 얻습니다.

getName() : 쿠키 이름을 얻습니다.

getPath() : 쿠키사용의 유효 디렉토리 정보를 얻습니다.

getValue() : 쿠키의 값을 얻습니다.

getVersion() : 쿠키 버전을 얻습니다.


14강(05/05)

세션

쿠키와 달리 클라이언트의 특정 위치에 저장되는 것이 아니라 서버상에 객체로 존재함.

세션은 서버에서만 접근이 가능하여 보안이 좋고, 저장할 수 있는 데이터에 한계가 없음.


세션은 클라이언트의 요청이 발생하면 자동생성되고 session이라는 내부 객체를 지원하여 세션의 속성을 설정.

[클라이언트 요청] -> [session 자동 생성] -> [session 속성 설정]


세션 관련 메소드 

setAttribute() : 세션에 데이터를 저장 합니다.

getAttribute() : 세션에서 데이터를 얻습니다.

getAttributeNames() : 세션에 저장되어 있는 모든 데이터의 이름(유니크한 키값)을 얻습니다.

getId() : 자동 생성된 세션의 유니크한 아이디를 얻습니다.

isNew() : 세션이 최초 생성되었는지, 이전에 생성된 세션인지를 구분 합니다.

getMaxInactiveInterval() : 세션의 유효시간을 얻습니다. 가장 최근 요청시점을 기준으로 카운트 됩니다.

(C:\javalec\apache-tomcat-7.0.57\apache-tomcat-7.0.57\conf\web.xml 참조) 기본적으로 30분으로 세팅되어있음.

removeAttribute() : 세션에서 특정 데이터 제거 합니다.

Invalidate() : 세션의 모든 데이터를 삭제 합니다.


15강(05/10)

JSP/Servlet에서의 예외페이지

page지시자를 이용한 예외 처리

페이지에서 <%@ page errorPage="에러가났을때 보여줄 페이지.jsp"%>

를 입력한다.

에러가났을때 보여줄 페이지.jsp에서도 <% response.setStatus(200); %>을 적어야할 경우가 있다.


ex)

<%@ page isErrorPage = 'true'%>

<% response.setStatus(200); %>

<% exception.getMessage() %>   --> isErrorPage값을 true로 하면 exception에 접근할 수 있다.


web.xml파일을 이용한 예외 처리

ex)

<error-page>

<error-code>404</error-code>

<location>/asdf.jsp</location>

</error-page>


16강(05/15)
빈이란?

반복적인 작업을 효율적으로 하기 위해 빈을 사용. JAVA언어의 데이터(속성)와 기능(메소드)으로 이루어진 클래스.

jsp페이지를 만들고, 액션태그를 이용하여 빈을 사용. 빈의 내부 데이터를 처리함.


빈 만들기
getter, setter  사용

빈 관련 액션 태그(useBean, getProperty, setProperty)









소스코드 입력하기
http://elgar328.tistory.com/11
http://boxfoxs.tistory.com/148


https://wikidocs.net/227
https://blog.outsider.ne.kr/













'프로그래밍 > JSP' 카테고리의 다른 글

[JSTL] 날짜 포맷 바꾸기  (0) 2017.10.11
Comments