使用Spring管理GWT Servlet

为了能在GWT的Servlet中通过Spring注入Manager方法,最初采用的是gwt-sl这个项目来完成.最近发现一个更容易的方式来达到同样的效果,即是采用Spring的SimpleServletHandlerAdapter.
那么咱们通过对GWT的Sample code的小小改造来演示使用Spring管理GWT Servlet.

1.首先创建一个Sample project.删除web.xml中的servlet相关代码,添加如下内容

<!-- Spring 初始化 -->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/applicationContext.xml
    </param-value>
</context-param>

<listener>
    <listener-class>
        org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>

<!-- Servlet 拦截后缀为rpc的请求 -->
<servlet>
    <servlet-name>GXT RPC Dispatcher Servlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/spring/rpc-context.xml
        </param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>GXT RPC Dispatcher Servlet</servlet-name>
    <url-pattern>*.rpc</url-pattern>
</servlet-mapping>

2.增加rpc-context.xml,内容如下

<!-- 声明式默认使用servlet适配器 -->
<bean id="servletHandlerAdapter"
    class="org.springframework.web.servlet.handler.SimpleServletHandlerAdapter" />

<!-- 请求地址 = /module name/RemoteServiceRelativePath -->
<bean name="/my_sample/greet.rpc" class="my.sample.server.GreetingServiceImpl" />

3.修改RPC的实现类

public class GreetingServiceImpl extends RemoteServiceServlet implements
    GreetingService, ServletContextAware {
    //必须手工添加
    private ServletContext servletContext;

    @Override
    public void setServletContext(ServletContext servletContext) {
        this.servletContext = servletContext;
    }

    @Override
    public ServletContext getServletContext() {
        return servletContext;
    }

        ...
}

这样小小改造后,你可以发现servlet已经交给Spring管理了,这样一来你想注入什么都可以了~

你可能感兴趣的:(servlet,gwt,srping)