SSH框架 Ajax(运用dwr框架)综合小实例.doc
-
资源ID:2387242
资源大小:1.65MB
全文页数:37页
- 资源格式: DOC
下载积分:8金币
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
SSH框架 Ajax(运用dwr框架)综合小实例.doc
SSH框架+Ajax(运用dwr框架)综合小实例首先说下我的配置环境: 开发工具:MyEclipes6.6 数据库:Mysql 首先在MySql中建立好数据库(抱歉,我还不会用hibernate的逆向工厂去生成数据库): create database test; use test; create table userinfo ( uid int primary key, uName varchar(50), uPass varchar(50), ) /插入数据部分不写了,这个我想大家都应该会吧! select * from userinfo; /以下是我的数据库中的信息 数据库建好我们来搭建SSH框架吧! 1.首先创建web工程 2.在工程中添加SSH支持 SSH的添加顺序和他们的(SSH=Struts+Spring+Hibernate)缩写名字顺序是一致的,不知道起名字的时候是不是按照他们的引入顺序起的。注意:SSH支持引入的时候必须是这个顺序,否则里面会出现很多错误。解决起来很麻烦。尤其是spring的部分。所以此顺序大家要切记,不要弄反了!具体步骤如下: 工程上点击右键选择MyEclipes->Add Struts Capabilities.弹出Struts配置窗口之后修改包名,点击Finish即完成了Struts的配置工作了 接下来配置Spring,同样右键工程选择MyEclipes->Add Spring Capabilites:如图所示: Struts+Spring已经顺利的配置好了,不过先不要忙着配置Hibernate,在配置Hibernate之前先完成数据库的映射。首先在工程的src目录上右键选择New->Package->创建新的Package(我创建的包名是:com.ssh.entity。这样取名完全是为了规范便于管理!)包建立好后,进入Hibernate逆向工厂将数据库引入进来。 此步骤有几点需要注意: 1.Driver template这里面有很多选项,这些都是MyEclipes所支持的数据库种类。由于我用的是MySql数据库,所以此处我选择的是你所看到的下拉列表框里的选项。 2.Connection URL这里会根据你选择的数据库自动生成一部分代码,具体你要连接数据库的地址,还有数据库名称就要自己填写了。我做的是本地连接,且所用数据库名称为test,所以“/”后面写的就是以上内容了。 3.Driver name这里可以随便起名字 以上步骤完成之后,我们便会在DB Browser的标题栏中看到一个我们引入的数据库了。双击数据库,或者在数据库上点击右键选择Open Connection至此,我们已经将数据库信息顺利的引入了MyEclipes中了。接下来,回到我们的编辑界面(会去的方法:同样点击进入Hibernate逆向工厂的小图标,选择有M字样的图标),在web工程下开始添加Hibernate支持。 进入此页面时,Create SessionFactory class是被选中的,由于SSH架构中,我们的连库事务都是交给spring进行托管的,不需要我们独立去创建SessionFactory,创建Session这些活动了,所以此项不需要选择。直接点击Finish完成即可。注意:当点击Finish的时候会弹出一个窗口:这是由于spring和hibernate包重复,MyEclipes给出的一个系统提示。我们不用管它,直接点击Keep Existing。然后继续执行下一步。 至此,SSH框架支持已经全部倒入成功了。这时候看我们的web工程会发现下图的现象:接下来,我们只要添加和去除几个包就可以解决了。 鼠标右键点击工程名称,在右键菜单中选择Properties:此时会弹出下图中的窗口,点击Java Build Path,就会变成我下图所示的样子了。选择Liberties,将里面的asm-2.2.3.jar和以log4j开头版本较低的jar包删除(如果有两个log4j JAR包的话则删除版本较低的,我的MyEclipes6.6里只有一个log4j所以我只删除了asm-2.2.3.jar这一个包)。 然后点击你的工程进入WebRoot文件夹下的lib文件夹同样删除这两个jar包。(如果不按照以上步骤,你也可以进入你工程的保存路径,同样找到工程下的WebRoot文件夹下的lib目录,删除以上两个jar包。) 然后进入你的MyEclipes安装路径,我的MyEclipes是安装在F:Program Files路径下的。然后按照以下路径去寻找两个jar包。 MyEclipse6.6myeclipseeclipsepluginscom.genuitec.eclipse.springframework_6.6.0.zmyeclipse660200810data1.2libdependenciesjakarta-commons 这是我们需要的那两个jar包的最终路径,所需要的jar包的名称分别是: commons-dbcp.jar和commons-pool.jar。 找到jar包后,将他们复制到你的工程目录下,引入工程目录有两种方式: 1 直接找到你的工程目录,进入WebRoot下的lib文件夹,将复制的jar包粘贴进来即可,然后进入MyEclipes刷新你的工程。 2 从MyEclipes点击你的工程,找到WebRoot下的lib文件夹,将复制的jar包粘贴进去,然后在工程上右键点击Properties->Java Build Path按下图操作,然后刷新工程即可: 此时我们已经将SSH所需的jar全部导入了,查看一下web工程下的WebRoot路径下的lib文件夹,我的MyEclipes6.6版本是42个文件,如果是6.0版本的话,应该是60多个。 接下来回到Database Explorer路径下,点击我们导入的数据库 按照上面的配置好后,点击下一步(Next), 如果涉及到多对多关系的话Enable many-to-many detection也要勾选上。 然后点击Finish完成即可。此时我们只要将spring和Struts中的配置完成,SSH就真正的搭建成功了。 首先写好你的数据访问层和业务逻辑层。spring是通过Ioc(依赖注入)来管理程序中的依赖关系的。因此,在各层之间,我们只要声明上一层的接口即可,然后通过set方式,让spring去注入实现类。spring注入的是什么实现类我们只需要在spring中配置就可以了。在之一中我们已经将SSH加载部分弄好了,接下来我们开始写配置文件的部分。这是我的一个建好的工程中的所有包和文件 业务逻辑和数据访问层建好后,我们开始在spring中配置他们的注入关系。 <!- dao config -> <bean id="userDAO" class="com.ssh.dao.impl.userDAOImpl"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <!- biz config -> <bean id="userBIZ" class="com.ssh.biz.impl.userBIZImpl"> <property name="dao" ref="userDAO"></property> </bean> <!- action config -> <bean name="/user" class="com.ssh.struts.action.UserAction"> <property name="biz" ref="userBIZ"></property> </bean> 注意最后一个是spring与Struts的整合。这一步除了要在spring中配置外还需要在Struts中配置下面这些语句 type="org.springframework.web.struts.DelegatingActionProxy" 这里是将type的值改成引号中的写法。由于涉及到与dwr的结合,所以这里可以省去写: <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"> <set-property property="contextConfigLocation" value="classpath:applicationContext.xml"/> </plug-in> 这部分内容,因为dwr已经在它的jar包中为我们装配好了这一切。 如果还要执行增删改事务的话,除了以上配置以外,我们还要在spring的配置文件里写上声明式事务。这样一个可以完成基本的增删改查功能的SSH框架才算基本搭建完毕。 spring的1.x声明式事务方式,依赖性很强。我这里使用的是spring2.0的声明式事务。2.0真正的实现了AOP编程思想,与面向对象编程思想有机的结合起来。可以说spring的AOP思想是面向对象思想的一个补充。 首先在在spring的配置文件中要做如下配置 <beans xmlns="http:/www.springframework.org/schema/beans" xmlns:xsi="http:/www.w3.org/2001/XMLSchema-instance" 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.5.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 "> 这是spring配置文件的开头部分。 <!- spring2.0声明事务 -> <!-声明事务管理器,id是管理器的名字。class指定管理器引用的路径-> <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <!-将sessionFactory属性注入到事务管理器中-> <property name="sessionFactory" ref="sessionFactory"/> </bean> <!-定义事务通知,id是通知的名字,transaction-manager的值为指定的事务管理器的id-> <tx:advice id="" transaction-manager="txManager"> <!-给通知的属性声明事务规则-> <tx:attributes> <!-add*表示所有以add开头的方法都要按照以下规则运行,*表示通配符,read-only表示只读-> <tx:method name="add*" propagation="REQUIRED"/> <tx:method name="del*" propagation="REQUIRED"/> <tx:method name="update*" propagation="REQUIRED"/> <tx:method name="*" propagation="SUPPORTS" read-only="true"/> </tx:attributes> </tx:advice> <!-定义AOP指向的路径-> <aop:config> <!-id为此切入点的名称,expression指遵循此规则的文件路径-> <!-execution(* com.ssh.biz.*.*(.)表示所有工程目录下com.ssh.biz目录下的所有类中的所有方法-> <aop:pointcut id="bizMethods" expression="execution(* com.ssh.biz.*.*(.)"/> <!-将事务与切面组合-> <aop:advisor pointcut-ref="bizMethods" advice-ref="txAdvice"/> </aop:config> 至此大名鼎鼎的SSH终于算是全部配置完了!接下来我们将Ajax的dwr框架整合进这个SSH中。 首先将dwr.jar(dwr的jar包)放入到工程的WebRoot/lib文件夹下,然后在WebRoot目录下的web.xml配置文件中配置dwr。 <!- Ajax工程dwr的配置信息 -> <servlet> <servlet-name>dwr-invoker</servlet-name> <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class> <!- 是否允许调试,如果要在浏览器中调试则必须设置为true -> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> <!- 是否进行日制管理,如果是在要设置此参数,通常可以省略 -> <init-param> <param-name>logLevel</param-name> <param-value>WARN</param-value> </init-param> <!- 如果允许跨域请求,则必须将此值设置为false,默认值为true -> <init-param> <param-name>crossDomainSessionSecurity</param-name> <param-value>false</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping> 接下来在web.xml的同级目录下创建一个web.xml文件 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE dwr PUBLIC "-/GetAhead Limited/DTD Direct Web Remoting 2.0/EN" "http:/www.getahead.ltd.uk/dwr/dwr20.dtd"> <dwr> <allow> <!- creator为spring表示根据spring创建一个方法,JavaScript属性表示页面引用时的脚本对象名 -> <create creator="spring" javascript="JGetAllUser"> <!-这里的value值与spring中id="userBIZ"是同一个值-> <param name="beanName" value="userBIZ"/> </create> <!-方法具有实体类返回值,那么就要为其创建一个bean,这个类就要根据match所指向的实体类进行创建-> <convert match="com.ssh.entity.Userinfo" converter="bean"></convert> </allow> </dwr> 将这些话复制进去就可以了。有了以上的内置我们就可以启动服务器运行程序了。从IE窗口的地址栏输入http:/localhost:8080/工程名/dwr/index.html我们就可以看到以下内容了点击JGetAllUser进入到下面这样的页面按照上图提示,复制路径粘贴在jsp页面里,jsp如下图所示:看到getAllUserInfo方法中的JGetAllUser是不是很熟悉,没错这就是我们在dwr.xml里配置的JavaScript属性表示页面引用时的脚本对象名。刚才的工程/dwr/index.html页面中的JGetAllUser也是它。至此SSH+Ajax我们就真正的整合在一起了。这是最简单的配置。