當前位置:首頁 » 電腦資訊 » jsp文件為什麼放到webinf

jsp文件為什麼放到webinf

發布時間: 2022-07-06 03:22:58

❶ 為什麼web項目中.jsp文件要放在WEBINF下

如果jsp頁面放在WEBROOT下,你可以直接在地址欄訪問,如果放在WEBINF下,即使在地址欄輸入地址也不可以訪問,這樣就保證了網頁在一定程度上的安全,但是總能破解,你可以把這兩種方案都試一試

❷ JSP 應該放在WEBROOT下面還是WEB-INF下面

JSP存放在 WEB-INF 跟webroot的區別
放在webroot下面:優點,程序結構清晰,便於編碼和維護;缺點,要加過濾器。
放在web-inf下面:優點,不用過濾器;缺點,打亂了程序結構,編碼和維護麻煩點。
webroot其實是一個名字而已,在部署後是看不到的,訪問的時候在url里肯定也是沒有的,當然webroot也可以換成別webcontent等都可以。

❸ 工程中將jsp文件放在webroot和WEB-INF下的區別

JSP存放在WEB-INF跟webroot的區別放在webroot下面:優點,程序結構清晰,便於編碼和維護;缺點,要加過濾器。放在web-inf下面:優點,不用過濾器;缺點,打亂了程序結構,編碼和維護麻煩點。webroot其實是一個名字而已,在部署後是看不到的

❹ 為什麼在Java web項目中的jsp和js都在WEB -INF文件中,為什麼用了${ctx},jsp還

你理解有誤,真正運行的時候是在瀏覽器,你訪問jsp不是直接輸入了jsp的路徑,而是Controller(或者action)之類的url,而js的路徑則直接在生成的html里寫著(包含了web-inf部分),而web-inf部分對外接(瀏覽器)是不可見的,所以一直訪問不到。

❺ 做項目時領導讓把jsp頁面都放在web-inf下面說是要防止用戶直接訪問jsp頁面,為么不能直接訪問jsp

這是保護那部分jsp頁面,如果沒有登錄驗證,那部分jsp用戶可以直接訪問,這樣很不安全,放在WEB-INF下面,就使得只能WEB-INF文件夾外jsp頁面調用裡面的jsp,這樣來使用,就比如我們有一個後台系統,我們用一個頁面(main)把其他子頁面引入進來,我不想每個子頁面都進行驗證保護,我們把這些子頁面放在WEB-INF下,我們只對main頁面進行驗證就可以

❻ 我的jsp頁面放在了WebRoot/admin下,聽說放在web_inf下比較安全具體怎樣配置

如果把這些JSP頁面文件移到WEB-INF 目錄下,在調用頁面的時候就必須把"WEB-INF"添加到URL中。

我們知道,實現頁面的跳轉有兩種方式,一種是通過redirect的方式,一種是通過forward的方式。redirect方式的跳轉,系統會在一個新的頁面打開要跳轉的網頁;而forward方式跳轉,系統會在原來的頁面上打開一個要跳轉的網頁。所以放到WEB-INF目錄下的文件是不允許採用redirect方式的跳轉來訪問的,如下

例1:/test/test1.jsp文件

<html>
<body>
<form name="testform" action="/WEB-INF/jsp/test/test.jsp">
<input type = "submit" value="test">
</form>
</body>
</html>
上面這段語句只有一個名為test的按鈕,如果單擊這個按鈕是,系統就會跳轉到/WEB-INF/jsp/test/test.jsp,它的代碼如下:

例2:/WEB-INF/jsp/test/test.jsp文件

<html>

<body>

跳轉成功!

</body>

</html>

事實上,這個跳轉是無法成功的,點擊按鈕後,IE會報「403 Forbidden」的錯誤。

而forward方式的跳轉則可以成功,如下代碼:

例3:/test/test2.jsp文件

<html>

<body>

<form name="testform">
<jsp:forward page = "/WEB-INF/jsp/test/test.jsp" />
</form>

</body>

</html>

請注意上面紅色的語句,這段就是通過forward的形式來訪問/WEB-INF/jsp/test/test.jsp文件,在IE輸入地址http://localhost/test1/test2.jsp,網頁上就顯示「跳轉成功!」的信息了,這表示放到了WEB-INF可以通過forward的方式來訪問。

個人認為,像這種方式的可能不大時候採用一般jsp進行編程的系統,因為很多頁面上都有採用submit這樣的方式來進行跳轉,但這種方式卻非常適合採用struts結構的系統。因為採用這個結果大多是先跳轉到一個Action類,然後在Action類進行相關處理後(比如說獲取相關的信息保存到session中,進行有效性的判斷),然後再forward到另外一個頁面,這樣放到WEB-INF中的jsp代碼可以被正常訪問,也防止了對這些頁面的直接訪問,下面我來舉例說明。

下面我們先對配置文件struts-config.xml進行配置,如下:

例4:WEB-INF/struts-config.xml文件

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">

<struts-config>

<!-- ========== Action Mapping Definitions ============================== -->

<action-mappings>

<action path="/test" type=" test.TestAction" scope="request">
<forward name="test" path="/WEB-INF/jsp/test/test.jsp"/>
</action>
</action-mappings>
</struts-config>

上面這個配置非常簡單,這里定義了一個action類,它的路徑為/test,所對應的類為test.TestAction.java,它都一個跳轉頁面,別名為test,對應的頁面為/WEB-INF/jsp/test/test.jsp。

下面我們對例1的內容進行修改,使其跳轉到/test去。

例5:修改後的/test/test1.jsp文件

<html>

<body>

<form name="testform" action="/test">

<input type = "submit" value="test">

</form>

</body>

</html>

這樣我們在IE中訪問http://localhost/test/test1.jsp,然後點擊test按鈕,頁面就會跳轉到test.TestAction.java這個類來,下面是這個類的內容。

package test;

import javax.servlet.http.*;

import org.apache.struts.action.ActionMapping;

import org.apache.struts.action.Action;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

public class TestAction extends Action

{

public ActionForward perform(ActionMapping mapping,

ActionForm form, HttpServletRequest req,

HttpServletResponse res)

{

return mapping.findForward("test");

}

}

可以看到,這個類是繼承Action類的,所有的控制類都必須繼承Action類,這個類裡面有一個perform方法,跳轉到這個類都是從這個方法進行訪問的(新版本可以是execute方法),現在這個方法裡面只有一條語句,這句話的意思就是跳轉到一個別名為test的頁面,也就是/WEB-INF/jsp/test/test.jsp頁面,這樣我們點擊test按鈕後,IE就會顯示「跳轉成功!」這條信息,這表示系統允許這樣的跳轉。

注意:CSS文件要存放在根目錄,此時引用要用絕對路徑!!!引用格式如:/項目名/css文件夾/*.css

❼ 為什麼要把jsp放在WEB

javaweb裡面的WEB-INF目錄客戶端不可隨意訪問,比如你開發的時候把jsp文件放在webroot裡面,部署之後就在應用程序的根目錄下,這時用戶可以使用瀏覽器測試你根目錄下的文件,他可以測試http://ip:8081/app/test.jsp,就是測試一下test.jsp是否存在,或者其他jsp頁面等等,其實就說明這樣是不安全的,用戶可以列舉出你應用裡面的某些信息

❽ jsp頁面放在web-inf目錄下怎麼訪問

首先,對於外部訪問來說,web-inf下的文件都是不可見的(即不能通過url獲得web-info下的任何文件),所以,直接訪問jsp是不可能的。這要從web-info文件夾的作用說起:
WEB-INF的存在以及其下的lib和classes目錄的作用都是jsp規定的,主要是系統運行的配置信息和環境,用來存儲服務端配置文件信息和在服務端運行的類文件,它下面的東西不允許客戶端直接訪問的,這是jsp環境的規定。
而我們通常是使用view層框架(如struts)來提供jsp服務,此時,我們可以將jsp文件放到web-info下避免客戶直接訪問到頁面,同時使用struts來進行jsp文件提取,並將編譯好的結果發送到客戶端。

❾ jsp文件為什麼放到web-inf下

  1. jsp文件一般情況下放在webroot或者webcontent目錄下,用戶使用瀏覽器很容易可以訪問到;但是放在web-inf下,就安全的多,用戶一般是訪問不到的

  2. 放在web-inf中的jsp就是無法通過地址欄訪問的

❿ JSP文件是否有必要放在WEB

觀點一:(較為贊同)
真正的原因是,對於早期直接嵌入java代碼的jsp,是直接給出jsp路徑給用戶訪問的,這種情況恰恰不能放在WEB-INF,而到了現在的mvc模式,jsp已經不是曾經那個包含完整邏輯的jsp,而僅僅充當view層的模板,必須要填入model數據後進行渲染,才能生成可讀的頁面,這樣的模板是不能讓用戶直接訪問的,直接訪問的話要麼是一堆各種空白,或者一堆佔位符,甚至一堆NullPointException,所以需要放到WEB-INF里。補充一下,「安全性問題」指的是「不允許你訪問,否則會對我不好」,而這里的情況其實是「不建議你訪問,否則會對你不好」,應該屬於健壯性的范疇。
一般項目都是要求隱藏性的,只讓客戶通過請求訪問而不是直接訪問jsp頁面。若放在webroot下面,肯定要加一個過濾器阻止所有對*.jsp的訪問。只要比較的話:
放在webroot下面:優點,程序結構清晰,便於編碼和維護;缺點,要加過濾器。
放在web-inf下面:優點,不用過濾器;缺點,打亂了程序結構,編碼和維護麻煩觀點四:為了減少風險,可以把這些頁面文件移到WEB-INF目錄下。基於Servlet的聲明,
WEB-INF不作為Web應用的公共文檔樹的一部分。因此,
WEB-INF目錄下的資源不是為客戶直接服務的。我們仍然可以使用WEB-INF目錄下的JSP頁面來提供視圖給客戶,客戶卻不能直接請求訪問JSP。

熱點內容
手機看一會屏就發熱為什麼 發布:2025-05-10 07:39:23 瀏覽:315
為什麼小米8我的沒有屏閃 發布:2025-05-10 07:38:48 瀏覽:204
已婚喪偶的女人為什麼當小三成癮 發布:2025-05-10 07:38:39 瀏覽:325
為什麼錄取時間沒到卻被錄取了 發布:2025-05-10 07:36:40 瀏覽:471
想知道你手機為什麼這么安靜嗎 發布:2025-05-10 07:35:07 瀏覽:895
為什麼找不到手機錄音機 發布:2025-05-10 07:29:09 瀏覽:399
五環為什麼不是五個顏色了 發布:2025-05-10 07:24:23 瀏覽:491
為什麼都是移動號網路信號不一樣 發布:2025-05-10 07:18:27 瀏覽:740
視頻畫布顏色為什麼換不了 發布:2025-05-10 07:12:54 瀏覽:447
為什麼有人從qq轉向微信 發布:2025-05-10 07:08:38 瀏覽:735