SSM+Shiro遇到的那些坑

这几天尝试自己搭建一套框架,一方面巩固一下基础,一方面尝试下各种新版本,结果就是——悲催,遇到了各种问题,解决起来简直吐血,以下总结下各种坑。

一、版本

1、VC层——Spring SpringMVC 4.1.6.RELEASE
2、M层——Mybatis 3.3.1
3、日志——log4j2.5
4、权限控制——Shiro 1.3.2
5、数据连接池——阿里 Druid1.0.27

好吧,用到的基本都是最新版本,JDK 1.8+eclipse neno 2+tomcat 8.5.9+maven

二、坑

1、第一坑就是上来就把pom和各种配置文件都弄好了,因为是参考的成熟项目,以为只是换下版本号即可,结果悲催了。pom就不贴了,反正网上一大把,找找就好了。

配置完后,启动Tomcat,Duang!启不来...报错如下(只贴关键部分,下面一大堆就不贴了)

java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]  
    at java.util.concurrent.FutureTask.report(Unknown Source)  
    at java.util.concurrent.FutureTask.get(Unknown Source)  

Unknown Source是什么鬼?开始baidu,结果大多数人的报错上还有jar包缺失提示的,我这里是啥也没有。但问题原因基本确定, maven导入的jar包问题,一般是jar损坏读取不了,但pom上是不会显示错误的。

我的没有说哪个jar包,所以只能一点点筛选,一般来说,先把除ssm核心jar以外的jar包注释,然后运行,可以启动,然后再一个个模块试别的,最终确定是shiro-web的问题。将本地maven下面关于这个jar包的文件夹删除,然后重新触发maven更新,问题解决。

2、解决之后,服务器起来了,但又开始大段的报错,部分问题很好处理,一般是配置文件中的引入class路径错误,建议每个class路径写完之后,按ctrl鼠标悬浮在上,看是否可以跳转,如果可以跳转,说明路径没错。

3、终于把所有路径问题处理了,然后log4j2又开始罢工了,网上大部分log4j2的介绍上都是说配置文件怎么弄,web.xml怎么弄,但忽略了一点,就是log4j2在servlet2.3上运行会有点问题,但maven自动构建出来的web项目就是servlet2.3的...于是更换web.xml文件为3,0,之所以要换3.0,就是因为在3.0上log4j2已经不用再web.xml上进行配置了,否则在servlet2.5上还要配监听器和过滤器,具体配置请baidu吧,多的是。

4、log4j2弄好了,然后启动,这回倒是不报错了,Java Resource上却莫名多了个x,但其中却没有任何报错的内容,查看Problem界面,提示Project Facets版本问题,于是乎右键点开项目——Properties——Project Facts,由于将web.xml换成了3.0,这里也需要对Dynamic Web Module的版本做下更改,现在还是2.3的状态,点击之后,修改——神马?改不了?

Cannot change version of project facet Dynamic Web Module to 3.0

继续上网查询,原来这个要改配置文件org.eclipse.wst.common.project.facet.core.xml 在eclipse workspace 项目下的.setting文件夹中

  <installed facet="java" version="1.8"/>
  <installed facet="jst.web" version="3.0"/>
以上两行改动即可,改动完有时候会发现eclipse还没有更新,重启一下或者使用Maven-Update Project就好了。但如果是使用后者,你会发现,update之后,这些项又变回去了。还需在pom.xml文件中加上maven的插件。

	<build>
		<finalName>mints</finalName>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.1</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>
		</plugins>
	</build>

这样之后,终于没有小红叉了,但是,又掉进了另一个坑。

5、启动Tomcat之后,服务器是启动了,但竟然没有加载项目,项目部署进去了点击各种按钮也发布不上去,根本没有反应。这下头彻底大了,只能再次baidu,但发现答案都没有什么用。重启、重装tomcat都没有解决。于是还是把问题定位在项目上,查看刚刚改动的地方。惊奇的发现,Project Facts中的Dynamic Web Module竟然自动变成了3.1,。重新改回3.0之后,Update Project,又变成3.1了。确定肯定是跟刚才加入的插件有关,但插件的版本调了几个之后都发现无效。最后只能将web.xml中servlet的版本也调成3.1,这下项目终于能够正常加载上了。

以上5个大坑填了之后,至少项目跑起来了,也对自己有个记录,毕竟处理了很久,今后再遇到至少有点解决思路了





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SSM(Spring+SpringMVC+MyBatis)是一种Java Web开发框架,被广泛使用于企业级应用的开发中。Spring提供了依赖注入和面向切面编程的特性,Spring MVC是一种轻量级的Web框架,而MyBatis则是一种持久层框架,可以方便地操作数据库。 Layui是一个简单易用、高效轻量级的前端框架,可以帮助前端开发者快速搭建Web界面。Layui提供了丰富的UI组件和灵活的样式定制功能,能够帮助开发者实现页面的快速展示和交互。 Shiro是一个强大且易于使用的Java安全框架,提供了认证、授权、话管理和加密等安全控制功能。Shiro能够帮助开发者轻松地实现用户身份验证和访问控制,提高系统的安全性。 综合上述三者,使用SSM框架可以简化Java Web的开发流程,通过Spring提供的依赖注入和面向切面编程,我们能够更好地管理和维护项目的各个组件。使用SpringMVC可以方便地开发出符合MVC设计模式的Web应用程序,而MyBatis则提供了对数据库的便捷访问,可以避免直接编写繁琐的SQL语句。 在前端方面,Layui的轻量级特性和丰富的UI组件能够加快前端开发的速度,使页面的搭建变得简单高效。 而使用Shiro可以保护我们的应用程序,通过身份验证和访问控制,可以确定用户的身份并限制其权限,提高系统的安全性。 总的来说,SSM、Layui和Shiro三者结合使用可以提高我们开发的效率和安全性,同时也能够提供用户友好的界面体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值