Java 关于URL编码器和URL解码器的一些问题?

Java 关于URL编码器和URL解码器的一些问题?,java,encoding,urlencode,Java,Encoding,Urlencode,我已经阅读了URLEncoder和URLEcoder的javadocs。然后变得更加好奇。将服务器视为Tomcat。在任何Web应用程序中,只要我们提交 表单服务器将表单字段转换为urlencoded字段,当我们请求.getParameter(“fieldName”)时。服务器再次使用URL解码器对其进行解码。 对吗?是服务器还是浏览器?当我们在地址栏中键入任何url时,同样的事情会发生吗如果服务器或浏览器执行此操作 当我们需要在URLEncoder和URLDecoder的帮助下对请求参数进行显

我已经阅读了URLEncoder和URLEcoder的javadocs。然后变得更加好奇。将服务器视为Tomcat。在任何Web应用程序中,只要我们提交 表单服务器将表单字段转换为urlencoded字段,当我们请求.getParameter(“fieldName”)时。服务器再次使用URL解码器对其进行解码。 对吗?是服务器还是浏览器?当我们在地址栏中键入任何url时,同样的事情会发生吗如果服务器或浏览器执行此操作
当我们需要在URLEncoder和URLDecoder的帮助下对请求参数进行显式编码或解码时?
虽然这些是基本问题,但无法清楚地找到这些答案。

虽然浏览器确实在将URL传递给web服务器之前对其进行编码,但可能没有浏览器的参与

e、 g.您的服务器应用程序可能正在进行基于REST的调用,并在一个简单的GET请求中传递一些数据。然后,若你们不在你们的服务器上编码,当接收者解码它时,它可能会变得乱码

因此,强烈建议在服务器代码中发送URL之前,始终对其进行编码

在任何Web应用程序中,每当我们提交表单时,服务器都会将表单字段转换为URL编码的字段,当我们请求.getParameter(“fieldName”)时

不,是浏览器做的

服务器再次使用URL解码器对其进行解码。对吗

是服务器还是浏览器

浏览器

当我们需要对请求参数进行编码或解码时,服务器或浏览器是否会这样做 在URLEncoder和URLEcoder的帮助下


我不知道这意味着什么,但它仍然是浏览器。如果从应用程序代码发送请求,则只需对请求参数进行编码。如果您在servlet容器中运行,则根本不需要对它们进行解码:它会为您进行解码。

您好,anubhava从回答中可以看出,我们在浏览器中键入url,默认情况下浏览器会进行编码。在我从servlet执行response.redirect时看到的代码中,它没有对请求参数进行编码。但如果浏览器执行编码,则默认情况下不应响应。重定向也执行编码,因为在重定向请求被视为从浏览器触发的情况下?正如您对
response.encodeRedirectURL()的评论
它是为了对指定的URL进行编码,以便在sendRedirect方法中使用,或者如果不需要编码,则返回URL不变。anubhava在某一点上说,所有其他字符都是不安全的,并且首先使用某种编码方案将其转换为一个或多个字节,为什么所有其他角色都被认为是不安全的。这是因为黑客可以对这些角色进行一些操作,就像他们可以在角色的位置嵌入一些任意的东西一样。是吗?@MSach:我认为这与黑客无关。这里有一个定义,它在URI中定义了一组允许的字符。除了那些安全的字符集之外,其余的字符集都需要编码,这就是Java doc调用的
所有其他字符都被认为是不安全的
当您回答我们在浏览器中键入url时,默认情况下浏览器会进行编码。在我从servlet执行response.redirect时看到的代码中,它没有对请求参数进行编码。但如果浏览器执行编码,则默认情况下不应响应。重定向也执行编码,因为在重定向请求被视为从浏览器触发的情况下?看起来像是响应。重定向不会对请求参数进行编码,因为响应中有单独的方法,即response.encodeRedirectURL