<Connector> 가 한 개가 아니라는걸 간과해서 protocol 이 HTTP/1.1 인 <Connector> 에만 설정을 하는 것입니다. <Connector> 중에 protocol="HTTP/1.1" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" 등의 값이 포함된 다른 <Connector> 에도 URIEncoding 을 적어줘야 하고, mod_jk 을 통해서 처리하는 거라면 AJP/1.3 쪽 <Connector> 에서도 처리를 해야 합니다.

 

https 443 Connector에 URIEncoding="UTF-8" 추가 후 해결,

기본적으로 HttpSessionListener를 구현(Implements)하여 세션이 생성 되는 시점과 세션이 사라지는 시점을 가지고 올 수 있다.

세션을 생성 되는 시점에 DB나 특정 Static 변수에 세션 정보를 저장 하고 세션이 종료될 때 그 세션 정보를 지워 줌으로써

해당 세션의 중복 로그인을 막을 수 있으며 현재 접속중이 접속자 정보를 가지고 올 수 있다.

package com.moainfo.http.session;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class MoaSessionListener implements HttpSessionListener
{
 public void sessionCreated(HttpSessionEvent se)
 {
  HttpSession session = se.getSession();
  System.out.println("Create session : " + session.getId());
 }
 public void sessionDestroyed(HttpSessionEvent se)
 {
  HttpSession session = se.getSession();
  System.out.println("Close session : " + session.getId());
  
 }
}

 


출처 - http://definejava.net/


===================================================================================


HttpSessionBindingListener vs HttpSessionListener

HttpSessionBindingListener 는 이 인터페이스를 임플리먼츠한 객체를 세션에 바인딩 시키거나 언바인딩 될때 이벤트가 발생합니다. 반면에 HttpSessionListener 인터페이스는 톰캣의 web.xml에 리스너로서 등록을 하면 해당사이트에서 세션이 생성될때 ,글구 소멸될때 발생합니다. 순수한 세션 카운팅을 할때 꼭 필요합니다. ^^;;


출처 - http://www.okjsp.pe.kr/seq/28283


<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions"  prefix="fn"%>

 

${fn:escapeXml(myName)}

 

저 두 녀석간에 어떤 차이점이 있는것일까? sendRedirect가 안되면 getRequestDispatcher를 사용하곤 했는데 원인을 찾아봐야 할 필요성이 생겼다.

1. response.sendRedirect("/contextName/helloWorld.jsp");

전송되는 페이지의 HTTP HEADER에 리다이렉트 정보를 담아 보낸다. 브라우저가 HEADER 정보를 분석한 후 원하는 URL로 리다이렉트 시킨다. sendRedirect 이후에 세션, 쿠키, 헤더 정보를 조작하는 로직이 있다면 Cannot create a session after the response has been committed 에러를 내뱉는다. 비지니스 로직에서 sendRedirect를 하게 된다면 과감하게 return 시키자. 경로에는 컨텍스트명을 포함한 절대 경로(/로 시작하거나 http로 시작하는 풀 주소)로 적어주어야 한다.

2. request.getRequestDispatcher("/helloWorld.jsp").forward(request, response);

해당 코드가 실행되는 순간 이동할 페이지를 강제로 읽어들여 리다이렉트 한다. 브라우저에게 의사 결정권이 없다.
이후의 코드가 무시된다. sendRedirect와 같은 기능을 하지만 sendRedirect는 request/response를 잃는 반면 getRequestDispatcher의 경우 재활용 한다. 경로에는 컨텍스트명을 제외한 경로를 적는다.

참고 :
http://www.jguru.com/faq/view.jsp?EID=223732
http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=50&t=009192

EL (Expression Language)

1) 해석 그대로 표현언어임 (JSP 2.0 에서 새로 추가된 스크립트 언어)

2) <%=hello%> 코드를 EL 로 표현하면 ${hellow} 로 표현<%= %> ${ } 로 표현함

) test 변수를 표현할 때 => ${test}

hellow 객체의 test 변수를 표현할 때 => ${hellow.test} 또는 ${hellow[‘test’]}

EL 의 내장객체

 

내장 객체

설명

pageScope

Page 영역에 존재하는 객체를 참조할 때 사용

requestScope

Request 영역에 존재하는 객체를 참조할 때 사용

sessionScope

Session 영역에 존재하는 객체를 참조할 때 사용

applicationScope

Application 영역에 존재하는 객체를 참조할 때 사용

param

파라미터 값을 얻어올 때 사용

paramValues

파라미터 값을 배열로 얻어올 때 사용

header

Header 정보를 얻어올 때 사용

headerValues

Header 정보를 배열로 얻어올 때 사용

cookie

쿠키 객체를 참조할 때 사용

initParam

컨텍스트의 초기화 파라미터를 의미함

pageContext

pageContext 객체를 참조할 때 사용

 

 

EL 연산자

 

연산자

설명

.

빈 또는 맵에 접근하기 위한 연산자

[ ]

배열 또는 리스트에 접근하기 위한 연산자

( )

연산할 때 우선 순위를 주려고 할 때 사용

X ? a:b

X의 조건이 만족하면 a를 리턴, 만족하지 않으면 b를 리턴

Empty

값이 NULL 일 경우 true를 반환함

 

 

EL 산술연산자

 

연산자

설명

+

더하기 연산자

-

빼기 연산자

*

곱하기 연산자

/ 또는 div

나누기 연산자

% 또는 mod

나머지 연산자

 

 

EL 논리연산자

 

연산자

설명

&& 또는 and

모두 만족하면 true 그렇지 않으면 false 반환

|| 또는 or

하나라도 만족하면 true 그렇지 않으면 false 반환

! 또는 not

값을 만족하지 않으면 true 만족하면 false 반환

 

 

EL 비교연산자

 

연산자

설명

== 또는 eq

값이 같으면 true 그렇지 않으면 false 반환

!= 또는 ne

값이 다르면 true 그렇지 않으면 false 반환

< 또는 lt

보다작다

> 또는 gt

보다크다

<= 또는 le

같거나 작다

>= 또는 ge

같거나 크다

 

 

\ escape 문자 표현식 앞에 \를 붙이면 해당 표현식 부분은 파싱되지 않고 문자열 자체로 인식

default 값으로 Package Explorer 를 쓰면 classes 폴더가 보이지 않는다

classes 폴더밑에 log4j.xml 파일을 만들어서..

이걸 eclipse에서 보려구 했는데 classes 폴더가 안보여서..;;

방법은

상단 메뉴에서 [Window] - [Show View] - [Navigator] 창을 활성화 시킨다음에 보면된다

프로젝트 생성 후 WEB-INF 내에 web.xml 파일이 없는 경우가 있다.

직접 파일을 생성해서 내용을 써도 되나, 자동으로 생성하는 방법이 있다.

Project Explorer나 Navigator에서 해당 프로젝트에 마우스 우 클릭하여 아래와 같이 선택하면 자동으로 생성된다.

Java EE Tools -> Generate Deployment Descriptor Stub

 

- Project Explorer 뷰 - Project 선택 - Properties

- Web Project Settings - Context root 를 / 로 변경

- 메뉴 - Project - Clean

- Servers 뷰에서 tomcat 선택, + 펼침, 해당 프로젝트 선택 후 삭제

- Servers 뷰에서 tomcat 선택 - 마우스 우클릭, Clean

- Servers 뷰에서 tomcat 선택 - 마우스 우클릭, Add and Remove

- 해당 프로젝트 선택후 Add

+ Recent posts