问题描述:
近日,将Eclipse开发的Maven项目导入到Idea中,启动项目后
无法进入网页,提示:“该网页无法正常运作 localhost 将您重定向的次数过多”,
有点坑的一点就是:在Eclipse中,该项目中是百分百可以运行的,没有任何问题。但是导入到了Idea之后就出现这个错误,
所以主观认为:项目没有问题,是自己导入Idea的动作错误,查阅了很多资料,尝试了三种导入Idea的方式之后,每一种方式都遇到了相同的问题。
若不清楚,IDEA如何导入Maven项目,推荐看下面这篇文章哦!里面附上了个人的见解,对一个新项目导入后十个步骤检查
https://blog.csdn.net/xiaozhegaa/article/details/104834071
进而思考,会不会是本身项目存在的问题导致
问题原因:
如果使用idea配置tomcat启动的话,它默认是不会带上项目名称,当然你可以配置加上项目名称。
如果使用eclipse配置tomcat启动的话,它是默认带上项目名称。
在项目全局拦截器中,存在硬编码,导致重定向的URL一直被拦截,一直在不断的重定向。
查阅网上的文章,大概都是以下几种情况:
1、跳转页面的时候,写错地址,导致不断进行跳转死循环。 A->B->A 死循环
2、配置全局拦截器的时候,写了重定向循环
3、估计我这种情况也是坑,如果有小伙伴遇到不是上面这两种的,又是一个新的项目,可以思考一下是不是存在着硬编码导致的。
软件切换、特性不同也会导致这个问题发现,说道理还是拦截器写的有问题
若部署上线,出现这种类似问题,也可以检查一下全局拦截器编码问题吧
问题解决:
1、在网上查阅资料,所有的文章指向同一个点:这个错误原因是页面在跳转的时候,有一处死循环了,导致重定向次数过多卡死
但是项目中内部的代码逻辑是没有问题。
2、尝试去掉拦截器,拦截不存在的URL发现可以运行
原先 / 拦截所有
*.action 指定拦截后缀为.action的请求,
发现可以请求到:
因此,排除了是IDEA导入项目动作的错误,而是项目配置错误导致的。
3、突然想到,在eclipse中,我的项目是可以依赖于maven项目自身启动的,
在pom文件中,集成了tomcat插件,所以又尝试了用maven:插件启动
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8081</port>
</configuration>
</plugin>
</plugins>
</build>
4、两种方式启动后,唯一的不同点在于:
如果使用idea配置tomcat启动的话,它默认是不会带上项目名称,当然你可以配置加上项目名称。
如果使用eclipse配置tomcat启动的话,它是默认带上项目名称,
检查全局拦截器,发现
在登录拦击器中,写死了,针对以下几个URL请求放行处理。
///recruitmentWebsite/system/index
if(url.equals("/recruitmentWebsite/system/index") ||
url.equals("/recruitmentWebsite") ||
url.equals("/recruitmentWebsite/system/login")||
url.equals("/recruitmentWebsite/user/toLogin")||
url.equals("/recruitmentWebsite/user/register")) {
//这三个是未登录可以访问的资源,放行呗
return true;
}
终于找到原因了,在idea启动时,访问的是system/login,一直被拦截进行重定向,重定向的次数多了,就出现上面的报错。
5、解决方法,在tomcat中配置项目名成,然后就可以了