반응형

GET으로 보낼때 한글깨짐
server.xml에 URIEncoding="EUC-KR" 이나 URIEncoding="UTF-8" 추가

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

POST로 보낼때 한글깨짐
모든 jsp와 servlet에서 request.getParameter를 호출하기전에 characterEncoding을 지정해줌
request.setCharacterEncoding("EUC-KR");

이게 싫다면...
web.xml에 필터를 추가해준다
톰캣 6.0인경우 예제 경로는 apache-tomcat-6.0.18\webapps\examples

1. web.xml에 다음을 추가해준다
<filter>
        <filter-name>Set Character Encoding</filter-name>
        <filter-class>filters.SetCharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>EUC-KR</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>Set Character Encoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

2. 필터클래스를 만들어줌
예제경로는 apache-tomcat-6.0.18\webapps\examples\WEB-INF\classes\filters\SetCharacterEncodingFilter.java

프로젝트홈\WEB-INF\classes\filters\SetCharacterEncodingFilter.java
에 복사해서 넣어놓자.
반응형

Oracle 에서 테이블의 컬룸의 값들이 자동으로 증가하도록 테이블을 구성하는 방법

우선 원하는 테이블을 생성한다

CREATE TABLE ajaxchat (
  id int NOT NULL ,
  user varchar(255) NOT NULL,
  msg varchar(255) NOT NULL,
  time int NOT NULL,
  PRIMARY KEY  (id)
);

그후 Sequence 테이블을 작성 한다 .

SQL>CREATE SEQUENCE id
        START WITH 1
        INCREMENT BY 1
        MAXVALUE 100000 ;

 

 시작 값이 1일고 1씩 증가하고, 최대값이 100000만이 되는 시퀀스를 생성했습니다.

그리고 값을 저장 할 때 이런식으로 insert 시킨다


 SQL>INSERT INTO ajaxchat(id, user, msg,time ) VALUES(id.NEXTVAL, ’julia’ , sysdate,1);

    empno는 컬럼값을 입력할 때 일일이 다음 값을 기억하지 않아도 NEXTVAL을 사용하여
    자동으로 입력할 수 있습니다.




 시퀀스란?


유일(UNIQUE)한 값을 생성해주는 오라클 객체입니다.

◈ 시퀀스를 생성하면 기본키와 같이 순차적으로 증가하는 컬럼을 자동적으로 생성할수 있습니다.

◈ 보통 primary key 값을 생성하기 위해 사용합니다.

◈ 메모리에 Cache되었을 때 Sequence 값의 액세스 효율이 증가 합니다.

◈ Sequence는 테이블과는 독립적으로 저장되고 생성됩니다. 따라서 하나의 sequence를
    여러 테이블에서 쓸 수 있습니다.
 



시퀀스 생성





START WITH : 시퀀스의 시작 값을 지정합니다. n을 1로 지정하면 1부터 순차적으로
                     시퀀스번호가 증가 합니다.

INCREMENT BY : 시퀀스의 증가 값을 말합니다. n을 2로 하면 2씩 증가합니다.
                        START WITH를 1로 하고 INCREMENT BY를 2으로 하면 1, 3, 5,7,.. 이렇게
                       시퀀스  번호가 증가하게 됩니다.

MAXVALUE n | NOMAXVALUE : MAXVALUE는 시퀀스가 증가할수 있는 최대값을 말합니다.                                             NOMAXVALUE는 시퀀스의 값을 무한대로 지정합니다.

MINVALUE n | NOMINVALUE : MINVALUE는 시퀀스의 최소값을 지정 합니다.
                                      기본값은 1이며, NOMINVALUE를 지정할 경우 최소값은 무한대가 됩니다

 


 SQL>CREATE SEQUENCE emp_seq
        START WITH 1
        INCREMENT BY 1
        MAXVALUE 100000 ;

      sequence created.

     시작 값이 1일고 1씩 증가하고, 최대값이 100000만이 되는 시퀀스를 생성했습니다.


 SQL>INSERT INTO emp(empno, ename, hiredate ) VALUES(emp_seq.NEXTVAL, 'julia' , sysdate);

    empno는 컬럼값을 입력할 때 일일이 다음 값을 기억하지 않아도 NEXTVAL을 사용하여
    자동으로 입력할 수 있습니다.

  CURRVAL : 현재 값을 반환 합니다. .
   NEXTVAL : 현재 시퀀스값의 다음 값을 반환 합니다.


 SQL>SELECT emp_seq.CURRVAL FROM DUAL ;

        CURRVAL
        ---------
                  1

 SQL>SELECT emp_seq.NEXTVAL FROM DUAL ;

       NEXTVAL
     ---------
                 2
 



사용규칙 


  ◈ NEXTVAL, CURRVAL을 사용할 수 있는 경우
    - subquery가 아닌 select문
    - insert문의 select절
    - insert문의 value절
    - update문의 set절


  ◈ NEXTVAL, CURRVAL을 사용할 수 없는 경우
    - view의 select절
    - distinct 키워드가 있는 select문
    - group by, having, order by절이 있는 select문
    - select, delete, update의 subquery
    - create table, alter table 명령의 default값


시퀀스의 수정 및 삭제





START WITH는 수정할수 없습니다.
START WITH 절이 없다는 점을 빼고는 CREATE SEQUENCE와 같습니다.
 


 SQL>ALTER SEQUENCE emp_seq
         INCREMENT BY 2
         CYCLE;

      sequence altered.

      2씩 증가하고, 최대값을 넘으면 다시 처음부터 순환하도록 수정하였습니다.


      DROP 문을로 필요하지 않은 시퀀스는 삭제 할수 있습니다.

 SQL>DROP SEQUENCE PRD_SEQ;
        sequence dropped.
 

  ================================================
    * 오라클 정보공유 커뮤니티 oracleclub.com
    * http://www.oracleclub.com
    * http://www.oramaster.net
    * 운영자 : 김정식 (oramaster _at_ naver.com)
  ================================================
※ oracleclub 강좌를 다른 홈페이지에 퍼가실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

 

반응형

내장객체

1. out : 페이지 내용을 담고 있는 출력 스트림 객체

2. request : 파라미터를 포함한 요청정보를 담고 있는 객체

3. response : 요청에 대한 응답을 담고있는 객체

4. session : 세션 정보를 담고 있는 객체

5. application : 어플리케이션 Context의 모든 페이지가 공유할 데이터를 담고 있는 객체

6. pageContext : 페이지 실행에 필요한 Context정보를 담고있는 객체

7. page : JSP페이지의 서블릿 객체

8. config : JSP페이지의 서블릿 설정 데이터 초기화 정보객체

9. exception : JSP페이지의 서블릿 실행시 처리하지 못한(에러발생) 예외 객체

 

★★★ request, session, application, pageContext 내부객체는 임의의 속성값(attribute)을 저장하고 읽을 수 있는 메서드를 제공한다.

 

setAttribute(String key, Object value) : 주어진 key에 속성값을 연결한다.
getAttribute(String key) : 주어진 key에 대한 속성값을 얻는다.
removeAttribute(String key) : 주어진 key에 연결된 속성값을 제거한다.
getAttributeNames() : 모든 속성의 이름을 얻어낸다.

. JSP페이지에 관련된 객체 : page, config
. 페이지 입출력 관련된 객체 : request, response, out
. 컨텍스트에 관련된 객체 : session, application, pageContext
. 에러에 관련된 객체 : exception

 

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
★ out 내장 객체 Method
1. isAutoFlush() : 출력 버퍼가 가득찼을 때 자동으로 밀어낼 것인지 여부 지정 (true/fasle)
2. getBufferSize() : 출력 버퍼 전체 size를 구함
3. getRemaining() : 출력 버퍼중 남아있는 size를 구함
4. clearBuffer() : 출력 버퍼를 비운다.
5. println() : String을 출력한다.
6. flush() : 출력 버퍼 내용을 밀어낸다.
7. close() : 출력 버퍼 내용을 밀어 내고, 출력 버퍼를 닫는다.

 

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
★ request 내장 객체 메서드
1. getMethod() : 요청 방식 알아내기 (get, post)
2. getRequestRUI() : 요청 파일 경로 알아내기 (예: jsp2/RequestTest.jsp)
3. getRequsetURL() : 요청 경로 알아내기 (예: http://localhost:9000/jsp2/Request.jsp)

4. getRemoteHost() : 클라이언트 호스트 이름 알아내기
5. getRemoteAddr() : 클라이언트 주소 알아내기
6. getRemoteUser() : (인증을 이용한 경우) 이용자 ID 알아내기

7. getProtocol() : 사용중인 프로토콜 알아내기(HTTP1.1)
8. getServerName() : 서버 도메인 이름 알아 내기
9. getServerPort() : 서버 Port 알아내기

10. getHeader(name) : name에 해당하는 요청 헤더 항목 값을 알아내기

11. getParameter(name) : name에 해당하는 파라미터값 얻는다.
12. getParameterValues(name) : name에 해당하는 파라미터값을 모두 얻는다.
13. getParameterNames() : form에 있는 모든 파라미터 이름을 얻는다.

 

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
★ response 내장 객체 메서드
1. setContentType(type) : 출력 문서의 contentType 설정
2. getCharacterEncoding() : 문자 인코딩 설정 내용 알아내기
3. setHeader(name, value) : 응당 헤더 설정
   예: response.setHeader("Refresh", "3;URL=http://www.daum.net");//3초후 URL로 이동
4. sendRedirect("url") : 지정 url로 요청을 재전송한다.
   예: response.sendRedirect("로컬URL");
       response.sendRedirect("외부URL");

 

※ response.sendRedirect와 forward 액션태그 차이점
  - sendRedirect()는 웨브라우저가 다른 페이지로 이동하는덷 이때 다른 페이지로 가기의해 웹 브라우저는 웹서버에 새로운 Http요청을 보낸다. 즉, TCP네트워크 연결이 다시 만들어 지는 것이다.

 - 이제 비해 forward액션은 JSP엔진에서 Http요청을 다른 페이지로 보내는 것이다. 즉, Http요청 처음 만들어진 것 하나만 있는 것이다. 이것은 중요한 의미를 갖는다.
    cf) <jsp:forward page="로컬URL"/>
         <jsp:forward page="외부URL"/> --안됨!! 

 - sendRedirect()는 사용하면 웹브라우저에서 처음에 전송한 Http요청과 이 요청에 포함된 데이터들은 새로 이동된 페이지에서 사용할 수 없게 된다. 반면에 forward액션을 사용하면 Http요청은 하나만 사용하기 때문에 새로 이동된 페이지에서도 클라이언트에서 전송된 데이터를 사용할 수 있다.

 

※ forward액션 태그
   방법1 <jsp:forward page="로컬URL"/> = <jsp:forward page="로컬URL"></jsp:forward>
   방법2 <jsp:forward page="로컬URL">
               <jsp:param name="id" value="kim"/>
               <jsp:param name="pwd" value="123"/>
            </jsp:forward>


※ include지시자(디텍티브)

   <%@ include file ="파일명.확장자" %>
                              name.txt
                              aa.html
                              bb.jsp <- 현재 JSP페이지에 포함할 문서
        *include지시자는 단순히 문서를 포함시킨다. 포함시킬 문서는 헤더부분 넣지 말아야한다.

※ include액션
   *include앤셕 실행될 결과물을 현재페이지에 포함시킨다.
   <방법1>
      <jsp:include page="로컬URL" flush="true"/>
   <방법2>
      <jsp:include page="로컬URL" flush="true"/>
          <jsp:param name=" " value=" "/>
          <jsp:param name=" " value=" "/>
          .....

      </jsp:include>

 

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
★ application 내장 객체 메서드
 application 내장 객체는 서블릿 또는 어플리케이션 외부환경정보(context)의 내부객체입니다.
 application은 javax.servlet.ServletContext의 객체이다.

<Method>
1. String getServletInfo() : 서버 정보를 구한다.(웹 컨테이너이름과 버전, 즉 JSP컨테이너에 대한 정보)
2. String getMimeType(fileName) : fileName대한 MIME타입을 리턴한다.
  예) String str = request.getParameter("filename");
      String contentType = application.getMimeType(str);
3. String getMajorVersion() : 서버가 지원하는 서블릿규약의 Major version을 리턴한다.(정수부분)
4. String getMinorVersion() : 서버가 지원하는 서블릿규약의 Minor version을 리턴한다.(소수부분)

5. String getRealPath(url) : 지정 URL의 실제 경로를 리턴한다.
6. void log("message") : message내용을 file에 기록한다.

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
--myroot\WEB-INF\web.xml--
<context-param>
 <description>로깅여부</description>
 <param-name>logEnabled</param-name> <!-- 이름이 logEnabled이고 값이 true인 초기화 파라미터 추가 -->
 <param-value>true</param-value>
</context-param>
 
<context-param>
 <description>로깅레벨</description>
 <param-name>debugLevel</param-name> <!-- 이름이 debugLevel이고 값이 5인 초기화 파라미터 추가-->
 <param-value>5</param-value>
</context-param>

 

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
★ Cookie 내장 객체 생성자 &메서드
생성자
- Cookie(name, value) 이름이 name이고, 값이 value인 쿠키를 생성

메서드
 setter method or setXXX()
- setValue() : 쿠키값 설정
  setDomain() : 쿠키에 전달되는 도메인 설정
  setPath() : 쿠키에 전달되는 경로 설정
  setMaxAge() : 쿠키 나이 설정(쿠키 유효기간 설정<-초>)
  setSecure() : 보안 프로토콜(HTTPS)에서만 쿠키를 전달되도록 설정한다.
  
 getter method or getXXX()
- getName() : 쿠키이름 얻기
  getValue() : 쿠키값 얻기
  getDomain() : 쿠키가 전달되는 도메인 알아내기
  getPath() : 쿠키가 전달되는 경로 알아내기
  getMaxAge() : 쿠기 유효기간 알아내기
  getSecure() : 보안 프로토콜(HTTPS)에서만 쿠키가 전달되는지 알아내기

 <<쿠키를 생성해서 클라이언트 심는 방법>>
  Cookie cookie = new Cookie("쿠키이름", URLEncoder.encode("쿠키값"));
  response.addCookie(cookie); //쿠키심기
 
 <<클라이언트가 보내주는 쿠기를 모두 받아서 특정 이름의 쿠키값을 알아내기>>

 Cookie[] cookies = request.getCookies(0;
 if(cookies!=null){
         for(int i=0; i<cookies.length; i++){
                 if(cookies[i].getName().equals("쿠키이름")){
                         visiterName = URLDecoder.decode(cookies.getValue());
                         out.println("쿠키값 : " + visiterName);
                 }
         }
 }

 

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
★ session 내장 객체 메서드

- 세션은 쇼핑몰같은 구매 제품을 클릭할때마다 누가 클릭했는지 기억을 해야하는 사이트에서는
웹서버쪽에 사용자별 기록을 남겨야만 합니다.

 웹 서버쪽에 기억 시키는 것을 세션이라고 합니다.
 JSP에서는 session객체를 통하여 이용할 수 있습니다.

<< session객체 method >>
1. String getId() : 해당 세션의 고유한 세션의 ID를 리턴
2. void setMaxInactiveInterval(time) : 세션 유지 시간 설정(초단위)
3. int getMaxInacativeInterval() : 세션 유지 시간을 얻는다(기본 유지시간 30분)

4. isNew() : 새로 생성된 세션이면 true return
5. invalidate() : session를 제거

setAttribute(name, value) : session에 name, value값의 항목을 추가
getAttribute(name) : session에서 name에 해당하는 value값을 얻는다.

* HttpSession getSession() :
  1. getSession(true) : true는 새로운 세션을 create만 하는 것
  2. getSession(false) : false는 현재 세션을 그대로 리턴 하는 것
  3. getSession() : session존재 여부를 확인하여,
                    session이 없다면 새로 session을 create하고
                    session이 있다면 그대로 return
                    위 2개의 장점을 취한 것.

 

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
※JSP 액션
<jsp:useBeans> - JSP페이지에서 빈을 초기화 하는데 사용
<jsp:setProperty> - 빈의 property에 값을 넣어 주기 위해 사용
<jsp:getProperty> - 빈의 property의 앖을 가져오기 위해서 사용
<jsp:forward> - 처리를 분기할 때 사용
<jsp:include> - 처리 결과무를 포함 시킬 때 사용

지시자
<%@ page %>
<%@ include file="파일명" %>
<%@ taglib %>

[출처] JSP내장객체|작성자 신지c


+ Recent posts