如何在Servlet中加密Url?何

时间:2013-10-23 18:54:30

标签: java servlets

我想在servlet中加密我的Url。请检查下面的代码

的TestServlet

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'");

2 个答案:

答案 0 :(得分:0)

我认为你需要的是POST而不是GET。无论如何,您可以在添加请求时加密您的请求参数并在使用之前解密。我认为没有直接的方法可以做到这一点。

PS:我认为你对url编码的使用感到困惑。 http://www.w3schools.com/tags/ref_urlencode.asp

答案 1 :(得分:0)

你的问题意味着你想以某种方式加密参数,但是在细节上它似乎并不那样。

如果您不希望显示参数,请使用其他人所说的POST请求。 POST请求在请求正文中而不是在查询字符串中发送参数。 Servlet容器可以通过doGet和doPost来处理。

如果您想使用GET请求,但不希望参数以纯文本格式显示,则可以使用Base64之类的编码,然后使用URL编码对参数进行编码。请注意,这仅仅模糊了文本,并且绝不是安全措施。

如果要加密服务器与客户端之间的通信,请使用SSL

如果您确实想要自己加密参数,则可能需要使用公钥加密来自行完成。我知道没有开箱即用的解决方案,可能是因为它不是应用程序需要经常做的事情。