SpringBoot报404错

1 篇文章 0 订阅
1 篇文章 0 订阅

一、问题描述:

在将老项目迁移到SpringBoot时,出现以下情况:
1.项目正常启动;
2.访问某个后台接口,请求已进入对应的Controller,但浏览器还是显示404;
3.页面对应的js和css文件提示404

二、原因:

由于本人使用了自定义的SpringMvc的配置文件,所以覆盖了SpringBoot的默认配置,而我的配置文件中只有自定义的几个配置,所以会出现上述问题。

@Configuration
@ImportResource(locations={"classpath:spring/applicationContext-*.xml"})
public class SpringMvcConfig implements WebMvcConfigurer{

}

三、解决方案:

由于上述问题是由在SpringBoot中自定义SpringMvc相关配置不当引起的,故只需正确配置即可。
例如需要自定义SpringMvc的拦截器:
1.SpringBoot 1.x
(1) 新建拦截器类,实现HandlerInterceptor接口即可:
public class SecurityInterceptor implements HandlerInterceptor {

	/**
	 * 
	 * Description:   判断用户是否已登录
	 * @param request
	 * @param response
	 * @param object
	 * @return
	 * @throws Exception
	 */
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception {
		User user = (User) request.getSession().getAttribute("User");
		if (user == null) {// 如果没有登录或登录超时
			request.setAttribute("msg", "您还没有登录或登录已超时,为确您的保账户安全请重新登录!");
			request.getRequestDispatcher("/noPermission.jsp").forward(request, response);
			return false;
		}
		return true;
	}

}
(2) 新建一个配置类,加上@Configuration注解并继承WebMvcConfigurerAdapter类,重写相关的方法。
@Configuration
public class SpringMvcConfig extends WebMvcConfigurerAdapter {


	/**
	 * 
	 * Description:配置自定义的SpringMvc拦截器   
	 * @param registry
	 */
	@Override
	public void addInterceptors(InterceptorRegistry registry) {
		registry.addInterceptor(new SecurityInterceptor()).addPathPatterns("/**").excludePathPatterns("/login.jsp",
				"/other.jsp");
		super.addInterceptors(registry);
	}

}
2.SpringBoot 2.x
(1) 新建拦截器类(同上)
(2) 新建一个配置类,加上@Configuration注解并实现WebMvcConfigurer接口(注意:这里虽然是实现的是接口,但所有的方法在接口里都有默认实现的,这是基于java8的新特性,所以不必重写接口里的所有方法,只需要重写需要重写的方法),重写相关的方法。
@Configuration
public class SpringMvcConfig implements WebMvcConfigurer{

	@Override
	public void addInterceptors(InterceptorRegistry registry) {
		registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**").excludePathPatterns("/");
	}
	
}

四、总结

     当你既想使用SprootBoot的默认配置,又想加入自定义的配置的话,就用上述方式。当然了,除了我这个原因之外还很有可能是由于你的Controller没有放到SpringBoot启动类同一个包下或没有在SpringBoot启动类所在包的子包下,也会导致404。我遇到的这个问题,请教了大神都没看出来(也许是他没认真看吧),所以还是要自己认真仔细的分析问题,找到原因。希望我的解答可以帮助到你。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值