记一次SSH项目的维护经历

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

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

一、依赖的jar

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

记一次SSH项目的维护经历_第1张图片

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

记一次SSH项目的维护经历_第2张图片

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

 

记一次SSH项目的维护经历_第3张图片

二、配置SessionFactory和DataSource

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


    
    
    
    



    
    
        
            com/xxx/xxxx/xxx.hbm.xml
            com/xxx/xxxx/xxx.hbm.xml
            ....
        
    
    
        
            hibernate.dialect=org.hibernate.dialect.MySQLDialect
        
    





    
        
    


    

三、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,如下图:

记一次SSH项目的维护经历_第4张图片

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

记一次SSH项目的维护经历_第5张图片

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

记一次SSH项目的维护经历_第6张图片

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

记一次SSH项目的维护经历_第7张图片

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

记一次SSH项目的维护经历_第8张图片

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类型的值,如图:

记一次SSH项目的维护经历_第9张图片

访问我的达人课

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

你可能感兴趣的:(SSH)