나의 마음을 ctrl+c,너의 가슴에 ctrl+v

- Server.xml 을 아래와 같이 수정

<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
  <Listener SSLEngine="on" className="org.apache.catalina.core.AprLifecycleListener"/>
  <Listener className="org.apache.catalina.core.JasperListener"/>
  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"/>
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
  <GlobalNamingResources>
    <Resource auth="Container" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase" pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase"/>
  </GlobalNamingResources>
  <Service name="Catalina">
    <Connector URIEncoding="EUC-KR" connectionTimeout="20000" port="8081" protocol="HTTP/1.1" redirectPort="8443"/>
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>
    <Engine defaultHost="localhost" name="Catalina">
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
      <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">
      <Context docBase="cdp" path="/" reloadable="true" source="org.eclipse.jst.jee.server:cdp"/></Host>
    </Engine>
  </Service>
</Server>

eclipse 로 프로젝트 Run on Server 시.
Cannot create a server using the selected type
메시지와 함께 server type 선택이 불가능한 경우가 있다.

이 경우, workspace setting 파일 중, 아래 두 파일을 삭제 후, eclipse 를 재시작하면 해결이 된다. (Tomcat 의 경우)

D:\work\projects\test\workspace\.metadata\.plugins\org.eclipse.core.runtime\.settings
1. org.eclipse.jst.server.tomcat.core.prefs
2. org.eclipse.wst.server.core.prefs

CMD Copy string
CD D:\work\projects\test
DEL workspace\.metadata\.plugins\org.eclipse.core.runtime\.settings\org.eclipse.jst.server.tomcat.core.prefs
DEL workspace\.metadata\.plugins\org.eclipse.core.runtime\.settings\org.eclipse.wst.server.core.prefs

참고 image capture

 

web.xml filter

java/coding2012. 7. 11. 18:35

1. filter description

web.xml 에 설정된 filter 는 url 호출시, 공통처리 업무를 담당 한다.
web.xml 에서 설정하며,
당연하겠지만 framework 의 servlet Intercept (예를들면 Spring 의 HandlerInterceptorAdapter ) 이전에 실행된다.

example

<?xml version="1.0" encoding="UTF-8"?>
.
. 세부설정 상략

    <filter>
        <filter-name>UrlRewriteFilter</filter-name>
        <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
        <init-param>
            <param-name>logLevel</param-name>
            <param-value>WARN</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>UrlRewriteFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
.
. 세부설정 하략
.
</web-app> 


2. filter 중 UrlRewriteFilter
    - 기능 : 특정 Url로 유입시(from), 지정한 Url(to) 로 재호출을 해준다.
   - 설정 : UrlReWriteFilter 를 설정하면, /WEB-INF/urlrewrite.xml 파일이 생성된다. 이 파일에서 설정

example

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 2.6//EN"
        "http://tuckey.org/res/dtds/urlrewrite2.6.dtd">

<urlrewrite>
 <rule>
  <desc>시스템 이름으로 들어오는 URL에 대해 메인 페이지로 이동함</desc>
  <from>^/([a-zA-Z0-9]+)$</from>
  <to type="redirect">%{context-path}/$1/common/main/loginForm.do</to>
  </rule>
</urlrewrite>

 $1 은 유입되는 주소를 의미한다. (세부설정은 내용이 다양해서 별도 post 로)


3. customer filter 작성

<filter>
    <filter-name>CustomerFilter</filter-name>
    <filter-class>test.cmmn.filter.TestFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>CustomerFilter</filter-name>
    <url-pattern>*.do</url-pattern>
</filter-mapping>

모든 *.do url로 유입시, test.cmmn.filter.TestFilter 를 거친다.

기본적으로 TestFileter 는 Filter interface를 implements 한다.

Filter interface 는
    public void init(FilterConfig filterConfig) throws ServletException;
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain ) throws IOException,     ServletException;
    public void destroy();
의 메소드로 구성되어 있다.

implements 하여 해당메소드를 구현하면 된다.
init - filter 호출시, 설정
doFilter - filter에서 처리해야할 작업처리
destory - filter 종료시 호출

Sample java code

package *******.cmmn.managed;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

/** 
 * @Class Name    : AdmFilter
 * @Description    : 관리자모드 필터
 * @author    : ******
 * @create     : 2014. 05. 12.
 */
public final class AdmFilter implements Filter {

 @Override
 public void init(FilterConfig filterConfig) throws ServletException {
  // TODO Auto-generated method stub
  
 }

 @Override
 public void doFilter(ServletRequest request, ServletResponse response,
   FilterChain chain) throws IOException, ServletException {
  // TODO Auto-generated method stub
  
 }

 @Override
 public void destroy() {
  // TODO Auto-generated method stub
  
 }
}

add note : 기본적인 filter 수행에 dispatcher, chain 등 세부적으로 설정 및 확장하여, 활용할 수 있다.
(검색어 : [filter,dispatcher] [filter,chain] )

'java > coding' 카테고리의 다른 글

jQuery plugin 정리 (+ bootstrap color picker 포함)  (0) 2014.05.15
[도움말] jQuery 1.4 chm  (0) 2013.10.24
taglib (el) 명령어 사전 (정리진행중)  (0) 2012.12.26

env : Spring3.0, annotation 사용

*Controller 단 모든 method 에서 권한확인 등의 중복작업을 일괄적으로 할수 있다.

필요1. intercepterHandler 구현
필요2. servlet context bean 등록

사용을 위해, 구현된 Controller 에 HandlerInterceptorAdapter 를 extend 한다.

필요1. intercepter controller 작성... 아래의 구성형태로...

package xxx.xxx.xxx

import ...

public class ExampleHandler extends HandlerInterceptorAdapter {
   
    @Override
    public boolean preHandler(HttpServletRequest request,HttpServletResponse response, Object handler) {
    /* preHandler Controller 유입전 실행됨. */
 boolean rtn = false;
 
 // 검증하여 false 인경우는 가급적 Exception 처리

 return rtn
    }
}

* preHandler - Controller 진입전
* postHandler - view forward 전
* afterCompletion - view forward 및 로드 후


필요2. context 에 등록

 <bean id="annotationMapper"
  class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
  <property name="interceptors">
   <list>
    <ref bean="ExampleHandler"/>   </list>
  </property>
  <property name="order" value="1" />
 </bean>

 <bean id="ExampleHandler " class="xxx.xxx.xxx.ExampleHandler" />

 

'java > framework' 카테고리의 다른 글

Spring3 properites call  (0) 2016.02.04
jsp 에서 Spring framework 연동  (0) 2013.07.19