url кодиране в java?

Искам да знам какво е url кодиране. Имам 2 jsp страници и един сървлет. Когато стартирам приложението, показваният 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 кодирането? Как мога да кодирам 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);

result.jsp

displays data here


person sujit    schedule 23.04.2012    source източник
comment
моля някой да даде отговор на въпроса ми   -  person sujit    schedule 23.04.2012
comment
Дори опитахте ли да го търсите в Google? en.wikipedia.org/wiki/URL_Encoding   -  person home    schedule 23.04.2012
comment
Възможен дубликат: stackoverflow.com/questions/8713208/ (Вижте втория отговор)   -  person blackcompe    schedule 23.04.2012
comment
да, търсих в Google, но не получих отговори на въпроса си...там намерих объркващи теми и не се доближаваха до въпроса ми..ако знаете, моля, помогнете ми малко, като публикувате отговора си, как мога да кодирам url ?   -  person sujit    schedule 23.04.2012
comment
Просто потърсете „java url кодиране“...   -  person home    schedule 23.04.2012
comment
@blackcompe можеш ли да ми помогнеш, като напишеш Balus код на scriplets, използвам скриптове в jsp, а не в jstl, обърквам се в jstl и го уча   -  person sujit    schedule 23.04.2012
comment
да, търся, но наистина не получавам отговор на въпроса си   -  person sujit    schedule 23.04.2012
comment
URL кодирането не е отговорът на който и да е проблем, който сте описали тук.   -  person user207421    schedule 23.04.2012
comment
@sujit: Би трябвало да можете да се оправдаете с информацията, която предоставих.   -  person blackcompe    schedule 23.04.2012
comment
@EJP Видях за някои уязвими атаки на уебсайтове чрез url, така че как да защитя url? чрез кодиране на url или има някакви други методи?   -  person sujit    schedule 23.04.2012
comment
@blackcompe Получих отговора ви, но в моето приложение, т.е. http://localhost:8080/myproject/index.jsp трябва да се формира към друг url като http://localhost:8080/myproject/rrwr%f$$%ddsd? не мога да конвертирам отговора ви в моето уеб приложение   -  person sujit    schedule 23.04.2012
comment
Решение на какво? Предлагам ви да намалите въпроса си до нещо, на което действително може да се отговори. URLEncoding също не е решение за уязвимости на уебсайтове. Изглежда сте се фиксирали върху „решение“, без дори да решите какъв е проблемът.   -  person user207421    schedule 23.04.2012
comment
@EJP добре, казвам ви, че много пъти, докато посещавате URL адреса на уебсайтове, бихте видели така: http://www.xyz.com/index.jsp?erwerc%frefrr_55%...като това, какво е това?erwerc.... как това идва след index.jsp?   -  person sujit    schedule 23.04.2012
comment
@sujit Това са URL аргументи и те наистина са URL кодирани. Това отново не е нещо, което изисква „решение“.   -  person user207421    schedule 23.04.2012
comment
@EJP..зададох същия въпрос, т.е. как мога да форматирам url така, че да изглежда като горния, т.е. http://localhost:8080/myproject/index.jsp?wwffwfrf%_%dffrfewr... така...искам този тип кодиране на url...има ли начин как да го направя? Моля, EJP   -  person sujit    schedule 23.04.2012


Отговори (3)


Има два вида кодиране: кодиране на HTML формуляр и Пренаписване на URL адрес.

При кодирането на формуляр URL низът се преобразува във валиден ASCII формат, който е готов за интернет. От URLEncoder.encode(String, String) документи:

Превежда низ във формат application/x-www-form-urlencoded, използвайки специфична схема за кодиране. Този метод използва предоставената схема за кодиране, за да получи байтовете за опасни знаци.

Вторият вид е пренаписване на URL. URL низът е кодиран с идентификатор на сесия, в случай че браузърът на клиента не поддържа (или е деактивирал) бисквитки или проследяване на сесия. От HttpServletResponse .encodeURL(String) документи:

Кодира посочения URL адрес, като включва идентификатора на сесията в него или, ако не е необходимо кодиране, връща URL адреса непроменен. Изпълнението на този метод включва логиката за определяне дали идентификаторът на сесията трябва да бъде кодиран в URL адреса. Например, ако браузърът поддържа бисквитки или проследяването на сесията е изключено, URL кодирането не е необходимо.

person blackcompe    schedule 23.04.2012
comment
благодаря blackcompe за вашия отговор...така че във формата в index.jsp, трябва ли да пиша така: <form action="Myservlet?some encoding">? - person sujit; 23.04.2012
comment
@sujit: Какъв тип кодиране искате да направите? Форма или пренаписване? - person blackcompe; 23.04.2012
comment
@blackcompe.....искам URL кодиране, а не кодиране на формата, как мога да кодирам urlhttp://localhost:8080/myproject/index.jsp? така че да бъде защитен от уязвими атаки? - person sujit; 23.04.2012
comment
@sujit: Кодиране на формуляр: <form action="<%= new URLEncoder().encode(myURL, "UTF-8") %>">, пренаписване на URL: <form action="<%= request.encodeURL(myURL) %>">. - person blackcompe; 23.04.2012
comment
Нито едно от тях няма да ви помогне да се предпазите от атаки. Това е напълно извън темата. - person blackcompe; 23.04.2012

Мисля, че имате неразбиране тук. Нито HTML Form Encoding, нито URL Re-writing са за това, което искате да постигнете.

Ако искате да постигнете като.

Например: вместо да пишете http://localhost:8080/search.jsp?xxx потребителят ще види http://http:/localhost:8080/search?xxx

Можете да създадете съпоставяне на сервлет по следния начин:

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

Url моделът трябва да бъде редактиран, за да отговаря на вашите нужди. Разбира се, трябва да създадете сървлета, за да картографирате URL адреса към действителния jsp. Тази техника се използва от повечето MVC рамки.

Прочетете повече за Как да разработите JSP/Servlets Web App с помощта MVC модел?

person Hardik Mishra    schedule 23.04.2012
comment
благодаря Хардик за отговора ти.. сервлетът върви добре, т.е. localhost:8080/search, но за jsp как мога да покажа като това: localhost:8080/search (не 8080/search.jsp)? мога ли да направя нещо в web.xml? - person sujit; 23.04.2012
comment
Точно както картографираме сървлети към url в web.xml, вие трябва да картографирате jsp страница с конкретен URL модел в web.xml. - person Sorter; 02.02.2013

Използвайте java.net.URLEncoder.encode(s, "UTF-8"), където s е низът за кодиране.

Това се изисква винаги, когато изпращаме текст като сегменти от пътя, аргументи на низ на заявка и т.н.

Пример: вижте документацията

person Jose Manuel Gomez Alvarez    schedule 10.07.2014