블로그 이미지
개발에 관한 것들.. 재만

카테고리

분류 전체보기 (66)
claztec's develop (1)
운영체제 (11)
프로그래밍 (41)
알고리즘 (0)
데이터베이스 (2)
소프트웨어공학 (3)
Books (2)
Total11,220
Today3
Yesterday9
Head First Servlet & JSP 에 설명된 초 간단 MVC

form.html 에서 form을 사용해서 request를 날리는데 서블릿이 받는다.
request를 받은 서블릿은 내부 처리를 한 후에 서블릿에서 바로 html을 그려주는게 아니라
view를 지정해 html을 그려준다

BeerSelect.java

더보기


서블릿에서 RequestDispatcher를 사용하는 점은 몰랐었다.
저작자 표시 비영리 변경 금지
Posted by 재만
TAG JSP
3가지 스크립트 요소

스크립트릿
자바코드를 실행할때 사용
<%
    자바 코드1;
    자바 코드2;
%>

표현식
어떤 값을 생성한 HTML 문서 결과값에 포함시키고자 할때
<%= 값 %>

선언부
JSP 페이지의 스크립트릿이나 표현식에서 사용할 수 있는 함수를 작성할 때 사용
<%!
    public int multiplay(int a, int b) {
        int c = a * b;
        return c;
    }
%>

쉽게 정리하면 자바 코드를 JSP 페이지에서 사용하고 싶으면 <% %> 안에서 사용하면 된다. 간단한 자바 변수에 값을 html에 뿌려주려면 <%= %>를 사용하면 되고, 함수를 선언해서 사용하고 싶으면 <%! %>를 사용한다.
저작자 표시 비영리 변경 금지
Posted by 재만
TAG JSP
page 디렉티브

 속성 설명
기본값
 language JSP 스크립트 코드에서 사용되는 프로그래밍 언어 지정
"java"
 contentType JSP가 생성할 문서의 타입을 지정
"text/html"
 import JSP페이지가 사용할 자바 클래스 지정
 
 session  JSP 페이지가 세션을 사용할지 지정. "true"/"false"
"true"
 buffer  JSP 페이지의 출력 버퍼 크기 지정. "none" 사용하지 않음. "8kb" 8킬로바이트 사용
최소 8kb
 autoFlush  출력버퍼가 다 찼을때 자동으로 버퍼에 있는 데이터를 출력 스트림에 보내고 비울지 여부 "true"/"false"
"true"
 info  JSP 페이지에 대한 설명 입력
 
 errorPage  JSP 페이지를 실행하는 도중에 에러가 발생할 때 보여줄 페이지 지정
 
 isErrorPage  현재 페이지가 에러가 발생할 때 보여지는 페이지여부 지정. "true"/"false"
"false"
 pageEncoding  JSP 페이지 캐릭터 인코딩 지정
 
 isELIgnored  "true" 표현언어 지원. "false" 표현언어 미지원
web.xml에서 사용하는 JSP 버전 및 설정에 따라 다름
(자주사용하는 contentType / page 속성 설명)

contentType 속성 / 캐릭터 셋
한글
<%@ page contentType="text/html; charset="euc-kr" %>
유니코드
<%@ page contentType="text/html; charset="UTF-8" %>

import 속성
JSP 페이지에서 자바의 클래스를 사용하기 위해 자바 클래스를 지정
<%@ import = "java.util.Calendar" %>
<%@ import = "java.util.Date" %>

,와 *를 사용해 간략하게 사용할 수 있다.
<%@ import = "java.util.Calendar, java.util.Date" %>
<%@ import = "java.util.*" %>

※ import 속성에서 클래스를 지정한 후 사용하지 않고 스크립트릿에서 클래스를 선언해 사용할 수 있다.


저작자 표시 비영리 변경 금지
Posted by 재만
TAG JSP
JSP 페이지 구성요소

디렉티브
<%@ 디렉티브이름 속성1="값1" 속성2="값2" ... %>

 디렉티브 설명
 page  JSP 페이지에 대한 정보를 지정. 문서타입, 출력버퍼크기, 에러페이지 등
 taglib  JSP 페이지에서 사용할 태그 라이브러리
 include  JSP 페이지의 특정 영역에 다른 문서를 포함

스크립트
스크립트릿 : 자바 코드를 실행
표현식 : 값을 출력
선언부 : 자바 메소드(함수)를 만듬

기본객체
request, response, session, application, page등

표현언어
JSP 페이지 내부에서 사용되는 간단한 스크립트 언어

액션 태그(Action Tag)
<jsp:include page="header.jsp" flush="true" />

커스텀 태그(Custom Tag)
개발자가 직접 정의

정적인 데이터

(최범균의 JSP 2.0 프로그래밍 2장 정리)
저작자 표시 비영리 변경 금지
Posted by 재만
TAG JSP
JSP 페이지에서 발생한 예외를 처리할 페이지를 지정할 때에 전달되는 객체

 메소드  설명
 getMessage()  오류 메시지 내용 리턴
 printStackTrace()  표준 출력 스트림으로 스택 추적 정보 출력
 toString()  예외 클래스 이름과 오류 메시지 리턴


저작자 표시 비영리 변경 금지
Posted by 재만
TAG JSP
JSP 자체를 나타내는 객체로 자기 자신을 참조할때 사용된다.

this 키워드를 사용해서 참조할 수 있다.

웹 컨테이너는 Java만을 지원해서 굳이 page 객체를 사용하지 않아도 직접 참조할 수 있어서 거의 사용하지 않는다고 한다.
저작자 표시 비영리 변경 금지
Posted by 재만
TAG JSP
서블릿이 초기화될 때에 JSP 컨테이너가 환경 정보를 서블릿으로 전달할 때 사용하는 객체

 메소드  설명
 getInitParameter(String name)
 초기화 파라미터 값 리턴
 getInitParameterNames()  서블릿 초기화 파라미터 이름 리턴
 getServletName()  서블릿 이름 리턴


저작자 표시 비영리 변경 금지
Posted by 재만
TAG JSP
웹 브라우저의 요청에 대한 정보의 세션과 관련 정보를 저장하고 관리하는 기능을 한다.

 메소드 설명
 getId()  세션 ID리턴
 getCreationTime()  세션이 생성된 시간 리턴
 getLastAccessedTime()  현재 세션으로 마지막 작업 시간 리턴
 getMaxInactiveInterval()  세션 유지 시간 리턴
 setMaxInactiveInterval(time)  세션 유효시간을 time으로 설정된 값으로 설정
 invalidate()  현재 세션 종료


저작자 표시 비영리 변경 금지
Posted by 재만
TAG JSP
1. 서버 관련 메소드

 메소드 설명
 getAttributeNames()  application 객체에 저장된 속성 이름 리턴
 getMajorVersion()  컨테이너가 지원하는 Major버전 정보 리턴
 getMinorVersion()  컨테이너가 지원하는 Minor버전 정보 리턴
 getMimeType(String file)
 file에 지정된 파일의 MIME type 리턴
 getRealPath(String path)
 path에 지정된 자원 파일시스템의 실제 경로 리턴
 getResource(String path)
 path에 지정된 자원을 URL객체로 리턴
 getResourceAsStream(String path)
 path에 지정된 자원을 InputStream객체로 리턴
 getContext(String path)
 path에 지정된 자원의 컨텍스트 정보 리턴
 getServerInfo()  JSP/서블릿 컨테이너 이름 및 버전 리턴

2. 로그 관련 메소드

 메소드 설명
 log(String message)
 message 내용을 로그 파일에 기록
 log(String message, Throwable exception)
 예외상황과 관련된 정보를 포함해 로그 파일에 기록

3, 속성 관련 메소드

 메소드 설명
 getAttribute(String name)
 name 에 해당하는 속성값 리턴
 removeAttribute(String name)
 name 에 해당하는 속성값 삭제
 setAttribute(String name, Object)
 name 이란 이름으로 Object형 데이터 저장

application 객체의 유효범위는 해당 어플리케이션이 실행되는 동안이다.
저작자 표시 비영리 변경 금지
Posted by 재만
TAG JSP
1. 내장 객체 참조 메소드

 메소드 설명
 getPage()  page 내장 객체 리턴
 getRequest()  request 내장 객체 리턴
 getPesponse()  request 내장 객체 리턴
 getOut()  out 내장 객체 리턴
 getSession()  session 내장 객체 리턴
 getServletConfig()  config 내장 객체 리턴
 getServletContext()  application 내장 객체 리턴
 getException()  exception 내장 객체 리턴

2. 페이지 전달 관련 메소드

 메소드 설명
 forward(String path)
 path 에 지정된 페이지로 포워딩
 include(String path)
 path 에 지정된 페이지 포함

3. 속성 관련 메소드

 메소드 설명
 getAttribute(String name)
 name 에 해당하는 속성값 리턴
 removeAttribute(String name)
 name 에 해당하는 속성값 삭제
 setAttribute(String name, Object)
 name 이란 이름으로 Object형 데이터 저장

pageContext 객체에서 제공하는 속성 관련 메소드는 해당 페이지가 요청을 시도한 클라이언트에 서비스를 제공하는 동안 유효하다.
저작자 표시 비영리 변경 금지
Posted by 재만
TAG JSP
1. response 객체 메소드

 메소드 설명
 addCookie(Cookie cookie)
 쿠키 데이터 기록
 addHeader(String name, String value)
 response 헤더 내용 기록
 containsHeader(String name)
 지정된 헤더에 name설정 여부 리턴
 sendError(int status-code)
 에러 response를 클라이언트로 전송
 sendRedirect(String location)
 현재 페이지를 다른 페이지로 이동
 setStatus(int status-code)
 HTTP response 상태 코드 설정
 setBufferSize(int size)  출력 버퍼 크기 설정
 setContentType(String type)  전달할 내용의 MIME 타입 설정
 setHeader(String name, String value)  지정된 이름과 같은 값을 response 헤더 설정
 flushBuffer()  버퍼의 내용을 클라이언트로 전송
 getBufferSize()  출력 버퍼크기 리턴
 encodeURL(String url)
 세션ID와 URL을 합해 전송 코드로 변환
 encodeRedirectURL(String url)
 encodeURL의 역할과 동일.
 sendRedirect에 세션ID를 넘길때 사용

2. response의 상태코드와 메시지

 필드 코드
메시지
 SC_OK  200  OK
 SC_MOVED_PERMANENTLY  301  Moved Permanently
 SC_MOVED_TEMPORARILY  302  Move Temporarily
 SC_UNAUTHORIZED  401  Unauthorized
 SC_FOBIDDEN  403  Forbidden
 SC_NOT_FOUND  404  Not Found
 SC_INTERNAL_SERVER_ERROR  500  Internal Server Error
 SC_SERVICE_UNAVAILABLE  503  Service Unavailable

저작자 표시 비영리 변경 금지
Posted by 재만
TAG JSP
1. http 프로토콜

 메소드 설명
 getCharacterEncoding() 클라이언트가 요청한 정보를 전송할 때 사용한 인코딩 리턴
 getContentLength()  클라이언트가 전송한 요청 정보의 길이 리턴
 getContentType()  클라이언트가 요청한 정보를 전송할 때 사용한 컨텐트 타입 리턴
 getContextPath()  페이지가 속한 웹 어플리케이션의 콘텍스트 경로 리턴
 getMethod()  웹브라우져가 정보를 전송할 때 사용한 방식 리턴
 getProtocol()  클라이언트가 요청한 프로토콜 리턴
 getRemoteAddr()  웹 서버에 연결한 IP 주소 리턴
 getRequestURL()  웹 브라우저가 요청한 URL 경로 리턴
 getServerName()  연결할 때 사용한 서버이름 리턴
 getServerPort()  실행 중인 포트 번호 리턴

2. 파라미터

 메소드 설명
 getParameter(String name)
 name이란 이름의 파라미터 값 리턴
 getParameterValues(String name)
 name이란 이름의 파라미터 값 배열로 리턴
 getParameterNames()  웹 브라우저가 전송한 파라미터 값 리턴
 getParameterMap()  웹 브라우저가 전송한 파라미터 맵 리턴

get/post 방식
get : 웹브라우저의 URL 창에 파라미터를 담아서 전송. 1024바이트로 한정
post : 정보의 크기에 제한없이 전송할 수 있다. 데이터 정보가 보이지 않아 보안성도 좋다. 단지 <form> <input> 태그를 사용해서 전송해야 한다.

3. 헤더

 메소드 설명
 getHeader(String name)
 name이란 이름의 헤더 값 리턴
 getHeaders(String name)
 name이란 이름의 헤더 목록 리턴
 getHeaderNames()  모든 헤더 이름 리턴
 getIntHeader(String name)
 name이란 이름의 헤더 값 정수로 리턴
 getDateHeader(String name)
 name이란 이름의 헤더 값 시간 값으로 리턴


저작자 표시 비영리 변경 금지
Posted by 재만
TAG JSP
jsp 내장 객체

1. HTTP 프로토콜 관련 메소드 (testjsp.jsp)
<%@ page import="java.util.Date" language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Request HTTP</title>
</head>
<body>

<%
    Date time = new Date();
    out.println(time);
    out.println("Hello JSP! <p>");
   
    out.println("인코딩 request.getCharacterEncoding() : " + request.getCharacterEncoding() + "<br/>");
    out.println("요청 정보 길이 request.getContentLength() : " + request.getContentLength() + "<br/>");
    out.println("요청한 정보를 전송할때 사용한 컨텐트 타입 request.getContentType() : " + request.getContentType() + "<br/>");
    out.println("웹 어플리케이션 콘텍스트 경로 request.getContextPath() : " + request.getContextPath() + "<br/>");
    out.println("정보 전송할때 사용한 방식 request.getMethod() : " + request.getMethod() + "<br/>");
    out.println("프로토콜 request.getProtocol() : " + request.getProtocol() + "<br/>");
    out.println("IP주소 request.getRemoteAddr() : " + request.getRemoteAddr() + "<br/>");
    out.println("URL 경로 request.getRequestURL() : " + request.getRequestURL() + "<br/>");
    out.println("서버이름 request.getServerName() : " + request.getServerName() + "<br/>");
    out.println("포트 request.getServerPort() : " + request.getServerPort() + "<br/>");
%>

</body>
</html>

2. Parameter 관련 메소드
3. Header 관련 메소드 (form1.jsp, getParameter.jsp)
form1.jsp에서 getParameter.jsp 를 불러온다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>FORM</title>
</head>
<body>
<form action="getParameter.jsp" method="get">
이름 : <input type="text" name="name"> </input> <br/>
성 : <input type="text" name="familyname"> </input> <br/>
<input type="submit" value ="submit" name="submit">
</form>
</body>
</html>

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%@page import="java.util.Enumeration"%><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Request Parameter, Header</title>
</head>
<body>
<%
    String name, familyname;
    name = request.getParameter("name");
    familyname = request.getParameter("familyname");
    out.println("당신의 이름은 " + familyname + name + "입니다. ");
   
    Enumeration e = request.getHeaderNames();
    String head;
    while(e.hasMoreElements()) {
        head = (String)e.nextElement();
        out.println(head + " : " + request.getHeader(head) + "<br/>");
    }
%>
</body>
</html>
브라우저 인코딩 설정을 해줘야 할 경우
<% request.setCharacterEncoding("euc-kr"); %>

한글문제는 UTF-8로 해결. tomcat의 server.xml의 URIEncoding설정을 UTF-8로 하는것을 잊지 말아야 한다.
저작자 표시 비영리 변경 금지
Posted by 재만
TAG JSP
9가지 jsp 내장 객체

 request  javax.servlet.http.HttpServletRequest
클라이언트 요청 정보 저장
 response  javax.servlet.http.HttpServletResponse
응답 정보 저장
 out  javax.servlet.jsp.JspWriter
결과 출력
 pageContext  javax.servlet.jsp.PageContext
페이지 정보 저장
 application  javax.servlet.ServletContext
웹 어플리케이션 정보 저장
 session javax.servlet.http.HttpSession
HTTP 세션 정보 저장
 config javax.servlet.ServletConfig
페이지 설정 정보 저장
 page java.lang.Object
페이지를 구현한 자바 클래스 인스턴스
 exception java.lang.Throwable
예외 객체


저작자 표시 비영리 변경 금지
Posted by 재만
TAG JSP
jsp page directive - jsp 페이지에 대한 정보를 지정하려고 사용

검색한 결과

1. Page Directive

해당 JSP Page에 적용되는 속성 정의

 

Snytax

<%@ page 
       [ language="
java" ]
       [ extends="package.class" ]
      
[ import= "{ package.class | package.* }, ..." ]
      
[ session="true|false" ]
       [ buffer="none|8kb|sizekb" ]
       [ autoFlush="true|false" ]
       [ isThreadSafe="true|false" ]
       [ info="text" ]
       [ errorPage="relativeURL" ]
       [ contentType="mimeType [ ;charset=characterSet ]" |
                   
"text/html ; charset=euc-kr" ]
       [ isErrorPage="true|false" ]
%>

 

Examples

<%@ page import=”java.util.*,java.lang.*” %>

<%@ page contentType="text/html;charset=euc-kr" %>

<%@ page errorPage=”error.jsp” %>


Description

JSP 파일 or Include 파일의 위치에 대한 제약은 없지만 항상 맨위에 선언하는 것이 좋습니다.

Attributes

11가지의 속성 중 중요한 부분에 대한 정리만 하도록 하겠습니다.

- info 속성
해당 페이지의 역할을 설명해 주는 document 문자열을 추가할 수 있습니다.
<%@page info=
iHelpers WebSite, by SSM>


- ContentType 속성
JSP Page가 생성하는 응답의 MIME ( Multipurpose Internet Mail Extension ) 타입과 Character Set을 지정합니다. MIME은 HTTP 응답에 담기는 정보의 타입을 지정할 때에 사용되며 기본적으로 설정된 MIME은 text/html , Character Set 은 ISO-8859-1
<%@page contentType=image/gif>
<%@ page contentType=
text/xml>

- import 속성
해당 Package를 JSP 파일에서 참조하여 사용할 수 있도록 선언합니다.

<%@ page import=
java.util.List, java.awt.List %> 의 경우는 같은 이름을 두 번 import를 사용하였기에 JSP Container의 입장에서는 모호성이 있는 잘못된 문장 으로 간주하기에 아래와 같이 선언해 주어야 합니다.
<%@ page import=
java.util.*, java.awt.List %>
이와 같이 선언하면 java.awt의 List Class는 기본 이름으로 참조할 수 있지만, java.util 의 경우의 List는 full name으로 접근해야 합니다.  java.util.List 로

java.lang, javax.servlet, javax.servlet.http, javax.servlet.jsp 는 기본적으로 import 되어 있습니다.

이외에 session, buffer,autoFlush .. 속성은 reference를 참조해 주십시오

속성에 관한 설명 : http://atin.tistory.com/36

주로 설정하는 속성에 대해 정리해야 할 것 같다.
저작자 표시 비영리 변경 금지
Posted by 재만
TAG JSP

최근에 달린 댓글

최근에 받은 트랙백

글 보관함