SpringBoot 影响URL访问路径的RequestMapping写法与context-path设置

上周尝试把SpringBoot项目以WAR包的形式部署到Tomcat, 在访问路径这个问题上遇到了问题并折腾了很久。问题解决之后,总结经验如下:

1. 类中的路径映射可以写得简单一点:(项目名是detect-mgr)

启动类的路径就用“/”,不用加项目名

@RequestMapping("/")
public class WebappApplication extends SpringBootServletInitializer {
    //...
}

其他Controller中的路径就直接写“/xxx”, 不用加项目名

@RequestMapping("/login") 
public class LoginCtrl {
    //...
}

2. 上述代码中的路径映射没有放项目名,访问的时候url就只能直接跟在端口后面。如果放项目名,则提示404.

http://localhost:8080/login

而更合理的url应该是在路径中体现项目名的:

http://localhost:8080/detect-mgr/login

为了把项目名放入url中使其看上去更合理,需要在application.properties文件中添加context-path设置:

SpringBoot 1.x的写法:server.context-path=/detect-mgr
SpringBoot 2.x的写法:server.servlet.context-path=/detect-mgr

参考:https://blog.csdn.net/Monster_WangXiaotu/article/details/104834339/

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Spring Boot中,可以通过配置`server.servlet.context-path`来设置应用程序的上下文路径(即context-path)。如果需要统一添加前缀,则可以使用Spring MVC中的`HandlerInterceptor`来拦截请求,并在请求路径前添加前缀。 具体步骤如下: 1. 创建一个`HandlerInterceptor`实现类,实现`preHandle`方法,在该方法中获取请求路径并添加前缀,然后将修改后的路径设置回请求中。 ``` @Component public class PrefixInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String prefix = "/api"; // 前缀 String requestURI = request.getRequestURI(); // 请求路径 String newURI = prefix + requestURI; // 添加前缀 request.getRequestDispatcher(newURI).forward(request, response); // 设置修改后的路径 return true; } } ``` 2. 在Spring Boot配置类中添加`InterceptorRegistry`,并将上面创建的`HandlerInterceptor`添加到其中。 ``` @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Autowired private PrefixInterceptor prefixInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(prefixInterceptor).addPathPatterns("/**"); // 添加拦截器并设置拦截路径 } } ``` 3. 在`Controller`中使用`@RequestMapping`注解指定接口路径,如`/user`,拦截器会自动添加前缀,最终的请求路径为`/api/user`。 ``` @RestController @RequestMapping("/user") public class UserController { @GetMapping("/list") public List<User> list() { // ... } // ... } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鹰信息技术服务部

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值