關於springboot轉發重定向以及受保護目錄的一些規律
今天閒來無事,又研究了一下springboot,涉及到了Thymeleaf模板引擎,因為之前接觸過jsp,所以上手很快,但是也思考了一些關於轉發以及重定向的問題,總結出以下規律
專案結構
首先解釋一下每個資料夾的作用,如果你是用的是idea建立的springboot專案,會在專案建立的一開始resources資料夾下自動建立static以及templates資料夾。也就是說專案初始時有java、resource、static以及templates 這幾個資料夾。
一般static下存放js以及css樣式檔案,templates存放html頁面。
以上是預設會建立的資料夾以及其作用
下面我們來說一下轉發和重定向的規律。
首先static資料夾以及templates資料夾是受保護的,也就是說相當於你將檔案放到了傳統的ssh或ssm專案的WEB-INF下了。所以也就是說這兩個資料夾下的檔案是無法通過url直接訪問的,以至於在springmvc下使用重定向會報404。
那麼希望直接訪問的html或者css該如何存放呢?
方式一
我們可以在resources下建立一個名為public的資料夾,顧名思義,放在此資料夾下的檔案是共有的,可以直接通過url訪問,當然也可以springmvc重定向訪問啦。
方法二
在main下建立webapp資料夾,將檔案放到此資料夾下,效果同上
注!資料夾名字是固定的,起別的名字還是會報404或者無效
好,說到這裡,有的同學應該就會有疑問了,我分別建立了public和webapp而且還起了相同名字的html頁面,我訪問會進到哪一個?
首先:最好還是不要這麼做,明明兩個資料夾效果一樣,又何必呢?看個人需求選擇一種方式就好啦。
但是:事實結果告訴我們,被優先選擇的是webapp下的檔案,如圖
關於springmvc控制轉發還是重定向的寫法問題。
轉發
/**
* Created by beyondLi on 2017/6/2.
*/
@Controller
public class ThymeleafController {
@RequestMapping(value = "cs" )
public String cs(Model model) {
return "index";
}
}
轉發是不需要手動加html的,此時springboot發現是轉發,預設配置下他會自動去templates資料夾下找到對應的檔案進行轉發,如果return後寫的是index.html會報404
重定向
@Controller
public class ThymeleafController {
@RequestMapping(value = "cs")
public String cs(Model model) {
return "redirect:index.html";
}
首先,新增redirect:這個毋庸置疑是mvc的語法問題,其次這裡需要注意的是需要手動新增.html,否則會報404,而重定向則會自動去public資料夾下尋找。至於與webapp優先級別則同上述。
結論
以上為本人在研究springboot時所想到的問題以及找到的一些規律(預設配置下)。至於上述規律的一些原因如果有興趣的同學可以研究一下,畢竟本人研究的還比較淺顯,如果有什麼錯誤,還望提出,共同學習。
相關推薦
關於springboot轉發重定向以及受保護目錄的一些規律
今天閒來無事,又研究了一下springboot,涉及到了Thymeleaf模板引擎,因為之前接觸過jsp,所以上手很快,但是也思考了一些關於轉發以及重定向的問題,總結出以下規律 專案結構 首先解釋一下每個資料夾的作用,如果你是用的是idea建立的sp
SpringMVC中使用forward和redirect進行轉發和重定向以及重定向時如何傳參詳解
轉自:http://blog.51cto.com/983836259/1877188 2016-11-28 09:45:59 如題所示,在SpringMVC中可以使用forward和redirect關鍵字在Controller中對原請求進行轉發或重定向到其
jsp reuest轉發,response重定向 以及pageContext對forward和include的簡寫
response.sendRedirect("apage.jsp");//servlet重定向到apage.jsp request.getRequestDispatcher("apage.jsp").forward(request, response);//servlet
Linux入門-7 Linux管道、重定向以及文本處理
cas tde blog linux中 err linuxcast 重要 nal new Linux管道、重定向以及文本處理 1 Linux多命令協作:管道及重定向 管道和重定向 2 Linux命令行文本處理工具 文件瀏覽 基於關鍵字搜索-grep 基於列處理文本-
轉發 重定向HttpServletRequest & HttpServletResponse
Servlet的實現和相關的方法 一、HttpServletRequest類 HttpServletRequest類封裝了從客戶端傳遞過來的資訊。 每次請求,Tomcat都會建立一個HttpServletRequest物件例項傳遞到serv
WEB-INF受保護目錄下jsp之間的互相訪問
我們說WEB-INF目錄下有 *.xml classes lib 等目錄和檔案,它們一般都是不讓直接訪問的。 說明這個目錄是安全的,我們回想為什麼不把jsp、html等頁面檔案放進去呢? 這樣會不會安全一些呢?大家猜的不錯,這樣是安全了(使用過濾器也可以實現該功能),
Servlet轉發重定向的區別
servlet請求轉發與重定向的區別: request.setAttribute(“test”,”hello”); request.getRequestDispacther(“/test.jsp”).forword(request,response);
java-初識輸入輸出重定向以及簡單輸入流輸出
ext bsp 重定向 sca png rip otf () edi 上代碼了解一下: 1 package com.etc; 2 3 import java.io.BufferedInputStream; 4 import java.io.Buf
為什麼重定向是響應,轉發和包含是請求,以及他們之間的區別
總結一: 重定向:是伺服器對客戶端做出的響應,讓客戶端重新請求request面 轉 發:轉發是伺服器去自己去請求新的頁面,而不做出響應,做出響應應該是新頁面的事情 總結二 什麼時候用重定向(sendRedirect),什麼時候用轉發(forward),什麼時候用包含(inc
轉發以及重定向(包含後臺介面中是否有return語句分析)
重定向與轉發 轉發:RequestDispatcher介面(再使用forward方法實現轉發) 重定向:HttpServletResponse介面(用sendRedirect方法實現重定向) 本質區別:轉發只發送了一次請求,而重定向則傳送了兩次請求 具體分析:①請
同時呼叫getOutputStream()和getWriter()出現的問題以及請求轉發和請求重定向的區別
package response; import java.io.IOException; import javax.servlet.ServletException; import javax.s
請求包含的講解以及——forward請求轉發和URL的重定向 如何選擇?
請求包含: 1 在一個頁面可以包含其他頁面的內容 2 在Servle
轉發,重定向中的路徑問題以及兩者的區別,用法
一:轉發的時候不需要加web應用名稱,因為轉發請求的是內部資源。例如:使用者登入-->從action中的LogServlet轉發到http://localhost:8080/newlib/reader/readerMain_r.jsp時:1.使用絕對路徑(/代表web應用名稱)request.getRe
SpringBoot使用者登陸攔截以及解決頁面重定向問題
SpringBoot的預設啟動時,對資源攔截的控制檯資訊如下:2018-04-13 10:02:30.090 INFO 78908 --- [ restartedMain] o.s.w.s.handler.SimpleUrlHandlerMapping : Map
請求轉發和重定向的區別?以及如何使用?
重定向與請求轉發的區別 一 轉發是伺服器行為,重定向是客戶端行為。為什麼這樣說呢,這就要看兩個動作的工作流程: 轉發過程:客戶瀏覽器傳送http請求——》web伺服器接受此請求——》呼叫內部的一個方法在容器內部完成請求處理和轉發動作——》將目標資源傳送給客戶;在這裡
javaEE------------------有關servlet的一些細節(輸出流以及轉發、重定向和請求包含)
1.servlet中的兩個輸出流:位元組流(response.getOutputStream()) 和字元流(response.getWriter()) 1)用位元組流輸出時,英文可以out.print("Hello1");中文要採用out.write("中文".getBy
springboot實現轉發和重定向
val tps Language pat row style forward 不能 exc 1、轉發 方式一:使用 "forword" 關鍵字(不是指java關鍵字),註意:類的註解不能使用@RestController 要用@Controller @Req
javaweb之Servlet,http協議以及請求轉發和重定向
本文是作者原創,版權歸作者所有.若要轉載,請註明出處. 一直用的框架開發,快連Servlet都忘了,此文旨在幫自己和大家回憶一下Servlet主要知識點.話不多說開始吧 用idea構建Servlet專案 專案結構如下 什麼是 Servle
重定向(response.sendRedirect())與請求轉發(RequestDispatcher.foward())
就會 方法 服務器 請求轉發 請求 姓名 報錯 owa 完全 兩個方法都是讓瀏覽器轉向其他資源,它們的區別是: 1.請求轉發要將HttpServletRequest與HttpServletResponse作為參數傳入RequestDispatcher的forward方法,也
【Servlet】深入淺出Java重定向和請求轉發
列表 url地址 ssi 什麽 stack led 要去 處理 代碼 import java.text.*; import java.util.*; import java.io.*; import javax.servlet.http.*; i