2013-10-23 36 views
0

我想我的網址中的servlet的TestServlet如何加密網址的Servlet中?何

public class TestServlet extends HttpServlet { 
    public void doGet(HttpServletRequest request,HttpServletResponse response) 
     throws IOException { 
     String url"Test2?name=bhanuprasd"; 
     response.sendRedirect(url); 
    } 
} 

的Test2

public class Test2 extends HttpServlet { 
    public void doGet(HttpServletRequest request,HttpServletResponse response) 
     throws IOException { 
     System.out.println("calling my first servlet"); 
     String name = request.getParameter("name"); 
     response.getWriter().print("hello"+name); 
    } 
} 

時進行加密。請檢查下面

我的代碼我的請求重定向到我的頁面在瀏覽器中它的顯示名稱是這樣的

**http://MyServer/Test/Test2?name=bhanuprasd** 

我不想在瀏覽器中顯示名稱我該怎麼做。我嘗試這種方式,但不工作

String url=java.net.URLEncoder.encode("Test2?name='bhanuprasd'"); 
String url1 =response.encodeRedirectUrl("Test2?name='bhanuprasd'"); 
+0

可能你需要使用'doPost()'方法而不是'doGet()' – Smit

+0

感謝您的重播,但是當我重定向頁面時我如何告訴服務器post方法默認情況下是GET方法..請幫助我 – user2893081

+0

'doGet()'和'doPost'幾乎相同。只需更改方法名稱,我認爲你會好起來的。請參閱Java Servlets中的doGet()中的文章[doPost()) - 有什麼區別?](http://java-demos.blogspot.com/2012/10/dopost-in-doget-in-java-servlets.html) – Smit

回答

0

你的問題意味着你想以某種方式加密參數,但在詳細說明它似乎並不那樣。

如果您不想顯示參數,請像其他人說的那樣使用POST請求。 POST請求在請求的主體中發送參數,而不是在查詢字符串中。 Servlet容器可以通過doGet和doPost處理。

如果您想使用GET請求,但不希望參數以明文形式出現,則可以使用Base64之類的編碼,然後使用URL編碼對參數進行編碼。請注意,這僅僅掩蓋了文字,並不以任何方式成爲安全措施。

如果要加密服務器和客戶端之間的通信,請使用SSL

如果你真的想自己加密參數,你可能需要使用公鑰加密來做到這一點。對於我所知道的這種解決方案沒有任何開箱即用的理由,可能是因爲這不是應用程序需要經常執行的操作。