DWRサーブレットAPIへのアクセス


DWRは、サーブレットAPIにアクセスする2つの方法を提供します.
  • はWebContextクラスを使用し、WebContextはWebContextFactoryによって生成され、
  • を得るための静的方法get()を提供する.
  • サーブレットAPIに直接アクセスする、すなわち方法でHttpSession
  • として参照される
    サーブレットAPIへのアクセス(WebContextを使用)  Web.xmlファイル構成
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 
    	xmlns="http://java.sun.com/xml/ns/javaee" 
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    	
      <servlet>
      	<servlet-name>dwr-invoker</servlet-name>
      	<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
      	<init-param>
      		<param-name>debug</param-name>
      		<param-value>true</param-value>
      	</init-param>
      </servlet>
      
      <servlet-mapping>
      	<servlet-name>dwr-invoker</servlet-name>
    	<url-pattern>/dwr/*</url-pattern>
      </servlet-mapping>
    	
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>
    
     Java処理クラス
    package com.lbx.dwr.servlet;
    
    import org.directwebremoting.WebContextFactory;
    
    public class AddSession {
    	
    	//      name       HttpSession  
    	public void addSession(String name){
    		//  WebContextFactory  Servlet API
    		WebContextFactory.get().getSession(true).setAttribute("username", name);
    		
    	}
    	
    }
    
     dwr.xmlファイルの構成
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://getahead.org/dwr/dwr30.dtd">
    
    <dwr>
     
      <allow>
    
        <create creator="new" javascript="Demo">
          <param name="class" value="com.lbx.dwr.servlet.AddSession"/>
        </create>
        
      </allow>
      
    </dwr>
    
     クライアントjspコード
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    	<head>
    		<base href="<%=basePath%>">
    
    		<title>  Servlet API(  WebContext)</title>
    
    		<meta http-equiv="pragma" content="no-cache">
    		<meta http-equiv="cache-control" content="no-cache">
    		<meta http-equiv="expires" content="0">
    		<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    		<meta http-equiv="description" content="This is my page">
    		<script type='text/javascript' src='dwr/interface/Demo.js'></script>
    		<script type='text/javascript' src='dwr/engine.js'></script>
    		<script type='text/javascript' src='dwr/util.js'></script>
    
    	</head>
    
    	<body>
    		<h3>
    			  Servlet API
    		</h3>
    		       
    		<input id="name" name="name" type="text" />
    		<br />
    		<input type="button" value="  session  "
    			onclick="Demo.addSession(dwr.util.getValue('name'));" />
    		<div id="sessionMsg"></div>	
    	</body>
    </html>
    
     jspコードをテストして、値をSessionに置いて
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    	<head>
    		<base href="<%=basePath%>">
    
    		<title>  Servlet API</title>
    
    		<meta http-equiv="pragma" content="no-cache">
    		<meta http-equiv="cache-control" content="no-cache">
    		<meta http-equiv="expires" content="0">
    		<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    		<meta http-equiv="description" content="This is my page">
    	</head>
    
    	<body>
    		${sessionScope.username} <br>
    		<%=request.getSession().getAttribute("username") %>
    	</body>
    </html>
    
    行ったかどうかを見ます.