원문 : http://lifeasastruct.blogspot.com/2005/10/ajax-on-appfuse.html

1. DWR jar파일을 /lib/dwr-1.0 에 복사한다.
2. lib.properties파일을 /lib/ 에 복사한다.

#
# DWR - https://dwr.dev.java.net/ (Direct Web Remoting)
#
dwr.version=1.0
dwr.dir=${lib.dir}/dwr-${dwr.version}
dwr.jar=${dwr.dir}/dwr.jar

3. properties.xml파일을 / 에 복사한다.

<!-- Web -->
<path id="web.compile.classpath">
  ...
  <pathelement location="${dwr.jar}"/>
</path>

4. build.xml파일을 / 에 복사한다

<target name="package-web" depends="compile-web,jsp-2" description="Package WAR">
  ...
  <war destfile="${webapp.dist}/${webapp.war}"
        webxml="${webapp.target}/WEB-INF/web.xml" compress="true">
    ...
    <lib file="${dwr.jar}"/>
  </war>
</target>

5. /metadata/web/servlets.xml에 DWR서블릿을 추가한다.

<!-- dwr servlet -->
<servlet>
  <servlet-name>dwr-invoker</servlet-name>
  <display-name>DWR Servlet</display-name>                 
  <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
  <init-param>
    <param-name>debug</param-name>
    <param-value>true</param-value>
  </init-param>
</servlet>

6. /metadata/web/servlet-mappings.xml에 DWR서블릿 맵핑을 추가한다.

<!-- dwr mapping -->
<servlet-mapping>
  <servlet-name>dwr-invoker</servlet-name>
  <url-pattern>/dwr/*</url-pattern>
</servlet-mapping>

7. /web/WEB-INF/classes/decorators.xml내 sitemesh로부터 DWR을 제외한다.

<excludes>
  <pattern>/dwr/*</pattern>
</excludes>

8. DWR설정파일인 dwr.xml를 /WEB-INF/ 에 추가한다.

<dwr>
  <allow>
    <convert converter="bean" match="com.octasoft.fp.*"/>
    <create creator="spring" javascript="userManager">
      <param name="beanName" value="userManager"/>
      <include method="getUser"/>
      <include method="getUsers"/>
    </create>
  </allow>
</dwr>

Here we use DWR provided Spring creator, and utilizes userManager for remoting. Also, we use default-deny policy for the service.

To browse and test DWR-enabled Spring beans: http://server:port/fpweb/dwr/index.html.

<div class="note">Note It might be required to delete the existing web.xml in \build\fpweb\WEB-INF\ in order to successfully add in DWR servlet into web.xml. </div>

<div class="note">Use case Verifying user by username before authentication on loginForm.jsp; on verification, user’s nickname is shown: </div>

<script src="/appfuse/dwr/engine.js" type="text/javascript"></script>    
<script src="/appfuse/dwr/util.js" type="text/javascript"></script>
<script src="/appfuse/dwr/interface/userManager.js" type="text/javascript"></script>
<script>
DWREngine.setErrorHandler(doNothing);
var nickname = "";
function doNothing() {
  return false;
}
function getNickname() {
  if (nickname == "") {  
      userManager.getUser(popUser,document.loginForm.j_username.value);
    document.loginForm.j_password.focus();
    return false;
  else {
    return validateFormdocument.loginForm, false, true, true, false, 1
  }    
}

var popUser = function(user) {
  if (user == undefined) {
    return false;
  else {    
    DWRUtil.setValue("nick""Hello, " + user.nickName);
    nickname = user.nickName;
  }    

</script>
<form method="post" name="loginForm" id="loginForm"
       action="<c:url value="/authorize"/>" onsubmit="return getNickname();">
  <div id="nick"></div>
  <input name="j_username" type="text" id="j_username"/>
  <input name="j_password" type="password" id="j_password"/>
</form>

Add new attachment

Only authorized users are allowed to upload new attachments.
« This page (revision-4) was last changed on 06-Apr-2006 09:45 by 이동국