1. 程式人生 > >如何訪問WEB-INF資料夾下的jsp檔案

如何訪問WEB-INF資料夾下的jsp檔案

我們都知道不能直接訪問WEB-INF資料夾下的jsp檔案,那應該怎樣訪問呢?
首先,WEB-INF目錄是Java WEB應用的安全目錄,客戶端無法訪問,只有服務端可以訪問。
然後,為什麼要這麼設計,這樣做的初衷是在WEB-INF資料夾下放一些不希望通過瀏覽器訪問的東西,常常是一些配置檔案,比如web.xml檔案就在該目錄下。
那如果把jsp頁面放在了WEB-INF目錄下,應該怎麼訪問呢?
比如我現在做的一個小練習是:
Spring+Spring MVC+Hibernate
實現使用者登入,登入成功返回所有使用者資訊的列表,如果登入不成功繼續登入。其中登入成功的條件是使用者名稱和密碼都在該使用者表裡面。
該小練習只涉及一個User實體類,兩張jsp頁面。
①login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"
>
<title>Insert title here</title> </head> <body> <div style="margin-top:82px;text-align: center;">歡迎進入登入介面</div><hr></br></br> <div style="text-align: center;"> <form action="/SHDemo/user/login" method
="post">
username:<input type="text" name="username" /></br></br> password:<input type="password" name="password" /></br> <input type="submit" value="login" /> </form> </div> </body> </html>

②list.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">  
    <title>List User</title>
  </head>
  <style type="text/css">
    td{text-align: center;}
  </style>
  <body>
  <div style="margin-top:82px;text-align: center;">使用者列表</div><hr></br></br>
  <center>
    <table border="1" width="450">
      <tr>
        <td>序號</td>
        <td>姓名</td>
      </tr>
      <c:forEach var="user" items="${users }">
        <tr>
            <td>${user.id }</td>
            <td>${user.username }</td>
        </tr> 
      </c:forEach>
  </table>
  </center>  
  </body>
</html>

訪問流程:
①在瀏覽器輸入:http://http://localhost:8080/SHDemo
進入登入頁面login.jsp
這是因為在web.xml裡面設定了

/WEB-INF/page/login.jsp

②登入成功,就返回list.jsp,這是通過Spring的檢視解析器實現的

<bean  id="viewResolver"class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"value="org.springframework.web.servlet.view.JstlView"></property>
<property name="prefix" value="/WEB-INF/page/"></property>
<property name="suffix" value=".jsp"></property>
</bean>

最後,如果要在jsp頁面訪問WEB-INF下面的jsp檔案,可以通過轉發,即:
request.getRequestDispatcher(“/WEB-INF/page/login.jsp”).forward(request,response);

相關推薦

如何訪問WEB-INF資料jsp檔案

我們都知道不能直接訪問WEB-INF資料夾下的jsp檔案,那應該怎樣訪問呢? 首先,WEB-INF目錄是Java WEB應用的安全目錄,客戶端無法訪問,只有服務端可以訪問。 然後,為什麼要這麼設計,這樣做的初衷是在WEB-INF資料夾下放一些不希望通過瀏覽器訪問

web-inf資料的外聯css樣式路徑問題

            今天練習web專案時就把以前放在webContent資料夾下的jsp放到了web-INF資料夾下(注:web-INF資料夾裡的內容不能被瀏覽器直接訪問),這時,我產生了這樣的問題:如果我在Login.jsp裡用到my.css樣式,我該怎麼寫?是hre

Myeclipse中WEB-INF和META-INF資料的各檔案含義

WEB-INF     /WEB-INF/web.xml  你的Web應用程式配置檔案,這是一個XML檔案,其中描述了 servlet 和其他的應用元件配置及命名規則;/WEB- INF/classes/這個目錄包含了站點所有用的 class 檔案,包括 servlet

Android Studio SD卡訪問許可權及asserts資料檔案操作

Android Studio SD卡訪問許可權 1、在 AndroidManifext.xml 中新增如下程式碼 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /&

在Myeclipse部署Tomcat時只有WEB-INF資料,無頁面的及其他檔案

小編我,作為小白查了好多都沒解決~~~經高手點播終於解決了。在建立maven的web專案時為了儲存web專案的結構,小編偷懶先建立web專案,將建立好的maven專案的.project的<natures>標籤下替換到新的檔案下,在建自己需要的專案。<natu

AHK 遍歷資料ahk檔案並執行與刪除

folder = D:\ver_upload\new Loop, %folder%\*.ahk FileList = %FileList%%A_LoopFileTimeModified%`t%A_LoopFileName%`n Sort, FileList ;根據日期排序.從小到大 Loo

批量修改資料所有檔案的名稱

所需工具:cmd、excel、記事本 一、利用cmd將資料夾下的內容全部輸出 假設要匯出的內容在E:/graduate/pic下,輸入: e: cd graduate cd pic dir > name.txt 將其中所有檔案的名字都存入name.txt中,建立的資料夾在路徑之下。

python 獲取指定資料所以檔案

reportPath =資料夾路徑 listdir=以一個list返回資料夾下所以檔案 dirs = os.listdir(reportPath)print(dirs) def __get_report(self): """獲取最新測試報告""" dirs = os.listdir(repo

清除當前資料.svn檔案的方法

原文地址 @echo on color 2f mode con: cols=80 lines=25 @REM @echo 正在清理SVN檔案,請稍候...... @rem 迴圈刪除當前目錄及子目錄下所有的SVN檔案 @rem for /r . %%

Linux command: 統計資料檔案數目

Linux下有三個命令:ls、grep、wc。通過這三個命令的組合可以統計目錄下檔案及資料夾的個數。 統計當前目錄下檔案的個數(不包括目   1   $ ls -l | grep "^-" | wc -l

python 遍歷,刪除,複製資料所有檔案

import os def files_and_dirs_list(dir_path): """ 遍歷資料夾及資料夾下所有檔案(包括資料夾) :param dir_path: 資料夾路徑 :return: root 所指的是當前正在遍歷的這個資料

OpenCV實現遍歷資料所有檔案

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

linux 命令替換資料所有檔案指定字串為

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Spring定時任務註解實現定時清空指定資料檔案

@EnableScheduling和@Scheduled(cron = "0 0 4 * * ?"),通過註解方式實現定時任務: 1 import org.slf4j.Logger; 2 import org.slf4j.LoggerFactory; 3 import org.springfra

Java遞迴刪除指定資料所有檔案

Java遞迴刪除指定資料夾下所有檔案 工具類封裝 public class FileUtils{ public static boolean delAllFile(String path) { return delAllFile(new File(path)

ndk讀取資料檔案列表

char *dir_path = "/mnt"; DIR *dir = opendir(dir_path); if (dir == NULL) { LOGD("open dir error!"); return -1; }

linux迴圈遍歷資料所有檔案

demofun(){ for file in `ls $1` do if test -f $file then echo "file: $file" elif test -d $file then

C#中遍歷指定資料檔案或子檔案

今天用到查詢給定路徑下的所有檔案,記錄一下: 1、引入IO名稱空間 using System.IO; 2、用到的主要方法: DirectoryInfo folder = new DirectoryInfo(filePath); DirectoryInfo.GetFiles():獲取目錄中所有

遞迴遍歷資料所有檔案

遞迴遍歷資料夾下所有檔案 程式碼塊 遞迴遍歷資料夾下所有檔案 package com.chow; import java.io.File; import java.util.ArrayList; /** * Created by zhouhaiming on 20

遍歷資料所有檔案的路徑

import os def traverse(f): fs = os.listdir(f) for f1 in fs: tmp_path = os.path.join(f, f1) if not os.path.isdir(tmp_path):