0

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

测试服务程序

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

测试2

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

2 回答 2

0

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

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

于 2013-10-23T19:10:03.173 回答
0

您的问题暗示您想以某种方式加密参数,但在细节上似乎并非如此。

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

如果要使用 GET 请求,但不希望参数以明文形式出现,则可以使用Base64之类的编码,然后 URL 编码对参数进行编码。请注意,这只会掩盖文本,绝不是一种安全措施。

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

如果您真的想自己加密参数,您可能需要自己使用公钥加密来执行此操作。我知道没有开箱即用的解决方案,可能是因为这不是应用程序经常需要做的事情。

于 2013-10-23T19:16:20.930 回答