有道雲筆記書寫,原文訪問:
http://note.youdao.com/noteshare?id=a6029ad7f6b24dde43a69c66613b9e28&sub=0E80996B78D64DDB8FDB6381C83E0545
今天看到把項目配置dns,讓外網通過域名也可以訪問,就想試試。
於是新建一個spring boot項目,很簡單,就只有一個首頁,訪問端口直接跳轉首頁,結果還有幾個坑:
首先新建spring boot項目,引入web。
如何設置首頁?
首先建一個index.html文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<title>Title</title>
</head>
<body>
天天電子競技,阿里漸行漸遠
</body>
</html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<title>Title</title>
</head>
<body>
天天電子競技,阿里漸行漸遠
</body>
</html>
可放在/static
- /public
- /resources
- /META-INF/resources
這里放在static下。
注意idea新建的html文件可能無效,因為他少了一個 “ / ”
<meta charset="UTF-8"> 它自己新建
<meta charset="UTF-8"/> 修改
<meta charset="UTF-8"/> 修改
這個破問題導致我一直404,修改。
一:配置類
新建config包,其下建一個配置類:
@Configuration
public class DefaultView extends WebMvcConfigurationSupport {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
// login頁面在 templates 文件夾下
registry.addViewController("/").setViewName("index");
registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
super.addViewControllers(registry);
}
}
public class DefaultView extends WebMvcConfigurationSupport {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
// login頁面在 templates 文件夾下
registry.addViewController("/").setViewName("index");
registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
super.addViewControllers(registry);
}
}
注意以前繼承的是WebMvcConfigurerAdapter,現已經過時,這里改為WebMvcConfigurationSupport
二:直接加controller路徑映射
@Controller
public class TestController {
@RequestMapping("/")
public String testIndex(){
return "index.html";
}
}
public class TestController {
@RequestMapping("/")
public String testIndex(){
return "index.html";
}
}
注意上面return的是“index.html" 而不是”index“
否則又會404.
也可以引入thymeleaf
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
然后把index.html放在templates下,否則它找不到,這時候的controller就可以這么寫:
@Controller
public class TestController {
@RequestMapping("/")
public String testIndex(){
return "index";
}
}
public class TestController {
@RequestMapping("/")
public String testIndex(){
return "index";
}
}
區別就是少個后綴而已,所以我這里就不用thymeleaf了。
外網映射
由於我沒有域名,也沒有服務器。我這里用的是ngrok,由於官方的可能連接失敗,這里使用了國內的一個開發者做的ngrok2:
下載下來,去注冊一個賬號,拿到token。
在配置文件里替換你注冊后獲得的token
在命令行下進入到ngrok客戶端目錄下
執行 ngrok.exe -config=ngrok.conf -subdomain xxx 8080 (此命令用於未在配置文件中配置隧道的情況,端口根據項目來)
如果開啟成功 你就可以使用 xxx.ngrok2.xiaomiqiu.cn 來訪問你本機的 127.0.0.1:80 的服務啦
如果你自己有頂級域名,想通過自己的域名來訪問本機的項目,那么先將自己的頂級域名解析到小米球服務器的IP(域名需要已備案哦),然后執行 ngrok -config=ngrok.conf -hostname xxx.xxx.xxx 80 (xxx.xxx.xxx是你自定義的頂級域名,此命令用於未在配置文件中配置隧道的情況)
如果開啟成功 你就可以使用你的頂級域名來訪問你本機的 127.0.0.1:80 的服務啦。
