首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

gwt spring调整

2012-10-10 
gwt spring整合gwt+spring整合?目的:让gwt与spring整合思路:建立一个实现了RemoteServiceServlet的servlet

gwt spring整合
gwt+spring整合

?

目的:让gwt与spring整合

思路:建立一个实现了RemoteServiceServlet的servlet,根据传递的参数调用spring?WebApplicationContext容器里注册的服务,返回结果!

?

实现:

1.建立一个实现了RemoteServiceServlet的servlet

?

public class GwtSpring extends RemoteServiceServlet{/** * spring容器上下文 */private WebApplicationContext springContext;/** * 覆盖servlet.init方法  * 获取spring WebApplicationContext容器上下文 */@Overridepublic void init(ServletConfig config) throws ServletException {super.init(config);springContext = (WebApplicationContext) config.getServletContext().getAttribute( WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE); if (springContext == null) { throw new RuntimeException("Check Your Web.Xml Setting, No Spring Context Configured"); } }/** * 覆盖RemoteServiceServlet方法 * 获取调用参数,取得容器里的服务对象进行处理,返回处理结果 */@Overridepublic String processCall(String payload) throws SerializationException {//获取HttpServletRequest对象HttpServletRequest req = getThreadLocalRequest();//获取服务对象,此处采用url比对,与servlet url-pattern配合//url样式:/gwtcrud/spring/*//*号代表容器里服务对象IDString requestURI = req.getRequestURI();String beanname = requestURI.substring(requestURI.lastIndexOf("/")+1);RemoteService service = (RemoteService) springContext.getBean(beanname);//调用服务对象,返回结果,参考:RemoteServiceServlet.processCalltry {RPCRequest rpcRequest = RPC.decodeRequest(payload, service.getClass(),this);return RPC.invokeAndEncodeResponse(service, rpcRequest.getMethod(),rpcRequest.getParameters(), rpcRequest.getSerializationPolicy());} catch (IncompatibleRemoteServiceException ex) {getServletContext().log("An IncompatibleRemoteServiceException was thrown while processing this call.",ex);return RPC.encodeResponseForFailure(null, ex);}}}

?

?

2.配置web.xml

?

<servlet><servlet-name>GwtSpring</servlet-name><servlet-class>com.gwtcrud.server.GwtSpring</servlet-class></servlet><servlet-mapping><servlet-name>GwtSpring</servlet-name><url-pattern>/gwtcrud/spring/*</url-pattern></servlet-mapping>
?

?

3.写远程接口

?

/** * 调用spring容器中id为carService的对象 * @author Administrator * */@RemoteServiceRelativePath("spring/carService")public interface CarService extends RemoteService{public Car getCar();public Car saveCar(Car car);public List<Car> getAllCars();}
?

?

热点排行