突然接到任务,不知道哪里来的老项目SSH(Struts2+Spring+Hibernate)要跑起来,项目的依赖以及配置都是残缺的。看了下项目的创建时间,大概是08年的,瞬间泪目,之前是用的JBoss服务器部署的,开发工具使用的是Red Hat Developer Studio
后来花了大概两天时间把项目跑起来了,开发环境改为IDEA,服务器选择Tomcat部署,将其中的一些问题做个总结。
因为项目比较老,没有使用maven管理依赖,直接使用炸包的方式,所以我也就没有用maven,建了个lib文件夹,把需要的jar都扔进来,然后鼠标右键,Add as Library,添加到依赖库如图:
然后点击Project Structure图标或者使用快捷键Ctrl+Alt+Shift+S打开项目配置,在Artfacts中点击fix将jar添加到项目中,如图:
最后本项目总共依赖的jar如下:
因为数据访问层需要Session工厂和数据源,所以配置如下:
com/xxx/xxxx/xxx.hbm.xml
com/xxx/xxxx/xxx.hbm.xml
....
hibernate.dialect=org.hibernate.dialect.MySQLDialect
单元测试记得要导入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 );
}
}
1.选中项目右键点击Open Module Settings,如下图:
2.检查Modules 里面是否有Web,如果没有web,点击+号添加Web,我这里是有的
3.点击Artifacts添加Web Application:Exploded和Web Application:Archive,自己命名,然后点击Apply->OK
4.最后点击Build->Buid Artifacts即可创建
5.在你的导出目录里可以看到,我的是在项目目录的\out\artifacts目录下,如图:
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
点击BLOB类型的字段然后点击备注,在下方即可修改或插入BLOB类型的值,如图:
访问我的达人课