'Programming/JSP'에 해당하는 글 18건

Requset object

Programming/JSP 2013. 4. 9. 23:17

Request 내장 객체 기능

 

  • Client 정보 출력
  • Server 정보 출력
  • Header 출력
  • Cookie 처리
  • HTTP query 출력

 

 

Client 정보에서...
경로 반환 request.getRequestURI(), URL에서 쿼리 반환 request.getQueryString(), 클라이언트 IP 반환 request.getRemoteAddr(),
헤더 관련해서는 request.getHeaderNames() 로 모든 헤더 내용을 받아볼 수 있고,
Client 브라우저 정보 request.getHeader("user-agent"), 쿠키 정보 request.getHeader("cookie") 등...
request.getCookies() 로 모든 쿠키 내용을 확인할 수 있고...

 

하지만 가장 많이 사용하게 될 것은 HTTP 요청에 따른 파라미터 처리입니다.

 

// Query String : &name=lee&age=34&hobby=piano&hobby=guitar 일 때

 

 

String getParameter(String name)을 이용하면 name에 해당하는 단일값을 얻어낼 수 있습니다.

 

out.print( request.getParameter("name") );
out.print( request.getParameter("age") );

 

 

hobby 같이 다중값을 가진 파라미터에 대해서는 String[] getParameterValues(String name)을 사용하여 값을 얻을 수 있습니다.

 

String[] multiValues = request.getParameterValues("hobby");
for( int i=0; i<multiValues.length; i++ ) {
    out.print(hobby[i]);
    out.print("<br />");
}

 

 

쿼리 스트링의 모든 이름과 값을 얻고자 할 때는 Enumeration getParameterNames() 를 사용할 수 있습니다.

 

Enumeration allParam = request.getParameterNames();
while( allParam.hasMoreElements() ) {
    String paramName = (String)allParam.nextElement();
    String[] multiValues = request.getParameterValues(paramName);
    for ( int i=0; i<multiValues.length; i++ ) {
         out.print( paramName + " : " + multiValues[i] );
         out.print("<br />");
    }
}

 

 

모든 이름과 값을 얻는 방법으로 Map 인터페이스를 사용할 수도 있습니다. Map getParameterMap()
Map 인터페이스는 <Key, Value>로 구성된 집합이며, Key의 중복을 허용하지 않고, Key의 오름차순 자동 정렬이 되는 특징을 가집니다.

 

Map paramMap = request.getParameterMap();
Set paramKeySet = paramMap.keySet();
Iterator keyIterator = paramKeySet.iterator();
while( keyIterator.hasNext() ) {
    String paramName = (String)keyIterator.next();
    String[] multiValues = (String[])paramMap.get(paramName);
    for ( int i=0; i<multiValues.length; i++ ) {
         out.print( paramName + " : " + multiValues[i] );
         out.print("<br />");
    }
}

 

* Enumeration 과 Map 인터페이스는 java.util.* 을 import 해야 합니다.

 


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

Implicit Object

Programming/JSP 2013. 4. 3. 23:46

JSP 에서는 선언없이 사용할 수 있는 객체들이 있습니다.
엄밀히 말하면 JSP->Servlet으로 변환될 때 _jspService() 메소드 안에 자동으로 생성되는 객체들입니다.
그래서 미리 선언되었다고 가정하고 코딩을 할 수 있는데 이들을 내장 객체(Implicit Object)라고 합니다.

 

 

 Implicit Object

 Type 

 Comment  

 request  javax.servlet.http.HttpServletRequest

 클라이언트/서버 정보, 헤더, 쿠키, 파라미터

 response  javax.servlet.http.HttpServletResponse  서버의 응답 정보
 session  javax.servlet.http.HttpSession  세션 정보
 out  javax.servlet.jsp.JspWriter  출력 스트림
 page  javax.servlet.jsp.HttpJspPage

 JSP 페이지를 구현한 자바 클래스 인스턴스

 pageContext  javax.servlet.jsp.PageContext  컨텍스트 정보
 config  javax.servlet.ServletConfig

 서블릿 초기화 정보

 application  javax.servlet.ServletContext  등록 정보
 exception  java.lang.Throwable  예외

 

 

이 내장 객체들이 자동으로 생성이 되는지를 확인할 수 있도록 임의의 jsp 파일을 만들고
브라우저에서 실행하여 jsp 페이지를 확인(서블릿 파일 자동 생성)합니다.
그리고 <TOMCAT_HOME>/work 디렉토리에서 자동 생성된 _jsp.java 파일의 내용을 보면,
내장 객체들의 선언과 초기화된 것을 확인할 수 있습니다.

 

public void _jspService(final javax.servlet.http.HttpServletRequest request, 
    final javax.servlet.http.HttpServletResponse response)
    throws java.io.IOException, javax.servlet.ServletException {

    final javax.servlet.jsp.PageContext pageContext;
    javax.servlet.http.HttpSession session = null;
    final javax.servlet.ServletContext application;
    final javax.servlet.ServletConfig config;
    javax.servlet.jsp.JspWriter out = null;
    final java.lang.Object page = this;
    javax.servlet.jsp.JspWriter _jspx_out = null;
    javax.servlet.jsp.PageContext _jspx_page_context = null;

    try {
      response.setContentType("text/html; charset=UTF-8");
      pageContext = _jspxFactory.getPageContext(this, request, response, null, true, 8192, true);
      _jspx_page_context = pageContext;
      application = pageContext.getServletContext();
      config = pageContext.getServletConfig();
      session = pageContext.getSession();
      out = pageContext.getOut();
      _jspx_out = out;

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

form 한글 처리

Programming/JSP 2012. 7. 12. 23:36

method 에 따라 폼을 get 과 post 로 전달할 수 있지만, 한글을 전달할 경우 약간의 설정이 필요합니다.

우선 전달된 값을 받을 때는 request 내장 객체의 메소드를 이용합니다.

 

<%
String uname = request.getParameter("uname"); // single value
String[] addr = request.getParameterValues("addr"); // multiple values
%>

 


 

GET

 

get 방식으로 한글을 전달할 경우 jsp 페이지의 contentType 이 한글로 설정되어 있다하더라도
url 에 인코딩이 되어 전송된 값을 한글로 처리할 수는 없습니다.
이 방식은 톰캣 환경설정 파일인 $TOMCAT_HOME/conf/server.xml 에 URIEncoding 속성을 추가하여 처리합니다.

 

<Connector port="8080" protocol="HTTP/1.1" URIEncoding="utf-8" connectionTimeout="20000" redirectPort="8443" />

 

 

POST

 

post 방식으로 한글을 전달할 경우는 url 이 아닌 첨부파일 형태로 전송되는 방식이므로
해당 페이지에서 request 내장 객체의 setCharacterEncoding() 메소드를 이용하여
전달된 요청(request)에 대해 한글 처리를 합니다.

 

<%

request.setCharacterEncoding("utf-8");
String uname = request.getParameter("uname");

%>

 


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

Directive

Programming/JSP 2012. 7. 11. 00:30

page

 

JSP 페이지의 속성 지정
<%@ page 속성1="값1" 속성2="값2" ... %>


속성 예)

 

  • contentType="text/html;charset=utf-8"         // 페이지의 MIME 타입과 응답 메시지에 대한 문자 인코딩 지정
    (기본값 ISO-8859-1)
  • pageEncoding="utf-8"                              // 페이지를 읽을 때의 문자 인코딩 지정
  • extends="parent.class" // 상속받는 클래스 지정
  • import="java.util.*"                                   // 페이지에서 사용할 자바 클래스 지정
    (서블릿이 기본적으로 사용하는 java.lang.*, javax.servlet.*, javax.servlet.jsp.*, javax.servlet.http.* 는 명시하지 않아도 됨)
  • session="true"                                        // 페이지가 HttpSession 을 사용하도록 지정


 

이 외에도 info, buffer, autoflush, isThreadSafe, errorPage, isErrorPage 속성이 있습니다.

 

 

include

 

특정 파일을 JSP 페이지에 삽입할 때 사용
<%@ include file="example.jsp" %>


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

JavaBeans

Programming/JSP 2012. 7. 10. 22:30

자바빈즈는 JSP에서 특정 데이터의 집합을 표현하는 패키지 형태의 자바 클래스 파일입니다.
생성자와 멤버변수를 가지며, set~ 형태로 값을 저장하고 get~ 형태로 값을 가져오는 구성을 가집니다.
자바빈즈의 객체 생성은 자바 코드를 이용하거나 액션 태그를 이용할 수 있습니다.

 

* 자바빈즈 작성

 

$ vi HelloBean.java
package com.oops4u.beans;

public class HelloBean {
    private String uname;

    public void setUname( String name ) {
        this.uname = name;
    }

    public String getUname () {
        return "Hello " + this.uname;
    }
}

 

* 자바빈즈 컴파일

 

$ javac -d . HelloBean.java


 

 

1. 자바 형식의 객체 생성 (HelloBean.jsp)

 

<%@page import="com.oops4u.beans.HelloBean"%>
<%
    HelloBean beanObj = new HelloBean();

    beanObj.setUname("Nicky");
    out.println( beanObj.getUname() );
%>

 

 

2. 액션 태그로 객체 생성 (HelloBeanTag.jsp)

 

<jsp:useBean id="beanObj" class="com.oops4u.beans.HelloBean" scope="page" />
<%
    beanObj.setUname("Nicky");
    out.println( beanObj.getUname() );
%>

 

 

http://domain/HelloBean.jsp 접속

// print
Hello Nicky


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret