记一次SSH项目的维护经历

本文记录了作者如何在两天内让一个08年的SSH(Struts2+Spring+Hibernate)项目重新运行,包括解决依赖问题,配置SessionFactory和DataSource,进行Struts2单元测试,以及打包部署的全过程。

突然接到任务,不知道哪里来的老项目SSH(Struts2+Spring+Hibernate)要跑起来,项目的依赖以及配置都是残缺的。看了下项目的创建时间,大概是08年的,瞬间泪目,之前是用的JBoss服务器部署的,开发工具使用的是Red Hat Developer Studio

后来花了大概两天时间把项目跑起来了,开发环境改为IDEA,服务器选择Tomcat部署,将其中的一些问题做个总结。

一、依赖的jar

因为项目比较老,没有使用maven管理依赖,直接使用炸包的方式,所以我也就没有用maven,建了个lib文件夹,把需要的jar都扔进来,然后鼠标右键,Add as Library,添加到依赖库如图:

enter image description here

然后点击Project Structure图标或者使用快捷键Ctrl+Alt+Shift+S打开项目配置,在Artfacts中点击fix将jar添加到项目中,如图:

enter image description here

最后本项目总共依赖的jar如下:

 

二、配置SessionFactory和DataSource

因为数据访问层需要Session工厂和数据源,所以配置如下:

<bean id="dataSource"
      class="org.apache.commons.dbcp.BasicDataSource"
      destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url"
              value="jdbc:mysql://localhost:3306/xxx" />
    <property name="username" value="root" />
    <property name="password" value="root" />
</bean>

<bean id="sessionFactory"
      class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="mappingResources">
        <list>
            <value>com/xxx/xxxx/xxx.hbm.xml</value><!--  映射文件路径    -->
            <value>com/xxx/xxxx/xxx.hbm.xml</value><!--  映射文件路径    -->
            ....
        </list>
    </property>
    <property name="hibernateProperties">
        <value>
            hibernate.dialect=org.hibernate.dialect.MySQLDialect
        </value>
    </property>

</bean>

<!--  数据访问层引用session工厂和数据源    -->
<bean id="xxxDAO" class="com.xxx.xxx.dao.impl.xxxDAO">
    <property name="sessionFactory">
        <ref bean="sessionFactory" />
    </property>
</bean>
<bean id="xxDAO" class="com.xx.xx.dao.impl.xxDAO">
    <property name="dataSource" ref="dataSource" />
</bean>

三、Struts2单元测试

单元测试记得要导入struts2-junit-plugin-2.3.1.2.jar和junit-4.10.jar两个炸包,然后创建一个测试类继承TestCase,如下:

public class TestAction extends TestCase {

private UserService userService;
private XmlWebApplicationContext ctx;

@Test
public void test() throws Exception {
    //获取ApplicationContext对象
    ApplicationContext applicationContext = new FileSystemXmlApplicationContext( "D:\\xxx\\xxx\\web\\WEB-INF/applicationContext.xml" );
    //通过ApplicationContext获取UserService对象
    userService = (UserService) applicationContext.getBean( "userService" );
    userService.deleteById( 1l );

}
}

四、打war包

1.选中项目右键点击Open Module Settings,如下图:

enter image description here

2.检查Modules 里面是否有Web,如果没有web,点击+号添加Web,我这里是有的

enter image description here

3.点击Artifacts添加Web Application:Exploded和Web Application:Archive,自己命名,然后点击Apply->OK

enter image description here

4.最后点击Build->Buid Artifacts即可创建

enter image description here

5.在你的导出目录里可以看到,我的是在项目目录的\out\artifacts目录下,如图:

enter image description here

6.将ROOT_war重命名为ROOT或者你的项目名放在tomcat的webapp目录下,启动tomcat即可访问

总结起来好像也没什么,但是经历的过程只有自己知道。

注意:后来发现commons-lang3-3.4.jar版本低了,报一个No such Method的一个异常,替换成commons-lang3-3.7.jar,移除commons-lang3-3.4.jar即可。异常信息如下:

 java.lang.NoSuchMethodError: org.apache.commons.lang3.reflect.MethodUtils.getAnnotation(Ljava/lang/reflect/Method;Ljava/lang/Class;ZZ)Ljava/lang/annotation/Annotation;

登录成功之后又报下面的错,缺少antlr-2.7.6.jar,添加即可 

Caused by: java.lang.NoClassDefFoundError: antlr/ANTLRException

 

拓展:Navicate插入或修改BLOB类型数据

点击BLOB类型的字段然后点击备注,在下方即可修改或插入BLOB类型的值,如图:

enter image description here

访问我的达人课

关注我的微信公众号获取更多资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坏菠萝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值