项目需要,临时又找出一个SSM的项目准备完善一下,闲话少说,还是把框架先搭起来再说。
创建工程
1,创建父工程
首先还是按照之前的方式进行了创建maven的父工程,这部分的依赖太长,我之后也会传到GitHub上。
需要注意的事,和之前的聚合工程不同的是,在父工程中pom.xml,主要是依赖管理,不是实际的依赖。
2,创建common工程
我们这个SSM项目主要是一个模仿电商平台的项目,所以不应该创建聚合工程,第二步不创建moudle,仍然创建maven project。
在导入依赖的时候如果报错了,例如我的错误
Missing artifact org.apache.commons:commons-io:jar:2.5
需要去到你的本地仓库中,将对应的仓库的版本号中的*.lastUpdated”文件删除再重新加载一遍即可。由于我删除之后之前的图就不结了,解决办法的连接在如下
http://jingyan.baidu.com/article/d621e8da0a5b192864913f79.html
3,创建Manager聚合工程
manager是一个服务层功能,没有表现层。
既然manager是一个聚合工程,创建的时候打包方式我们还是选择pom。
3.1,创建pojo子工程
3.2,创建dao子工程
导入一些mybatis的依赖,并且依赖pojo子工程。
3.3,创建interface子工程
3.4,创建service子工程
创建一个service工程来实现我们这个manager父工程的聚合。
3.4.1,打包结构
在创建service子工程的时候,由于我们manager父工程是一个聚合工程,所以service需要打成一个war包。
3.4.2,创建web.xml
既然service工程是一个war包,所以web工程必不可少的就是web.xml文件,我们把WEB-INF文件夹和web.xml文件都进行创建。
4,创建web工程
虽然这个web工程的名字是liussm_manager_web,但是这个工程是一个独立的工程,与我们之前创建的聚合工程没有关系。
由于是web工程且负责展示,我们需要导入一下前端的依赖以及一些js库。详细见代码。
然后调整了一些版本之后还会出现这个错误,真是百思不得其解。
An error occurred while filtering resources
解决办法:右键项目–》maven–》update project
※关于以上的创建maven的工程详细内容,在SSH入门项目中也已经介绍了,如果有问题可以去参考一下。
运行工程&日常改错
1,使用tomcat插件运行web工程
这部分的内容该算是新内容我们简单记录一下。
1.1,配置文件
首先在parent的工程的pom中,我们建立了一个build的管理,和依赖的管理一样,都是负责管理一些版本号什么之类的。
<pluginManagement>
<plugins>
<!-- 配置Tomcat插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</pluginManagement>
然后在我们的web工程下,配置这个真正的tomcat插件
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<path>/</path>
<port>8081</port>
</configuration>
</plugin>
</plugins>
</build>
- path:访问路径的工程名,如果不设置默认是项目名,设置成“/”的话电脑不用添加项目名,直接访问端口就是我们的index.jsp。因为我们在web.xml中设置了
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
- port:端口号
1.2,启动maven build
1.3,改错
1.3.1,果不出所料一个找不到artifact的错误。
原因是因为我们本地仓库中找不到我们这个项目,所以我们需要把这个parent安装到本地仓库。
于是我们右键parent工程,run as,然后maven install,之后去本地仓库看一下。
这时候我们本地仓库中就有我们这个项目了。
1.3.2,tomcat8路径名无法找到的错误
再次运行结果如下:
这个错顿时感到不妙,可能连tomcat8这个插件都有问题了。
查了点资料,感觉应该是远程仓库配置的事。
于是在web工程下面的pom中增加了一个负责下载插件的库,同时吧common与manager两个工程都进行了install。
<pluginRepositories>
<pluginRepository>
<id>liussm</id>
<name>liussm Mirror</name>
<url>https://artifacts.alfresco.com/nexus/content/repositories/public/</url>
</pluginRepository>
</pluginRepositories>
再次运行的时候发现不会再报依赖缺失的错误了,并且一直在下载好多文件,说明tomcat8的问题已经解决了,但是又出现了新问题。
1.3.3,jdk路径utf-8无法解码
关于jdk路径乱码的问题:
Caused by: java.lang.RuntimeException: C:\Program%20Files\Java\jdk1.8.0_121\jre\lib\rt.jar (系统找不到指定的路径。)
我发现这个路径中有一个20%,想了很多办法还是无法找到解决这个问题的办法,于是想想还是使用回Apache公司官方的Tomcat7的插件吧,于是实在不得已还是换回了tomcat7,我运行一下tomcat7果真之前的错不在了。但是新的问题又来了。
1.3.4,Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean
这个错误的原因是我们刚才已经已经运行了一个失败的tomcat工程,重复运行的时候会报错,所以应该把上一个工程关掉,果不出所料,上一个工程还是有错。
1.3.5,最后还是一个传统的404错误
404说明找不到主页tomcat至少是启动成功了,但是我明明已经创建了对应的jsp。后来发现是jsp放置的位置出现了问题,必须放在 webapp根目录下,这就和早起普通的web工程应该放在webcontent目录下一样。解决了这个错误,我们终于可以运行起来这个工程了。
3,使用tomcat插件运行manager聚合工程
同样的道理操作运行manager聚合工程的父工程,注意要将刚才的tomcat7插件一并粘贴到pom.xml中。
最后的注意:
在整个创建的过程中,导入工程的时候或者启动tomcat的时候,会经常出现依赖失效的情况,遇到这种情况不是远程仓库中的版本不在了,就是本地仓库的jar有问题需要重新update,多尝试几次应该就没问题了。
现在我们只是把部分依赖导入了,勉强运行了起来。但是框架并没有整合。下次开始把框架整合了。