日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

java servlet 路径_JavaServlet 路径书写总结

發布時間:2023/11/27 生活经验 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java servlet 路径_JavaServlet 路径书写总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在寫javaweb項目的時候,總會遇到路徑書寫的問題,現在將其作個總結。

在javaweb中需要書寫路徑的地方主要有這四大類:

客服端路徑

超鏈接

表單

重定向

服務器端路徑

轉發

包含

資源獲取路徑

servletContext獲取資源

ClassLoader獲取資源

Class獲取資源

路徑

現分別作介紹

其構建的javaweb如下:

1客服端路徑

A超鏈接

pageEncoding="UTF-8"%>

html?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN"?"http://www.w3.org/TR/html4/loose.dtd">

頁面A

這是絕對地址超鏈接

這是以"/"開頭的相對地址超鏈接

這是不以"/"開頭的相對地址超鏈接

B表單

pageEncoding="UTF-8"%>

html?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN"?"http://www.w3.org/TR/html4/loose.dtd">

Insert?title?here

username:

username:

username:

username:

username:

username:

C重定向

package?cn.ccnu.path;

import?java.io.IOException;

import?javax.servlet.ServletException;

import?javax.servlet.http.HttpServlet;

import?javax.servlet.http.HttpServletRequest;

import?javax.servlet.http.HttpServletResponse;

/*

*?重定向有三種路徑書寫方式

*??????1.絕對路徑

*??????2.以"/"開頭的相對路徑

*??????3.不以"/"開頭的相對路徑

*/

public?class?RedirectServlet?extends?HttpServlet?{

public?void?doGet(HttpServletRequest?request,?HttpServletResponse?response)

throws?ServletException,?IOException?{

response.sendRedirect("http://localhost:8080/javaee/jsp/b.jsp");

/*

*?2.以"/"開頭的相對路徑

*??????此時,/代表整個web工程的路徑,即http://localhost:8080/

*/

//??????response.sendRedirect("/javaee/jsp/b.jsp");

/*

*?3.不以"/"開頭的相對路徑

*??????此時是相對于當前資源的相對路徑

*??????當前資源路徑為:http://localhost:8080/javaee/RedirectServlet

*??????即表示:RedirectServlet在路徑http://localhost:8080/javaee之下

*??????而b.jsp在http://localhost:8080/javaee/jsp/b.jsp

*??????所以最終地址寫為:jsp/b.jsp

*/

//??????response.sendRedirect("jsp/b.jsp");

}

public?void?doPost(HttpServletRequest?request,?HttpServletResponse?response)

throws?ServletException,?IOException?{

doGet(request,?response);

}

}

2服務器端路徑

A請求轉發

package?cn.ccnu.path;

import?java.io.IOException;

import?javax.servlet.ServletException;

import?javax.servlet.http.HttpServlet;

import?javax.servlet.http.HttpServletRequest;

import?javax.servlet.http.HttpServletResponse;

/*

*?服務器端的路徑不能是絕對路徑,只能是相對路徑,也分為以/開頭和不以/開頭兩種

*??????1.以"/"開頭的相對路徑

*??????2.不以"/"開頭的相對路徑

*/

public?class?DispatcherServlet?extends?HttpServlet?{

public?void?doGet(HttpServletRequest?request,?HttpServletResponse?response)

throws?ServletException,?IOException?{

/*

*?1.以"/"開頭的相對路徑

*??????此時,/代表當前web項目,即:http://localhost:8080/javaee

*/

//??????request.getRequestDispatcher("/jsp/b.jsp").forward(request,?response);

/*

*?2.不以"/"開頭的相對路徑

*??????相對于當前資源的相對路徑

*??此時,當前資源的路徑為:http://localhost:8080/javaee/DispatcherServlet

*??所以要轉發去的資源的路徑以:http://localhost:8080/javaee開頭

*/

request.getRequestDispatcher("jsp/b.jsp").forward(request,?response);

}

public?void?doPost(HttpServletRequest?request,?HttpServletResponse?response)

throws?ServletException,?IOException?{

doGet(request,?response);

}

}

B請求包含

package?cn.ccnu.path;

import?java.io.IOException;

import?javax.servlet.ServletException;

import?javax.servlet.http.HttpServlet;

import?javax.servlet.http.HttpServletRequest;

import?javax.servlet.http.HttpServletResponse;

/*

*?請求包含不能書寫絕對地址,只能書寫相對地址

*??????1.以"/"開頭的相對路徑

*??????2.不以"/"開頭的相對路徑

*

*/

public?class?IncludeServlet?extends?HttpServlet?{

public?void?doGet(HttpServletRequest?request,?HttpServletResponse?response)

throws?ServletException,?IOException?{

/*

*?1.以"/"開頭的相對路徑

*??????此時,/代表當前web項目,即:http://localhost:8080/javaee

*/

//??????request.getRequestDispatcher("/jsp/b.jsp").include(request,?response);

/*

*?2.不以"/"開頭的相對路徑

*??????相對于當前資源的相對路徑

*??此時,當前資源的路徑為:http://localhost:8080/javaee/IncludeServlet

*??所以要轉發去的資源的路徑以:http://localhost:8080/javaee開頭

*/

request.getRequestDispatcher("jsp/b.jsp").include(request,?response);

}

public?void?doPost(HttpServletRequest?request,?HttpServletResponse?response)

throws?ServletException,?IOException?{

doGet(request,?response);

}

}

3資源獲取路徑

AServletContext獲取資源

package?cn.ccnu.path;

import?java.io.IOException;

import?java.io.InputStream;

import?java.util.Properties;

import?javax.servlet.ServletException;

import?javax.servlet.http.HttpServlet;

import?javax.servlet.http.HttpServletRequest;

import?javax.servlet.http.HttpServletResponse;

/*

*?ServletContext獲取資源必須是相對路徑,不能是絕對路徑,但不管是以/開頭,還是不以/開頭,

*?都是相對于當前資源的相對路徑

*

*/

public?class?ServletContextServlet?extends?HttpServlet?{

public?void?doGet(HttpServletRequest?request,?HttpServletResponse?response)

throws?ServletException,?IOException?{

String?path1?=?this.getServletContext().getRealPath("/a.properties");

String?path2?=?this.getServletContext().getRealPath("a.properties");

System.out.println(path1);

System.out.println(path2);

//輸出的地址一樣

}

public?void?doPost(HttpServletRequest?request,?HttpServletResponse?response)

throws?ServletException,?IOException?{

doGet(request,?response);

}

}

BClassLoader獲取資源

package?cn.ccnu.classloaderpath;

import?java.io.IOException;

import?java.io.InputStream;

import?java.util.Properties;

import?javax.servlet.ServletException;

import?javax.servlet.http.HttpServlet;

import?javax.servlet.http.HttpServletRequest;

import?javax.servlet.http.HttpServletResponse;

/*

*?ClassLoader類加載器不能通過絕對地址來加載資源,只能通過相對地址來加載資源

*?但相對地址不管前面加不加/都是相當于類路徑的相對地址

*

*/

public?class?ClassLoaderServlet?extends?HttpServlet?{

public?void?doGet(HttpServletRequest?request,?HttpServletResponse?response)

throws?ServletException,?IOException?{

/*

*?加了/,其地址是相對于類路徑的相對地址

*/

//??????InputStream?in?=?this.getClass().getClassLoader().getResourceAsStream("/cn/ccnu/classloaderpath/c.properties");

//??????Properties?prop?=?new?Properties();

//??????prop.load(in);

//??????System.out.println(prop.getProperty("url"));

/*

*?不加/,其地址是相對于類路徑的相對地址

*/

InputStream?in?=?this.getClass().getClassLoader().getResourceAsStream("cn/ccnu/classloaderpath/c.properties");

Properties?prop?=?new?Properties();

prop.load(in);

System.out.println(prop.getProperty("url"));

/*

*?總結:不能使用絕對地址,而只能只用相對地址

*?且不管加不加/的相對地址,都是相對于類路徑的相對地址

*

*/

}

public?void?doPost(HttpServletRequest?request,?HttpServletResponse?response)

throws?ServletException,?IOException?{

doGet(request,?response);

}

}

CClass獲取資源

package?cn.ccnu.classpath;

import?java.io.IOException;

import?java.io.InputStream;

import?java.util.Properties;

import?javax.servlet.ServletException;

import?javax.servlet.http.HttpServlet;

import?javax.servlet.http.HttpServletRequest;

import?javax.servlet.http.HttpServletResponse;

/*

*?Class讀取資源不能是絕對路徑,只能是相對路徑,又分為以/開頭或者是不以/開頭

*??????1.以/開頭的相對路徑

*??????2.不以/開頭的相對路徑

*/

public?class?ClassServlet?extends?HttpServlet?{

public?void?doGet(HttpServletRequest?request,?HttpServletResponse?response)

throws?ServletException,?IOException?{

/*

*?1.以/開頭的相對路徑

*??????此時的/代表類路徑,即:/javaee/WEB-INF/classes

*/

//??????InputStream?in?=?ClassServlet.class.getResourceAsStream("/cn/ccnu/classpath/b.properties");

//??????Properties?porp?=?new?Properties();

//??????porp.load(in);

//??????System.out.println(porp.getProperty("url"));

/*

*?2.不以/開頭的相對路徑

*??????此時相對的是:類ClassServlet.class的路徑,即:\javaee\WEB-INF\classes\cn\ccnu\classpath

*??????即:/javaee/WEB-INF/classes/cn/ccnu/classpath

*/

InputStream?in?=?ClassServlet.class.getResourceAsStream("b.properties");

Properties?porp?=?new?Properties();

porp.load(in);

System.out.println(porp.getProperty("url"));

}

public?void?doPost(HttpServletRequest?request,?HttpServletResponse?response)

throws?ServletException,?IOException?{

doGet(request,?response);

}

}

4路徑

要么以“*”開關,要么為“/”開頭,當通常情況看下,我們都會以"/"開頭。

Servlet的路徑跳轉

一、JSP跳轉到Servlet

1、相對路徑,如href="servlet/TestServlet"

如果寫成"/servlet/TestServlet"會報錯,因為第一個“/”表示的是【服務器根目錄】

2、絕對路徑,通過內置成員變量path實現,如href="/servlet/TestServlet"

path得到的是項目根目錄,如【http://localhost:8080/ServletDemo】

二、Servlet跳轉JSP1、請求重定向:response.sendRedirect(request.getContextPath()+"/xxx.jsp");

request.getContextPath()獲得項目根目錄,或者通過"../xxx.jsp"取得上層路徑得到

2、服務器內部轉發:

request.getRequestDispatcher("../xxx.jsp").forward(req,resp);

request.getRequestDispatcher("/test.jsp").forward(request, response); //斜線表示項目的根目錄

小結:Servlet都可以通過../xxx.jsp獲取路徑

三、web.xml的路徑

web.xml的必須以“/”開頭,“/”表示項目的根目錄

在JSP頁面上使用相對路徑和絕對路徑調用servlet

web.xml的必須以“/”開頭,“/”表示項目的根目錄

如果在Servlet中使用請求重定向方式跳轉到其他jsp頁面,則需要:

response.sendRedirect(request.getContextPath()+"/test.jsp");

服務器內部跳轉路徑:

request.getRequestDispatcher("/test.jsp").forward(request,response);//這里的斜線表示項目的根目錄

或者request.getRequestDispatcher("../test.jsp").forward(request,response);//“..”表示回到上層目錄也就是根目錄;

PS:如果帶一層路徑 如:/servlet/loginServlet,則內部轉發的時會從WebRoot/servlet/路徑下找jsp頁面,如果要轉發的頁面不在WebRoot/servlet/路徑下,則需要“..”回到上層或根目錄再定位到jsp頁面,如下:request.getRequestDispatcher("../test.jsp").forward(request,response);

如果要轉發的頁面在WebRoot/servlet/路徑下,則如下:request.getRequestDispatcher("/test.jsp").forward(request,response);

總結

以上是生活随笔為你收集整理的java servlet 路径_JavaServlet 路径书写总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。