Java 如何在Servlet中加密Url?呵呵

Java 如何在Servlet中加密Url?呵呵,java,servlets,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

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

我想你需要的是邮寄而不是索取。无论如何,您可以在添加请求参数时对其进行加密,并在使用它们之前进行解密。我不认为有直接的方法可以做到这一点

PS:我想你对url编码的用法感到困惑。

您的问题暗示您希望以某种方式加密参数,但在细节上似乎不是这样

如果您不想显示参数,请使用POST请求,正如其他人所说。POST请求在请求体中而不是在查询字符串中发送参数。Servlet容器可以通过doGet和doPost处理这两种情况

如果希望使用GET请求,但不希望参数以明文形式显示,则可以使用类似URL编码的编码对参数进行编码。请注意,这只会模糊文本,而不是任何安全措施

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


如果您确实想对参数本身进行加密,则可能需要使用公钥加密自己进行加密。据我所知,目前还没有现成的解决方案,这可能是因为应用程序并不经常需要这样做

可能您需要使用
doPost()
方法,而不是
doGet()
感谢您的重播,但是当我重定向页面时,如何告诉服务器默认情况下的post方法是go to GET方法。请帮助我
doGet()
doPost
的工作原理几乎相同。只要更改方法名称,我想你会没事的。见第条可能的副本