2012-04-23 38 views
0

我想知道什麼是url編碼。 我有2個jsp頁面和一個servlet。 當我運行的應用程序中顯示的網址是:在java中的url編碼?

http://localhost:8080/myproject/index.jsp

其中

的index.jsp:

<form action="Myservlet" method="post"> 
    <input type="text" name="mytext" id="mytext"/> 
    <input type="submit" value="submit"/> 
</form> 

提交按鈕被點擊所顯示的URL後:

http://localhost:8080/myproject/Myservlet

URL編碼是什麼意思?我如何編碼網址?

index.jspMyservlet然後result.jsp

Myservet#的doPost //我需要在這裏做URL編碼?如果是的話如何?

fetching data from db....... 
    .................... 
    String nextJSP = "/result.jsp"; 
    RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(nextJSP); 
    dispatcher.forward(request,response); 

result.jsp中

displays data here

+0

請有人給一些回答我的問題 – sujit 2012-04-23 07:46:38

+0

你甚至嘗試谷歌嗎? http://en.wikipedia.org/wiki/URL_Encoding – home 2012-04-23 07:52:27

+0

可能重複:http://stackoverflow.com/questions/8713208/how-to-encode-a-url-with-the-special-character-percentage(見第二個響應) – blackcompe 2012-04-23 07:53:58

回答

5

有兩種類型的編碼:HTML form encodingURL re-writing

在表單編碼中,URL字符串被轉換爲可以上網的有效ASCII格式。從URLEncoder.encode(String, String)文檔:

平移一個字符串轉換爲應用/ X WWW的form-urlencoded格式 使用特定的編碼方案。此方法使用提供的 編碼方案來獲取不安全字符的字節。

第二種是URL重寫。如果客戶端瀏覽器不支持(或已禁用)cookie或會話跟蹤,則URL字符串會使用會話ID進行編碼。從HttpServletResponse.encodeURL(String)文檔:

通過包括在它的會話ID進行編碼指定的URL,或者,如果不需要 編碼,返回URL不變。該方法的實現 包括用於確定會話ID 是否需要在URL中編碼的邏輯。例如,如果瀏覽器支持 Cookie,或者會話跟蹤已關閉,則URL編碼爲 不必要。

+0

感謝blackcompe爲您的答案...所以在index.jsp中的形式,我應該這樣寫:'

'? – sujit 2012-04-23 08:19:30

+0

@sujit:你想要做什麼類型的編碼?表格還是重寫? – blackcompe 2012-04-23 08:23:53

+0

@blackcompe .....我想URL編碼不形式編碼,我如何編碼url'http:// localhost:8080/myproject/index.jsp'?這樣就可以保護它免受脆弱的攻擊? – sujit 2012-04-23 08:28:49

1

我想你在這裏有誤會。 HTML Form EncodingURL Re-writing都不是你想要達到的。

如果你想實現像。

例如:而不是鍵入http://localhost:8080/search.jsp?xxx用戶將看到http:/localhost:8080/search?xxx

您可以創建這樣一個servlet映射:

<servlet-mapping> 
    <servlet-name>MappingServlet</servlet-name> 
    <url-pattern>path/*</url-pattern> 
</servlet-mapping> 

URL模式必須進行編輯,以滿足您的需求。您當然需要創建servlet以將url映射到實際的jsp。這種技術被大多數MVC框架所使用。

瞭解更多關於 How to develop JSP/Servlets Web App using MVC pattern?

+0

感謝Hardik爲您的answer.servlet即將到來,即http:// localhost:8080/search,但對於jsp我如何顯示像這樣:http:// localhost:8080/search(not 8080/search.jsp)?我可以在web.xml中做些什麼嗎? – sujit 2012-04-23 09:34:13

+0

就像我們將servlet映射到web.xml中的url一樣,您必須將jsp頁面映射到web.xml中的特定url模式。 – Sorter 2013-02-02 13:33:08

1

使用java.net.URLEncoder.encode(s, "UTF-8")其中s是編碼字符串。

每當我們發送文本路徑段,查詢字符串參數等,這是必需...

例子:see the documentation