1. 程式人生 > >關於springboot轉發重定向以及受保護目錄的一些規律

關於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