Context라는 개념은 정말 정말 최고로 잘 만들어놓은 개념이 아닌가 싶다.

AppletContext, XletContext, MidletContext, ActionContext 라는 용어..

 

Webwork에서는 ActionContext를 이용하여 Context객체를 얻어오면, 많은 일을 할 수 있다.

그중의 샘플로 파라미터 받기..

 

 

String[] params = (String[])(ActionContext.getContext().getParameters().get("turtle"));
String userName = "";
if (params != null) {

    userName = params[0];

}

 

 

사실 스트러츠1과 비교해 볼때, 파라미터로 받지 않고, Context로 받는 것외엔 다른 점은 없다.

Posted by 김용환 '김용환'

댓글을 달아 주세요

하도 Webwork쪽 가이드를 안하다 보니. 다 까먹는다.. 평상시에 좋은 팁있으면 올려야곘다.

 

 

    <action name="search" class="com.google.search.SearchKorea">  

       <result name="success" type="chain">SearchInUSA</result>  

       <result name="fail" type="dispatcher">/monitor/showdefault.jsp</result>  

    </action>  

 

패키지 이름이 "/"라고 가정하면.

 

search라는 Action이 호출될 떄, 바인됭 클래스 (com.google.search.SearchKorea)를 실행시켜서 return 결과값에 맞춰 동작을 시키는데.

 

chain은 보통 Action을 호출한다. (이는 스트러츠 1과 비슷하도록 한 것)

그리고, 실패하면 단순히 jsp를 호출하도록 한다.

 

 

chain type은 Action을 다시 호출할 수 있다. 그러나 dispatcher type은 jsp를 호출한다.

 

 

참고로 .. Action 잘못 호출하면.. 이렇게 된다. 무한 반복 회출될 수 있다..

서로가 서로를 호출하는 구조가 되지 않도록 한다.

 

com.opensymphony.xwork.XworkException: infinite recursion detected
 at com.opensymphony.xwork.ActionChainResult.execute(ActionChainResult.java:137)
 at com.opensymphony.xwork.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:312)
 at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:207)
 at com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:113)
 at com.opensymphony.webwork.dispatcher.DispatcherUtils.serviceAction(DispatcherUtils.java:233)

 

 

Posted by 김용환 '김용환'

댓글을 달아 주세요

java jstl에서 c.tld 파일

web 2008. 4. 5. 08:26

머 다 아는 거지만, 오랜만에 jsp 코딩때문에 해맸다.

c.tld 파일이 없다라는 에러였다..

 

 

과거에는 jsp에서 jstl 의 core 를 사용하려면

 

  1. WEB-INF/web.xml에 deployment descriptor에 추가


  1.      <taglib>
           <taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
           <taglib-location>/WEB-INF/tlds/c.tld</taglib-location>
         </taglib>

 

다음과 같은 작업을 했었다.

 

하지만, jstl standard (standard-1.1.2.jar)를 classpath로 잡으면 . 굳이 web.xml에 포함하지 않아도 된다.

 

그 이유는 standard-1.1.2.jar파일의 META-INF 디렉토리 안에. 각종 TLD 파일이 존재하는데. 그중에 c.tld 파일이 존재한다.

그래서, 굳이 tomcat의 web.xml파일안에 태그 라이브러리 선언이 없어도 된다.

 

 

Posted by 김용환 '김용환'

댓글을 달아 주세요

 

 

static void parse_cookie(const char *cookies, char *value, const char *key);

 

사용하기

parse_cookie(cookies, value, "GOOGLE-LOGIN");

 

다음은 코드..

 

 

 

#include <stdio.h>

  

static void parse_cookie(const char *cookies, char *value, const char *key)

{

  register const char *p;

  int key_len;

 

  if (!cookies) return;

 

  p = cookies;

  key_len = strlen(key);

 

  while (*p) {

    const char *name;

    while (*p == ' ' || *p == ';') p++;

    name = p;

    do {

      if (*p == '\0') break;

      p++;

    } while (*p != '=');

    if (p - name == key_len && !strncmp(key, name, key_len)) {

      register char *c = value;

      p++;

      do {

        if (*p == '\0' || *p == ' ' || *p == ';') break;

        *c++ = *p++;

      } while (*p != ' ' && *p != ';');

      *c = '\0';

      return;

    }

    else {

      do {

        if (*p == '\0' || *p == ' ' || *p == ';') break;

        p++;

      } while (*p != ' ' && *p != ';');

    }

  }

}

 

 

 

Posted by 김용환 '김용환'

댓글을 달아 주세요

jsp내에서 태그라이브러리 사용시 중요한 점.

 

잘못된 경로를 사용하면 EL을 사용할 수 없다.

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

 

따라서 올바른 uri 경로를 사용하면 된다.

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

 

 

 

Posted by 김용환 '김용환'

댓글을 달아 주세요

 

출처 : http://hc.apache.org/httpclient-3.x/cookies.html

 

쿠키 스펙은 RFC2109 RFC2965에 정의되어 있다.

HTTP Client를 이용해서 다음과 같이 사용이 가능하다.

 

 

        HttpClient client = new HttpClient();
        HttpMethod method = new GetMethod("http://www.google.com/");
            method.getParams().setCookiePolicy(CookiePolicy.RFC_2109);
            method.setRequestHeader("Cookie", "NND=qfeqve1;login=123gd3rth");

 

이렇게 사용하면, 쿠키 테스트를 쉽게 할 수 있다.

 

 

Posted by 김용환 '김용환'

댓글을 달아 주세요

 

HTTPD –L은 다음과 같습니다.

 

-L          Output a list of directives together  with  expected  argu-ments and places where the directive is valid.

 

[e61128 /usr/local/apache/bin]# httpd -L > module

11.txt 참조하세요.

아파치에서 사용하는 directivedirective를 포함하는 모듈과의 상관관계와 설명이 나와있습니다.

 

 

 

Httpd –l static module list를 알려주는 것입니다.

-l          Output a list of modules compiled into the server.

 

[e61128 /usr/local/apache/bin]# httpd -l

Compiled in modules:

  core.c

  mod_access.c

  mod_auth.c

  mod_include.c

  mod_log_config.c

  mod_env.c

  mod_setenvif.c

  prefork.c

  http_core.c

  mod_mime.c

  mod_status.c

  mod_autoindex.c

  mod_asis.c

  mod_cgi.c

  mod_negotiation.c

  mod_dir.c

  mod_imap.c

  mod_actions.c

  mod_userdir.c

  mod_alias.c

  mod_so.c

 

 

우리가 보던 설정파일 httpd.conf의 내용중 Dynamic Shared Object는 위의 httpd –l 리스트에 나오면 안나오도록 설계가 되어 있죠.

 

#

# Dynamic Shared Object (DSO) Support

#

# To be able to use the functionality of a module which was built as a DSO you

# have to place corresponding `LoadModule' lines at this location so the

# directives contained in it are actually available _before_ they are used.

# Statically compiled modules (those listed by `httpd -l') do not need

# to be loaded here.

#

# Example:

# LoadModule foo_module modules/mod_foo.so

#

Include conf/mod_charset.conf

Include conf/mod_deflate.conf

Include conf/mod_dosevasive20.conf

Include conf/mod_headers.conf

Include conf/mod_jk.conf

Include conf/mod_proxy.conf

Include conf/mod_proxy_connect.conf

Include conf/mod_proxy_ftp.conf

Include conf/mod_proxy_http.conf

Include conf/mod_rewrite.conf

Include conf/mod_security.conf

Include conf/mod_url.conf

 

 

, LoadModule.conf파일의 경우는 Load를 하되. Load가 되면, forcecharset을 먹이라는 뜻이죠.

LoadModule charset_module     modules/mod_charset.so

 

<IfModule mod_charset.c>

        ForceCharset KSC5601

</IfModule>

 

모듈 리스트에는 mod_charset.c이 포함되어 있습니다.

[e61128 /usr/local/apache/modules]# ll

ÇÕ°è 1388

drwxr-xr-x   2 www www   4096  8¿ù 31 15:45 .

drwxr-xr-x  15 www www   4096  8¿ù 31 15:45 ..

-rw-r--r--   1 www www   8504  8¿ù 31 15:44 httpd.exp

-rwxr-xr-x   1 www www  26687  8¿ù 31 15:45 mod_charset.so

-rwxr-xr-x   1 www www  22892  8¿ù 31 15:45 mod_comicsession2.so

-rwxr-xr-x   1 www www  38228  8¿ù 31 15:45 mod_deflate.so

-rwxr-xr-x   1 www www  36115  8¿ù 31 15:45 mod_dosevasive20.so

-rwxr-xr-x   1 www www  35061  8¿ù 31 15:45 mod_headers.so

-rwxr-xr-x   1 www www 462702  8¿ù 31 15:45 mod_jk.so

-rwxr-xr-x   1 www www 177095  8¿ù 31 15:45 mod_nvidsession.so

-rwxr-xr-x   1 www www  96087  8¿ù 31 15:45 mod_proxy.so

-rwxr-xr-x   1 www www  26845  8¿ù 31 15:45 mod_proxy_connect.so

-rwxr-xr-x   1 www www  67218  8¿ù 31 15:45 mod_proxy_ftp.so

-rwxr-xr-x   1 www www  64674  8¿ù 31 15:45 mod_proxy_http.so

-rwxr-xr-x   1 www www 115709  8¿ù 31 15:45 mod_rewrite.so

-rwxr-xr-x   1 www www 152415  8¿ù 31 15:45 mod_security.so

-rwxr-xr-x   1 www www  21083  8¿ù 31 15:45 mod_url.so

 

만약 mod_charset.so 파일이 없는 상태에서, httpd restart를 하면 다음의 결과가 나옵니다.

[e65004 /usr/local/apache/modules]# mv mod_charset.so mod_charset1.so

[e65004 /usr/local/apache/modules]# ../bin/httpd -k graceful

Syntax error on line 2 of /usr/local/apache/conf/mod_charset.conf:

Cannot load /usr/local/apache/modules/mod_charset.so into server: /usr/local/apache/modules/mod_charset.so: cannot open shared object file: No such file or directory

 

참고하세요.

 

결론은

, 정적인 모듈은 httpd –l 로 확인할 수 있고, 동적인 모듈은 LoadModule시 에러가 나지 않으면 동적으로 로딩됨을 확인이 가능합니다.

 

l  혹시 잼난거 있으면 서로 공유해요~~

 

Manual httpd는 아래의 주소를 참조했습니다.

http://www.hmug.org/man/8/httpd.php

Posted by 김용환 '김용환'

댓글을 달아 주세요

아파치에서 서비스를 막고, 특정 페이지만 다로 403, 404 페이지를 보여주기..

 

Location 태그를 이용하면 된다.

 

 

 

 

 <Location ~ "wt.nhn">
    Order deny,allow
    Deny from all
    ErrorDocument 403 /common/under/wt_under.html
    ErrorDocument 404 /common/under/wt_under.html
</Location>

 

 

 

이와는 별개로 사실은 다른 시도가 있었다.

 

SetEnv FOO 1

SetEnvIf FOO 1 under

 

<File ~ (*.txt)>

     Order deny,allow
    Deny from env=under
    ErrorDocument 403 /common/under/wt_under.html

</File>

 

이렇게 해보려고 했다.

 

실제 어떤 property를 apache에서 지정하고, 해당되는 변수의 값으로 먼가를 하려고 했지만.. 할 수 없는 구조이다.

그것은 아파치는 실제 그런 기능이 없다. (-D로 주는 property를 제외하고는...)

 

SetEnv의 역할은 environment variable, 즉 환경변수만을 지정할 뿐이다.

SetEnvIf의 역할은 HTTP Request Header에서의 필드만을 Filter만 할 뿐..

 

SetEnv와 SetEnvIf는 전혀 상관성이 없었다.

 

이외.

 

PassEnv라는 것이 있었으나.

이것은 shell에서의 환경변수만을 그대로 아파치에게 넘겨주는 것뿐이니...

 

참조할 것.

 

Property를 주는 것은 httpd를 띄울 때 -D 에 넣어서 실행시켜야 한다. 아니면, httpd.conf 파일을 약간 수정할 것~^^

 

 

 

Posted by 김용환 '김용환'

댓글을 달아 주세요

subversion 설치 스크립트

web 2007. 12. 4. 20:20

 #!/bin/csh

set WWW_HOME="/home/www"
set SRC_HOME="${WWW_HOME}/src"

echo ">> Install Subversion"
cd ${SRC_HOME}
\rm -rf subversion*

# subversion을 깔기 위해서는 apr,apr-util library가 필요하다.
# 혹시 예전 버젼이면,  다음을 사용하라
# wget http://ftp.kaist.ac.kr/pub/Apache/apr/apr-0.9.17.tar.gz
# wget http://mirror.apache-kr.org/apr/apr-util-0.9.15.tar.gz
# 만약 apr을 설치하면, .configure가 바뀌어 진다....
# ./configure --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
wget http://subversion.tigris.org/downloads/subversion-1.4.3.tar.gz
tar zxf subversion-1.4.3.tar.gz
cd subversion-1.4.3
chmod 755 configure
./configure
make
sleep 1
make install

Posted by 김용환 '김용환'

댓글을 달아 주세요

php 설치 스크립트

web 2007. 12. 4. 20:19

 #!/bin/csh

set WWW_HOME="/home/www"
set SRC_HOME="${WWW_HOME}/src"
set SCRIPT_HOME="${WWW_HOME}/script"
set PHP_VERSION="5.1.0"
set APACHE_HOME="/usr/local/apache2"
set MYSQL = "$1"

wget http://xmlsoft.org/sources/libxml2-2.6.13-1.i386.rpm
wget http://xmlsoft.org/sources/libxml2-devel-2.6.13-1.i386.rpm
wget http://xmlsoft.org/sources/libxml2-python-2.6.13-1.i386.rpm

rpm -Uvh ./libxml2-*

echo ">> Install PHP ${PHP_VERSION}"
cd ${SRC_HOME}
\rm -rf php-${PHP_VERSION}
tar zxf php-${PHP_VERSION}.tar.gz
cd php-${PHP_VERSION}
chmod 755 configure
./configure --prefix=/usr/local/php --with-regex=php --with-apxs2=/usr/local/apache/bin/apxs --with-exec-dir=/usr/local/apache/bin --with-config-file-path=/usr/local/apache/conf --with-language=korea --with-charset=euc_kr --enable-track-vars=yes --enable-ftp  --with-zlib --with-gd
make
sleep 1
make install

Posted by 김용환 '김용환'

댓글을 달아 주세요