0

我想知道什么是url encoding。我有 2 个 jsp 页面和一个 servlet。当我运行应用程序时,显示的 url 是:

http://localhost:8080/myproject/index.jsp

在哪里

索引.jsp:

<form action="Myservlet" method="post">
    <input type="text" name="mytext" id="mytext"/>
    <input type="submit" value="submit"/>
</form>

单击提交按钮后,显示的 URL 为:

http://localhost:8080/myproject/Myservlet

URL编码的含义是什么?如何编码网址?

index.jsp去 到Myservlet然后 到result.jsp

Myservet#doPost // 我需要在这里做 URL 编码吗?如果是怎么办?

  fetching data from db.......
  ....................
  String nextJSP = "/result.jsp";
  RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(nextJSP);
  dispatcher.forward(request,response);

结果.jsp

displays data here

4

3 回答 3

7

有两种类型的编码:HTML 表单编码URL 重写

在表单编码中,URL 字符串被转换为 Internet 就绪的有效 ASCII 格式。从URLEncoder.encode(String, String)文档:

使用特定的编码方案将字符串转换为 application/x-www-form-urlencoded 格式。此方法使用提供的编码方案来获取不安全字符的字节。

第二种是 URL 重写。URL 字符串使用会话 ID 进行编码,以防客户端浏览器不支持(或禁用)cookie 或会话跟踪。从HttpServletResponse.encodeURL(String)文档:

通过在其中包含会话 ID 对指定的 URL 进行编码,或者,如果不需要编码,则返回未更改的 URL。此方法的实现包括确定是否需要在 URL 中编码会话 ID 的逻辑。例如,如果浏览器支持 cookie,或者会话跟踪被关闭,则 URL 编码是不必要的。

于 2012-04-23T08:16:24.633 回答
2

我想你在这里有误解。既不是HTML Form Encoding也不URL Re-writing是你想要达到的目标。

如果要实现就好了。

例如:用户不会输入http://localhost:8080/search.jsp?xxx而是看到 http://localhost:8080/search?xxx

您可以像这样创建一个 servlet 映射:

<servlet-mapping>
   <servlet-name>MappingServlet</servlet-name>
   <url-pattern>path/*</url-pattern>
 </servlet-mapping>

必须编辑 url 模式以满足您的需要。您当然需要创建 servlet 以便将 url 映射到实际的 jsp。大多数 MVC 框架都使用这种技术。

阅读更多关于 如何使用 MVC 模式开发 JSP/Servlets Web App?

于 2012-04-23T08:54:57.583 回答
1

使用java.net.URLEncoder.encode(s, "UTF-8")wheres是要编码的字符串。

每当我们将文本作为路径段、查询字符串参数等发送时,这都是必需的……

示例:查看文档

于 2014-07-10T22:42:02.087 回答