Spring Boot 应用中server.context-path的作用

背景

定义: server.context-path= # Context path of the application. 应用的上下文路径,也可以称为项目路径,是构成url地址的一部分。

在每个module的application.properties文件都可以配置server.context-path这个属性。开始使用spring boot的时候没有注意这个属性,其实默认可以不配置,直接在controller层通过@RequestMapping来设定url的地址路径。

@RestController
@RequestMapping("/mqcp")
public class MQCPContorller {
    @Autowired
    MQCPServiceImpl mqcpService;

    @RequestMapping("/convert")
    public String convert(){
        mqcpService.convert();
        return "ok";
    }
}

如果server.context-path没有配,请求的url地址就是 localhost : port/mqcp/convert
如果server.context-path = “/market/task”, 请求的url地址就是 localhost : port/market/task/mqcp/convert
在 task这个模块下的所有web层的url地址都需要添加server.context-path。

server.context-path 在ngnix分发中的作用

ngnix 分发的时候 server.context-path 起到了很重要的作用,并且如果server.context-path 值没有写规范也会导致挖出一个巨大的坑。

下面是ngnix的部分配置文件

upstream task{
    server 100.100.88.152:8097;
    check interval=30000 rise=2 fall=3 timeout=1000 type=http;
    check_http_send "GET /market/task/turnTask  HTTP/1.0\r\n\r\n";
    check_http_expect_alive http_2xx http_3xx;
}
server {
    location /market/task/ {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://task;
    }
}

实现的功能是所有的请求中如果url中包含/market/task/的请求,都被分发到server 100.100.88.152:8097,这个ip和端口的服务器上。
很明显,如果task模块配置了server.context-path= /market/task 那么task模块下的所有web接口url地址都必须加上 /market/task, 那么在task模块下的web层所有接口都可以分发到server 100.100.88.152:8097上,不用考虑新增的Controller类上的路径和接口上定义的路径。

反之,如果没有配置server.context-path,或者server.context-path配置的没有区别性,比方说配置为 /market ,无法和其他模块区分开来,那么ngnix就没有办法分发出去。 这样模块下web层每次新增一个Controller类,为了能够让ngnix正常分发,不报404错误,需要在ngnix上对类的url地址进行配置,这是一件很麻烦的事情。所以server.context-path的规范配置很关键。

  • 42
    点赞
  • 136
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
## springboot整合thymeleaf ### 1. 导入起步依赖 ```xml org.springframework.boot spring-boot-starter-thymeleaf ``` ### 2. 更改引入版本 ```xml 3.0.2.RELEASE 2.1.1 ``` > 1. springboot自带的thymeleaf依赖为2.1.3版本,使用thymeleaf-layout-dialect版本为2以下版本。 > 2. 使用3或3以上的thymeleaf时,需要thymeleaf-layout-dialect的版本为2或以上。 > 3. 锁定thymeleaf版本时不能使用thymeleaf.version标签,会和springboot内部的依赖标签冲突。应当使用springboot-thymeleaf.version标签来锁定版本。 ### 3. 配置文件配置 ```properties spring.thymeleaf.prefix=classpath:/templates/ spring.thymeleaf.check-template-location=true spring.thymeleaf.suffix=.html spring.thymeleaf.encoding=UTF-8 spring.thymeleaf.content-type=text/html spring.thymeleaf.mode=HTML spring.thymeleaf.cache=false ``` > spring.thymeleaf.cache为缓存,需要热部署时,需要设置为false ## 语法 ### 1. 替换标签体内容 ```html 显示欢迎 显示欢迎 ``` ### 2. 替换属性 ```html 显示欢迎 ``` ### 3. 在表达式访问属性域 ```html 访问属性域 访问请求域 方式一 访问请求域 方式二 访问Session域 访Session域 方式一 访问Application域 方式一 ``` ### 4. 解析url地址 ```html 解析URL地址,获取ContextPath的值 @{}是把ContextPath的值附加到指定的地址前 @{}是把ContextPath的值附加到指定的地址前 ``` ### 5. 直接执行表达式 ```html 直接执行表达式 无转义效果 : [[${attrRequestScope}]] 有转义效果 : [(${attrRequestScope})] ``` ### 6. 分支与迭代 #### 1. if 判断 ```html if判断字符串是否为空 <p th

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值