ssh项目使用dwr框架
来源:互联网 发布:翻墙的原理 知乎 编辑:程序博客网 时间:2024/05/17 07:55
DWR是Direct Web Remoting 的缩写。
是一个WEB远程调用框架.。页面可通过java业务方法来实现ajax的一个开源框架。
最初接触dwr,时,感觉最大的方便之处就是,它可以调用java的业务方法和映射java实体类。
好吧,现在来看看怎么配置dwr框架。dwr也是可以支持注解配置的。通过配置文件和注解两种方式来简单介绍一下dwr在项目的使用。
我写了俩个demo ,配置文件和注解两种方式各一个 demo,点击下载(eclipse 开发的,使用myeclipse 导入 稍作修改)
首先,加入dwr.jar包。配置dwr.xml:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd"> <dwr> <allow> <convert match="com.zuxiang.entity.*" converter="bean"> </convert> <!-- 这个节点是做转换,指定那些类可转换成在页面可通过对象点属性方式使用的js对象 --> <create creator="spring" javascript="customerService"> <!-- creator 由spring创建, 在页面使用的js,为 customerService.js --> <param name="beanName" value="customerService" /> <!-- 由spring管理的业务类对象 customerService --> <!--指定可供远程调用的以为方法--> <include method="findAll" /> </create> </allow></dwr>
当然,使用注解是不需要dwr.xml文件的。xml文件里 convert 指定那些类可转换,注解是通过@DataTransferObject,标识那些类可转换,@DataTransferObject是标注类的,就是说只要这个类标注了@DataTransferObject,那么这个这个类就可供js使用,
但是有时我只想用到某两个属性怎么办?那就在属性上标注@RemoteProperty,如果标注了@RemoteProperty,那没js,可使用的就只有标了@RemoteProperty的字段了
package com.zuxiang.entity;import java.util.List;import javax.persistence.CascadeType;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.FetchType;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.OneToMany;import javax.persistence.Table;import org.directwebremoting.annotations.DataTransferObject;/** * CusCustomer entity. @author MyEclipse Persistence Tools */@Entity@Table(name = "customer" ,schema = "cc")@DataTransferObject //这是个实体类,标注了@DataTransferObject ,就可供js,使用public class Customer implements java.io.Serializable {// Fields/** * */private static final long serialVersionUID = 1L;@Id@Column(name = "cus_id")@GeneratedValue(strategy = GenerationType.AUTO)private Long cusId; @Column(name = "cus_name" ,length = 20 ) // @RemoteProperty 如果只要该属性s private String cusName;@Column(name = "cus_addr",length = 250)private String cusAddr;@OneToMany(cascade = CascadeType.ALL, mappedBy = "customer" ,fetch = FetchType.EAGER)private List<Product> products;// Constructors/** default constructor */public Customer() {}/** full constructor */public Customer(String cusName, String cusAddr) {this.cusName = cusName;this.cusAddr = cusAddr;}// Property accessorspublic Long getCusId() {return this.cusId;}public void setCusId(Long cusId) {this.cusId = cusId;}public String getCusName() {return this.cusName;}public void setCusName(String cusName) {this.cusName = cusName;}public String getCusAddr() {return this.cusAddr;}public void setCusAddr(String cusAddr) {this.cusAddr = cusAddr;}public List<Product> getProducts() {return products;}public void setProducts(List<Product> products) {this.products = products;}}那么业务方法又怎么标注呢。。使用@RemoteProxy标注可远程调用的业务类,@RemoteMethod标注远程调用的方法。
如果使用Spring中逻辑层则需要进行如下的设置:
@RemoteProxy(creator = SpringCreator.class, creatorParams = @Param(name = "beanName" ,value ="customerService"), name = "customerService")package com.zuxiang.biz;import java.util.List;import javax.annotation.Resource;import org.directwebremoting.annotations.Param;import org.directwebremoting.annotations.RemoteMethod;import org.directwebremoting.annotations.RemoteProxy;import org.directwebremoting.spring.SpringCreator;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import com.zuxiang.dao.CustomerDao;import com.zuxiang.entity.Customer;@Service@Transactional@RemoteProxy(creator = SpringCreator.class, creatorParams = @Param(name = "beanName" ,value ="customerService"), name = "customerService")public class CustomerServiceImpl implements CustomerService{@Resourceprivate CustomerDao customerDao;@RemoteMethodpublic List<Customer> findAll() {// TODO Auto-generated method stubreturn customerDao.findAll();}}下面配置,spring,配置文件,使用 xml.文件的spring配置,就要注意dwr.xml里的 红色部分要对应 spring 里 红色部分;
<param name="beanName" value="customerService" />
applicationContext.xml:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"><!-- session工厂 --><bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name="configLocation"value="classpath:hibernate.cfg.xml"></property></bean><!-- 事务管理 --><bean id="myHibTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"></property> </bean><!-- dao类 --><bean id="customerDao" class="com.zuxiang.dao.CustomerDaoImpl"><property name="sessionFactory"><ref bean="sessionFactory" /></property></bean><!-- 业务类 --><bean id="customerService" class="com.zuxiang.biz.CustomerServiceImpl"> <property name="customerDao" ref="customerDao"/></bean><!-- struts1 aciton --><bean name="/cus" class="com.zuxiang.struts.action.CustomerAction"> <property name="customerService" ref="customerService"></property></bean><!-- 事务的切面 --> <tx:advice id="txAdvice" transaction-manager="myHibTransactionManager"> <tx:attributes><tx:method name="add*" propagation="REQUIRED" /><tx:method name="del*" propagation="REQUIRED" /><tx:method name="update*" propagation="REQUIRED" /><tx:method name="do*" propagation="REQUIRED" /><tx:method name="*" propagation="SUPPORTS" read-only="true" /> </tx:attributes></tx:advice><!--注入事务 --><aop:config> <aop:pointcut id="bizMethods" expression="execution(* com.zuxiang.biz.*.*(..))" /> <aop:advisor advice-ref="txAdvice" pointcut-ref="bizMethods" /></aop:config></beans>
使用注解的spring,applicationContext.xml:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.directwebremoting.org/schema/spring-dwr http://www.directwebremoting.org/schema/spring-dwr-3.0.xsd"> <context:annotation-config /> <!-- 使用注解配置 --> <dwr:configuration /> <dwr:annotation-config /> <dwr:url-mapping /> <!-- 自动扫描指定包下的类 --> <context:component-scan base-package="com.zuxiang"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> </context:component-scan> <!-- jpa实体管理类 --> <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean"> <property name="persistenceUnitName" value="zuxiang"/> </bean> <!-- 事务管理 --> <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory"/> </bean> <!-- dwr 扫描转换类和远程调用类 --> <dwr:annotation-scan scanDataTransferObject="true" scanRemoteProxy="true" base-package="com.zuxiang"/> <!-- debug 模式 --> <dwr:controller id="dwrController" debug="true"></dwr:controller> <!-- 使用注解事务 --> <tx:annotation-driven transaction-manager="transactionManager"/> </beans>
下面是 web.xml 配置文件,配置文件方式的的web.xml:
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>dwr2</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <listener> <description>register spring listener</description> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <filter> <filter-name>MyFilter</filter-name> <filter-class>com.zuxiang.filter.MyFilter</filter-class> </filter> <filter-mapping> <filter-name>MyFilter</filter-name> <url-pattern>*.do</url-pattern> </filter-mapping> <servlet> <!-- struts1的aciton --> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>3</param-value> </init-param> <init-param> <param-name>detail</param-name> <param-value>3</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <servlet> <!-- struts1的aciton --> <!-- dwr 配置 --> <servlet-name>dwr</servlet-name> <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>crossDomainSessionSecurity</param-name> <param-value>false</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dwr</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping> <!-- dwr 配置 --> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list></web-app>
注解方式的web.xml:<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>dwr3</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <listener> <description>register spring listener</description> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- struts2 配置 --> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- struts2 配置 --> <!-- dwr 配置 --> <servlet> <servlet-name>dwr</servlet-name> <servlet-class>org.directwebremoting.spring.DwrSpringServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> <!-- 解决CSRF Security Error 加入下面 加入跨域调用配置信息 --> <init-param> <param-name>crossDomainSessionSecurity</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>allowScriptTagRemoting</param-name> <param-value>true</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dwr</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping> <!-- dwr 配置 --> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list></web-app>
这里只是说一下相关配置,到我资源里下载demo,运行一下。更容易看懂
- ssh项目使用dwr框架
- ssh项目使用dwr框架
- ssh项目使用dwr框架
- ssh项目使用dwr框架
- SSH项目中使用DWR框架实现即时精确消息推送
- SSH+DWR 框架 整合
- Dwr结合SSH使用
- SSH+dwr框架搭建.doc
- SSH框架与DWR整合
- DWR框架的使用
- 如何使用DWR框架
- dwr框架使用解析
- dwr框架使用初步
- 自己整理的SSH+DWR框架整合
- dwr在SSH框架中的配置
- dwr与ssh框架整合教程
- dwr 在ssh框架中的应用
- dwr与ssh框架整合教程
- 2012-03-21
- HDU 2710 ( Max Factor )
- 设计模式之简单工厂模式
- 无需任何分区软件,win7自己搞定分区
- java基础总结
- ssh项目使用dwr框架
- poj 2524 Ubiquitous Religions(并查集)
- CSS 学习笔记
- JAVA中的集合
- iPhone开发多线程使用与注意事项
- AJAX介绍
- Android 直接顯示 Emoji 圖案
- kui学习demo
- 致未来的自己——我的第一篇博文