кодировка 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
Вы хоть гуглить пробовали? en.wikipedia.org/wiki/URL_Encoding   -  person home    schedule 23.04.2012
comment
Возможный дубликат: stackoverflow.com/questions/8713208/ (см. второй ответ)   -  person blackcompe    schedule 23.04.2012
comment
да, я погуглил, но я не получил ответов на свой вопрос ... там я нашел запутанные темы и не подошел к моему вопросу ... если вы знаете, тогда, пожалуйста, помогите мне немного, опубликовав свой ответ, как я могу закодировать URL ?   -  person sujit    schedule 23.04.2012
comment
Просто выполните поиск по запросу "java url encoding" ...   -  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..i задал тот же вопрос, т.е. как я могу отформатировать 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-адреса кодируется идентификатором сеанса в случае, если клиентский браузер не поддерживает (или отключил) файлы cookie или отслеживание сеанса. Из HttpServletResponse .encodeURL (String) документы:

Кодирует указанный URL-адрес, включая в него идентификатор сеанса, или, если кодирование не требуется, возвращает URL-адрес без изменений. Реализация этого метода включает в себя логику для определения необходимости кодирования идентификатора сеанса в URL-адресе. Например, если браузер поддерживает файлы cookie или отключено отслеживание сеансов, кодирование 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 / сервлетов с использованием Шаблон MVC?

person Hardik Mishra    schedule 23.04.2012
comment
спасибо Hardik за ваш ответ..сервлет идет нормально, т.е. 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