'Framework'에 해당되는 글 75건

Struts 1 - 기본 2009.06.25
Spring - 초기 설정 2009.04.17
SiteMesh - 초기 설정 방법 & 설정 2009.04.17
SiteMesh - SiteMesh란? 2009.04.17
Tiles - 설정 순서 2009.04.14

Struts 1 - 기본

Published on: 2009. 6. 25. 16:10 by louis.dev



기본 흐름

Client는 주소창에 register.do를 입력을 하면 맨처음으로 web.xml을 로딩한다.

web.xml은

<servlet>
   <servlet-name>action</servlet-name> <!-- 아무이름이나 하면 된다. -->
   <servlet-class>  <!-- 클래스 지정 -->
    org.apache.struts.action.ActionServlet
   </servlet-class>
 
 <init-param> <!-- struct-config.xml 설정 -->
  <param-name>config</param-name> <!-- 이름은 아무거나 -->
  <param-value>/WEB-INF/struts-config.xml</param-value>  <!-- /WEB-INF/(기본베이스 - 다른폴더일때는 경로를 설정해주어야 함)폴더 안에 struts-config.xml파일 위치 지정  - 여기까지 작성후 struts-config.xml파일을 생성-->
 </init-param>
  </servlet>
 
  <servlet-mapping> <!-- url 패턴 설정 -->
   <servlet-name>action</servlet-name> <!-- *.do로 들어오면 servlet-name이 action 실행 -->
   <url-pattern>*.do</url-pattern>
  </servlet-mapping>

다음과 같은 코드로 되어있다.
servlet mapping을 통해서 *.do로 들어오는 모든것들을  ActionServlet을 로드하고 struts-config.xml을 로딩하게 된다.

struts-config.xml은 로딩을 통해서 action 태그에 있는 내용을 로드하게 된다.

ActionServlet은 Servlet에서 init() 메소드의 역할을 하고 RequestProcess 는 service()메소드의 역할을 하게 된다.

RequestProcess에서 RequestProcessor class를 상속받아 다양한 method를 override해서 구현 할 수 있는데

위에 말한 Servlet의 Service() 메소드 역할을 하는것들이 RequestProcessor class의 process*()메소드 이다.

RequestProcessor class에서 process메소드 들을 상속하지 않으면 기본적인 메소드가 실행 된다.

ActionServlet에서 입력된 데이터들은 RequestProcess로 넘어가기 전에 RequestProcessor class 의 processPreprocess()를 오버라이드 함으로서 한글 인코딩 설정을 할 수 있다.

그리고 RequestProcessor class를 선언하고 사용할 때는 반드시 struts-config.xml 파일에서 다음과 같이 선언 해 주어야 한다.

<controller processorClass="com.myhome.info.processor.InfoRequestProcessor" />    //다읨의 경로는 패키지 경로와 클래스 파일 이름이다.

RequestProcess로 넘어온 데이터는 ActionForm에 저장되어 Action class를 상속받은 RegistAction class의 execute() 메소드에서 사용 할 수 있다.

RegistAction class 의 비지니스 로직을 통해 로직을 수행한 후 ActionForward를 통해 ViewPage로 이동을 돕는다. 이 결과값이 다시 RequestProcess로 돌아와 Client에서 뿌려지게 된다.

Spring - 초기 설정

Published on: 2009. 4. 17. 11:40 by louis.dev

1.web.xml 설정


    -context-param 설정
    -listener 설정
    -servlet&servlet-mapping 설정(Spring MVC 쓸때 설정)
2.context-param 에서 지정한 xml 파일 생성(여기서는 /WEB-INF/config/applicationContext.xml)

    <applicationContext.xml>
        -bean 초기화

3.    <spring MVC를 사용할때>
<servlet>
        <servlet-name>action</servlet-name>        <!-- action이란 servlet은 DispatcherServlet.class를 실행 시킴 -->
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>        <!-- 초기(init) action이 불러 들여 올때 config/action-servlet.xml이 불러들여짐 -->
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/config/action-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
   
    <servlet-mapping>    <!-- url로 *.do로 들어오면 action servlet(위에것) 실행 -->
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

    여기서 맵핑한 /WEB-INF/config/action-servlet.xml 설정

4.action-servlet.xml  에서

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <!--InernalResourceViewResolver viewResolver=new InernalResourceViewResolver()  -->
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="/WEB-INF/jsp/spring/" /> <!-- 주소 창 앞에 들어갈 내용 -->
        <property name="suffix" value=".jsp" />                    <!-- 파일명 뒤에 들어갈 확장자 -->
    </bean>

   
    <!-- url 맵핑시킴(ex./index.do로 접근하면 indexController 로 사용 -->
<bean id="boardUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="mappings">        <!-- setMappings()랑 똑같은것 -->
        <props>
            <prop key="/index.do">indexController</prop>   
            <prop key="/board.do">boardMultiActionController</prop>
            <prop key="/board_edit.do">boardSimpleFormController</prop>
            <prop key="/board/delete.do">boardDeleteController</prop>
            <prop key="/board/write_form.do">boardWriteFormController</prop>
            <prop key="/board/write.do">boardWriteController</prop>
            <prop key="/board/edit_form.do">boardEditFormController</prop>
            <prop key="/board/edit.do">boardEditController</prop>
           
        </props>
    </property>
</bean>

두군대 설정

-맵핑을 시키는 것이 너무 많아 지면 힘들어 짐으로 Spring web flow 라는 새로운 것을 사용하여 쓸수 있다.


SiteMesh - 초기 설정 방법 & 설정

Published on: 2009. 4. 17. 09:41 by louis.dev
sitemesh.war


0. Library
commons-collections.jar
sitemesh-2.4.1.jar 추가

1. web.xml 설정


<context-param>                                     <!-- SiteMesh 설정 파일인 sitemesh.xml파일의 경로를 지정한다. -->
        <param-name>sitemesh.configfile</param-name>
        <param-value>/WEB-INF/config/sitemesh.xml</param-value>
    </context-param>
   
<filter>                                                    <!-- SiteMesh의 필터를 설정한다.  -->
        <filter-name>sitemesh</filter-name>
        <filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
</filter>
   
 
<filter-mapping>                                         <!-- url 패턴이 .jsp로 들어오면 위의 sitemesh 필터를 실행한다.  -->
        <filter-name>sitemesh</filter-name>
        <url-pattern>*.jsp</url-pattern>
        <dispatcher>REQUEST</dispatcher>     <!-- jsp에 대한 요청이 REQUEST,FORWARD 일때 sitemesh 필터를 실행한다. -->
        <dispatcher>FORWARD</dispatcher>
</filter-mapping>

2. sitemesh.xml 설정

<sitemesh>
     <!-- decorators.xml 의 위치를 지정 -->
    <property name="decorators-file" value="/WEB-INF/config/decorators.xml"/>
   
    <!-- 아래는 붙여 넣기 하기 -->
    <excludes file="${decorators-file}"/>

    <page-parsers>
        <parser content-type="text/html" class="com.opensymphony.module.sitemesh.parser.HTMLPageParser" />
    </page-parsers>

    <decorator-mappers>

        <mapper class="com.opensymphony.module.sitemesh.mapper.PageDecoratorMapper">
            <param name="property.1" value="meta.decorator" />
            <param name="property.2" value="decorator" />
        </mapper>

        <mapper class="com.opensymphony.module.sitemesh.mapper.FrameSetDecoratorMapper">
        </mapper>

        <mapper class="com.opensymphony.module.sitemesh.mapper.AgentDecoratorMapper">
            <param name="match.MSIE" value="ie" />
            <param name="match.Mozilla [" value="ns" />
            <param name="match.Opera" value="opera" />
            <param name="match.Lynx" value="lynx" />
        </mapper>

        <mapper class="com.opensymphony.module.sitemesh.mapper.PrintableDecoratorMapper">
            <param name="decorator" value="printable" />
            <param name="parameter.name" value="printable" />
            <param name="parameter.value" value="true" />
        </mapper>

        <mapper class="com.opensymphony.module.sitemesh.mapper.RobotDecoratorMapper">
            <param name="decorator" value="robot" />
        </mapper>

        <mapper class="com.opensymphony.module.sitemesh.mapper.ParameterDecoratorMapper">
            <param name="decorator.parameter" value="decorator" />
            <param name="parameter.name" value="confirm" />
            <param name="parameter.value" value="true" />
        </mapper>

        <mapper class="com.opensymphony.module.sitemesh.mapper.FileDecoratorMapper">
        </mapper>

        <mapper class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper">
            <param name="config" value="${decorators-file}" />
        </mapper>

    </decorator-mappers>

</sitemesh>

3. decorators.xml 설정
<?xml version="1.0" encoding="UTF-8"?>

<decorators defaultdir="/decorators">                 <!-- WebContent 폴더 아래 decorators라는 폴더를 default directory로 한다.  -->
    <decorator name="main" page="main.jsp">      
        <pattern>/index.jsp</pattern>                     <!-- index.jsp로 url 패턴이 들어오면 main.jsp를 실행한다  -->
    </decorator>
   
    <decorator name="panel" page="panel.jsp"/>
</decorators>


4. main.jsp 에각 모듈 붙여 넣기

<?xml version="1.0" encoding="EUC-KR" ?>
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<%@ taglib prefix="decorator" uri="http://www.opensymphony.com/sitemesh/decorator" %> <!-- 태그 라이브러리 설정 -->
<%@ taglib prefix="page" uri="http://www.opensymphony.com/sitemesh/page" %>              <!-- 태그 라이브러리 설정 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR" />
<title>Insert title here</title>
</head>
<body>
<table>
   
    <tr>
        <td><page:applyDecorator name="panel" page="/include/top.jsp"/></td>   <!--  decorators 에서 panel 이라고 이름 붙여진 곳
                                                                                                                  의 경로에 있는 페이지로 이동하여 설정을 가지고 오고
                                                                                                                  page에 정의된 top.jsp로 이동하여 panel에 선언된 설정
                                                                                                                  부분을 긁어와 가져 온다. -->
    </tr>
   
    <tr>
        <td><decorator:body/></td>                                                                   <!--  index.jsp로 main.jsp에 접근 하였음 으로
                                                                                                                          index.jsp의 body내용을 가져온다.
                                                                                                                          decorator:title 하면 title의 설정을 가져 온다 -->
    </tr>
   
    <tr>
        <td><page:applyDecorator name="panel" page="/include/bottom.jsp"/></td>
    </tr>
   
</table>
</body>
</html>


5. panel.jsp 설정하기

<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<%@ taglib prefix="decorator" uri="http://www.opensymphony.com/sitemesh/decorator" %>
<%@ taglib prefix="page" uri="http://www.opensymphony.com/sitemesh/page" %> 
<decorator:body/>

'Framework > Site Mesh' 카테고리의 다른 글

SiteMesh - SiteMesh란?  (0) 2009.04.17

SiteMesh - SiteMesh란?

Published on: 2009. 4. 17. 09:38 by louis.dev
SiteMesh란?
레이 아웃을 배치할때 각각의 페이지를 모듈로 하여 Include 방식으로 추가 하는 방식

'Framework > Site Mesh' 카테고리의 다른 글

SiteMesh - 초기 설정 방법 & 설정  (0) 2009.04.17

Tiles - 설정 순서

Published on: 2009. 4. 14. 12:09 by louis.dev

설정방법
1.sturct-config.xml 에 플러그인 설정

<plug-in className="org.apache.struts.tiles.TilesPlugin">
            <set-property property="definition-config" value="/WEB-INF/config/tiles-defs.xml" />
</plug-in>

2.tiles-defs.xml 파일 생성

3.실질적 사용하는 jsp 페이지 생성

4.TilesRequestProcessor  :: 타일즈에서 한글이 깨짐으로 설정
다음 클래스를 상속 받아서 사용

public class KoreanRequestProcessor extends TilesRequestProcessor{
..........
}

'Framework > Tails' 카테고리의 다른 글

Tiles - 사용 이유  (0) 2009.04.14