SSH框架的搭建——自动搭建

    技术2025-04-03  5

    1 打开MyEcclipse,建立一个web Project。

    2 在工程名下点右键MyEclipse-->Add Sturts;添加完成后在WEB-INF文件夹下会多出一个struts-config.xml文件。知道操作Struts的人一定不会对它陌生。

    3. 继续添加Spring, 同样是在工程下右键MyEclipse——>Add Spring... 。配这个的时候有些麻烦,User Libraries要勾上,下面的框框里面的最前面四个要勾上,还有一个J2EE的,Web的,和最后面Hibernate的3个要勾上。大家要看清楚了啊,一共要勾上9个勾。然后选择Copy ... 的那个单选按钮。点Next,把applicationContext.xml放在工程的web-inf文件夹下面。然后Finish。Spring也就添加完成了。

    4 添加Hibernate,这个最麻烦不过了。在添加Hibernate之前,首先要在MyEclipse里面配置数据库。点击MyEclipse右上角的MyEclipse DataBase ... 新建一个数据库连接,选好数据库种类(我用的是MySQL),配好地址和数据库名字,添上登陆名和密码,加上Jar包,才能算是配好。这是属于 Hibernate里面应该讲的东西,这里就不多说了。同样MyEclipse --> Hibernate... 该勾的全都勾上,Next, 这里注意要选择Spring configuration file。Next,选择Exsting Spring configuration, 在SessionFactory Id里写上 sf (这是我的习惯,你可以改成别的,只要到时候出现的时候你认得就行).Next,在BeanId里填Bean(同样是我的习惯),在下面选择你配好的数据库。Next,去掉Create SessionFactory勾,就不用写什么东西了,Finish。

    5 注意了!!!, 添加Spring一定要在添加Hibernate之前,Struts可以在任何顺序下添加。

    MyEclipse的工作做完后,我们自己也要做一些工作。他毕竟不是全能。

    (1)我们要手动添加commons-collections.jar commons-pool.jar,还要手动删除asm-2.2.3.jar包。

    (2)在web.xml文件里面添加

    <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>

    (3)在struts-config.xml里面添加

    <plug-in className=”org.springframework.web.struts.ContextLoaderPlugIn”>

    <set-property property=”contextConfigLocation” value=”/WEB-INF/applicationContext.xml” />

    </plug-in>

    6 现在为止,只是基本的包和配置文件弄好了而已。其实也可以说是完成了大部分,SSH三个框架的所有功能都可以在这个工程下面使用了。

     

    7 !!!写代码时候要特别注意的地方:

    (1)在Struts的配置文件struts-config.xml里,每添加一个Action都要把type修改为org.springframework.web.struts.DelegatingActionProxy

    (2)每一个Action都要在Spring的配置文件applicationContext.xml对应有一个Bean。

    Bean的名字不能用Id,要用name属性代替而且值必须是Action的路径,一定要加上斜杠。例如name=”/myAction”.

    这两点要多看几变,刚开始熟悉SSH框架的时候经常会忘记这一步(我就是这样)。

    (3)在涉及关系表的查询的时候(都用到SSH框架了,怎么可能没有多表查询)还要一些优化。

    在通过某个表查找另外一个表的时候,Hibernate不会查找出来。我们可以通过修改Hibernate某个表的延迟加载去 掉,Lazy=”false”;这样Hibernate就可以查到了。但是如果有很多级关联的表,它也会一并查出来,不管你有没有用到。这样的性能会很低 下,这是最简单的方法,也是老师最抵制的一种方法。Spring有一个类可以使Hibernate的多表查询变得更优化。当你需要查到某个表时它就帮你查 出来,否则它就不查(难道这就是传说中的人工智能!!!)。具体做法:

    1)在web.xml里面加上

    <filter>

    <filter-name>hibernateFilter</filter-name>

    <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>

    </filter>

    <filter-mapping>

    <filter-name>hibernateFilter</filter-name>

    <url-pattern>*.do</url-pattern>

    </filter-mapping>

    2)不需要开始在Struts配置文件struts-config.xml里的那段了,删了它

    xx<plug-in className=”org.springframework.web.struts.ContextLoaderPlugIn”>

    xx <set-property property=”contextConfigLocation” value=”/WEB-INF/bean.xml” />

    xx</plug-in>

    3)在Spring的配置文件applicationContext.xml里面添加事物注

    开头的地方添加

    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.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 ”>

    再在后面添加

    <bean id=”txManager” class=”org.springframework.orm.hibernate3.HibernateTransactionManager”>

    <property name=”sessionFactory” ref=”sessionFactory”></property>

    </bean>

    <tx:annotation-driven transaction-manager=”txManager”/>

    这样就可以查找了,但添加的时候会报错。

    要在所有的增加、删除、修改的方法里面加上@Transactional(readOnly=false)

    如果有父类,那么就在父类BaseImpl的增加、删除、修改的方法里面加上@Transactional(readOnly=false)

     

    也可以手动搭建,可以把必须的Jar放在WebRoot/WEB-INF/lib中,自己建立各种配置文件

    最新回复(0)