2012-04-23 62 views
0

我想知道什么是url编码。 我有2个jsp页面和一个servlet。 当我运行的应用程序中显示的网址是:在java中的url编码?

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

其中

的index.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.jspMyservlet然后result.jsp

Myservet#的doPost //我需要在这里做URL编码?如果是的话如何?

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

result.jsp中

displays data here

+0

请有人给一些回答我的问题 – sujit 2012-04-23 07:46:38

+0

你甚至尝试谷歌吗? http://en.wikipedia.org/wiki/URL_Encoding – home 2012-04-23 07:52:27

+0

可能重复:http://stackoverflow.com/questions/8713208/how-to-encode-a-url-with-the-special-character-percentage(见第二个响应) – blackcompe 2012-04-23 07:53:58

回答

5

有两种类型的编码:HTML form encodingURL re-writing

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

平移一个字符串转换为应用/ X WWW的form-urlencoded格式 使用特定的编码方案。此方法使用提供的 编码方案来获取不安全字符的字节。

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

通过包括在它的会话ID进行编码指定的URL,或者,如果不需要 编码,返回URL不变。该方法的实现 包括用于确定会话ID 是否需要在URL中编码的逻辑。例如,如果浏览器支持 Cookie,或者会话跟踪已关闭,则URL编码为 不必要。

+0

感谢blackcompe为您的答案...所以在index.jsp中的形式,我应该这样写:'

'? – sujit 2012-04-23 08:19:30

+0

@sujit:你想要做什么类型的编码?表格还是重写? – blackcompe 2012-04-23 08:23:53

+0

@blackcompe .....我想URL编码不形式编码,我如何编码url'http:// localhost:8080/myproject/index.jsp'?这样就可以保护它免受脆弱的攻击? – sujit 2012-04-23 08:28:49

1

我想你在这里有误会。 HTML Form EncodingURL 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框架所使用。

了解更多关于 How to develop JSP/Servlets Web App using MVC pattern?

+0

感谢Hardik为您的answer.servlet即将到来,即http:// localhost:8080/search,但对于jsp我如何显示像这样:http:// localhost:8080/search(not 8080/search.jsp)?我可以在web.xml中做些什么吗? – sujit 2012-04-23 09:34:13

+0

就像我们将servlet映射到web.xml中的url一样,您必须将jsp页面映射到web.xml中的特定url模式。 – Sorter 2013-02-02 13:33:08

1

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

每当我们发送文本路径段,查询字符串参数等,这是必需...

例子:see the documentation