- Русские Блоги
- Относительный путь и абсолютный путь в проблеме перехода страницы JSP и сервлета
- link url html to jsp
- JSTL — Core Tag
- Attribute
- Example
- Русские Блоги
- Первое: используйте теги гиперссылок href
- Второй: отправка формы
- Третий тип: используйте RequestDispatcher.forward () (пересылка)
- Четвертое: используйте response.sendRedirect () (перенаправление)
- Пятое: используйте тег прямого действия
- Шестое: используйте метод setHeader ()
- Седьмое: используйте JavaScript
Русские Блоги
Относительный путь и абсолютный путь в проблеме перехода страницы JSP и сервлета
** 1. Относительный путь и абсолютный путь в JSP и сервлете **
Предпосылка: если ваш Http-адрес http://192.168.0.1/ ваше веб-приложение является тестовым, path = «/ test» тогда URL вашего веб-приложенияhttp://192.168.0.1/test/
Если файлы JSP и JS помещены в каталог WEB-INF, к ним вообще нельзя получить доступ. Если JSP помещается в каталог WEB-INF, к ним можно получить доступ через внутреннее перенаправление сервера (в основном для безопасности страницы ), но JS запрашивается с сервера через клиента, поэтому изображения и некоторые JS, CSS могут быть размещены только в структуре каталогов веб-приложения вне WEB-INF: test / web /
css/ js/
test.js
web-inf / classes / lib / user / a.jsp b.jsp images / web.xml
Существует файл html: a.html, который содержит , где атрибут href представляет собой ссылку Путь к файлу css. one.css: означает, что one.css и a.hmtl находятся в одном каталоге. user / one.css: означает, что one.css находится в подкаталоге user каталога, в котором расположен a.html, то есть пользователь a.html находится в том же каталоге. ../one.css: указывает, что one.css находится в каталоге верхнего уровня a.hmtl, ../../one.css: указывает, что one.css находится в каталоге верхнего уровня каталога верхнего уровня a.hmtl, ./: указывает на тот же каталог, что и a.hmtl. Мы называем указанный выше относительный путь относительным путем html.
1、 Адрес на стороне сервера Относительный адрес на стороне сервера относится к адресу, относящемуся к вашему веб-приложению. Этот адрес разрешается на стороне сервера (отличается от html иJavaScriptОни разрешаются клиентским браузером.) То есть относительные адреса в jsp и сервлете в это время должны быть относительно вашего веб-приложения, то есть относительноhttp://192.168.0.1/test/оф. Используются следующие места: forward: request.getRequestDispatcher (адрес) в сервлете; этот адрес анализируется на стороне сервера, поэтому, если вы хотите перенаправить на user / a.jsp, вы должны написать: request.getRequestDispatcher («/ user /a.jsp «) Это / относится к текущему тесту веб-приложения, и его абсолютный адрес:http://192.168.0.1/test/user/a.jsp. перенаправление: в jsp 2、 Адрес клиента Все относительные адреса в html относятся к http://192.168.0.1/, а не кhttp://192.168.0.1/test/оф. Адрес атрибута действия формы в Html должен быть относительно http://192.168.0.1/, поэтому, если он отправлен пользователю / a.jsp: action = «/ test / user / a.jsp»; отправить Это сервлет action = «/ test / handleservlet». Javascript также анализируется на стороне клиента, поэтому относительный путь такой же, как и в форме.3、Проблемы с корневым каталогом сайта и путями css (jsp — это программа на стороне сервера, адрес изменен, при ссылке обычно используется относительный путь к корневому каталогу сайта). Мы называем относительный путь, например, / test / . относительно корневого каталога сайта путь. Когда css вводится в jsp, если относительный путь относительно текущего файла jsp, а jsp пересылается в сервлете, который отличается от пути jsp, вы обнаружите, что стиль css не имеет никакого эффекта. Это связано с тем, что путь css при пересылке в сервлете является относительным путем относительно сервлета, а не путем JSP. Таким образом, в настоящее время вы не можете использовать такой путь в jsp: или Аналогично href = «one.css» и ../../one.css. Относительный путь HTML в HTML определяется относительно файла (a.jsp), который ссылается на этот css путь. При пересылке в сервлете это относительный путь относительно сервлета, потому что путь jsp и путь сервлета различны, поэтому такая ссылка должна быть неправильной. Итак, в это время используйте корневой каталог сайта, который находится относительно каталога http://192.168.0.1/, начиная с «/». Таким образом, указанную выше ошибку следует исправить в относительном каталоге корневого каталога сайта, аналогичном href = «/ test / one.css». Таким образом, после пересылки сервлета и в JSP это относительный путь относительно корневого каталога сайта, и определенный стиль css может использоваться правильно.
Проблема перехода на страницу:
Перенаправление высокое, а перенаправление низкое, потому что процесс перенаправления выглядит следующим образом: запрос1 отправляется на сервер, сервер возвращается обратно клиенту, затем
request2 затем отправляется на сервер. Но Forward обрабатывается только на стороне сервера и прозрачен для стороны клиента. Поскольку Redirect имеет две передачи, эффективность низкая. Scope: из-за request.setAttribute ( ), объект, который он несет, находится только в запросе, поэтому метод Redirect приведет к потере объекта, переносимого запросом.
Инструкции по применению:
1. sendRedirect
сервлет такой же, как в jsp
response.sendRedirect();
** 2. ** include Это также указанная выше форвардная форма, значение запроса будет сохранено
1) Внутри сервлета
request.getRequestDispatcher( «jsp2.jsp» ).include(request, response);
2) Внутри jsp
Описание Страница будет содержать содержимое как страницы 1, так и страницы 2, а адресная строка останется без изменений. Используйте содержимое request.setAttribute, вы можете использовать его как обычно
3. forword
1) Внутри сервлета
request.getRequestDispatcher («jsp2.jsp») .forward (запрос, ответ); 2) внутри jsp
Описание Страница будет содержимым страницы 2, а адресная строка не изменится. Используйте содержимое request.setAttribute, его можно использовать как обычно
3. Три случая использования относительных путей для ссылки на файлы JS и CSS в JSP.
** Первый случай ** Самый распространенный случай — запускать несколько проектов на tomcat, используйте имя проекта, чтобы различать, потому что мой URL-адрес:http://localhost/Название конструкции /home/index.jsp имеет еще одно имя проекта, поэтому добавьте , например:
Написание слишком хлопотно, вы можете добавить следующее содержимое вверху каждого файла jsp,
String path = request.getContextPath();
String basePath = request.getScheme()+»://» +request.getServerName()+»:»+request.getServerPort()+path+»/» ;
%>
» >
Вы можете использовать напрямую
** Во-вторых, прямой доступ к файлу jsp ** В реальном проекте, если на tomcat запущено несколько проектов, и IP-адрес используется для различения URL-адресов следующим образом:http://localhost/home/index.jsp Обратите внимание, что здесь осуществляется прямой доступ к файлам JSP (файлы jsp не находятся в web-inf, но могут быть доступны напрямую), а не к сервлетам или стойкам. test2.js и index.jsp помещаются в одну папку, для импорта файла JS с относительным путем можно использовать следующее:
index.jsp может найти файл test2.js
Третий случай: сервлет перенаправляется на jsp (jsp в web-inf, должен быть доступен сервлету или действию)
На основе второго случая, если несколько проектов запускаются на tomcat, они различаются по IP.
мыДоступ представляет собой действие сервлета или struts, а затем перенаправляется на **** index.jsp URL:http://localhost/***.do
URL:http://localhost/index.action
Это не для доступа к файлам JSP
Следующее нормально. / home / должен быть перед test2.js В реальных проектах существует больше всего действий для доступа к сервлетам или стойкам, поэтому здесь используется .
link url html to jsp
posted 6 years ago
Hi,
i have a stupide question !
how you link html page to jsp page, i do it like this but i have error 404.
this my index.html
also
this is the acceuil.jsp
in web.xml
posted 6 years ago
posted 6 years ago
I want to specify that my file index.html and in the directory «WebContent», while the JSP files are in the subdirectory «webContent / WEB-INF /», I have more JSP here, in fact it is hidden by The «WEB-INF» directory, how can I make the link between index.html and acceuil.jsp?
posted 6 years ago
As we discussed in an another thread, We can use a Controller to render the JSP file upon requesting a URL.But in this case if the JSP has to be accessed during run time publicly through a URL then place it out of WEB-INF. Correct the href link path according to the jsp file path.
Today is the first day of the rest of your life.
posted 6 years ago
Mohammed Sardar. wrote: As we discussed in an another thread, We can use a Controller to render the JSP file upon requesting a URL.But in this case if the JSP has to be accessed during run time publicly through a URL then place it out of WEB-INF. Correct the href link path according to the jsp file path.
tomcat, I nevertheless modify the web.xml, if I enter the address of home. Jsp in the browser I also have error 404.
Marshal
posted 6 years ago
If you are going to allow your users direct access to your JSPs (which is a bad idea) then you don’t have to declare them in web.xml. In fact you should not declare them in web.xml. Tomcat should resolve the JSP exactly the same way it would resolve a JPG file, for example.
But really you shouldn’t allow your users to request a JSP directly. Have them access a servlet which sets up request attributes and then forwards to the JSP. The JSP should only have code which formats and displays data from the request attributes, and all other code which decides what data should be sent back to the user and gets that data from databases and so on should be on the controlling servlet.
JSTL — Core Tag
The tag formats a URL into a string and stores it into a variable. This tag automatically performs URL rewriting when necessary. The var attribute specifies the variable that will contain the formatted URL.
The JSTL url tag is just an alternative method of writing the call to the response.encodeURL() method. The only real advantage the url tag provides is proper URL encoding, including any parameters specified by children param tag.
Attribute
The tag has the following attributes −
Attribute | Description | Required | Default |
---|---|---|---|
Value | Base URL | Yes | None |
context | / followed by the name of a local web application | No | Current application |
var | Name of the variable to expose the processed URL | No | Print to page |
scope | Scope of the variable to expose the processed URL | No | Page |
Example
This will produce the following result −
Русские Блоги
Первое: используйте теги гиперссылок href
перейти Например: Перейти перенаправить Например: перейти
Второй: отправка формы
—— действие может быть страницей jsp или маршрутом URL
Третий тип: используйте RequestDispatcher.forward () (пересылка)
request.getRequestDispatcher("newPage.jsp").forward(response,request); request.getRequestDispatcher("https://blog.csdn.net/weixin_43656426").forward(request,response);
Четвертое: используйте response.sendRedirect () (перенаправление)
response.sendRedirect ("newPage.jsp"); ------ страница jsp response.sendRedirect ("https://blog.csdn.net/weixin_43656426"); ----- путь к URL
Пятое: используйте тег прямого действия
Шестое: используйте метод setHeader ()
response.setCharacterEncoding("utf-8"); response.setHeader("iso-8859-1","utf-8"); request.setCharacterEncoding("utf-8"); response.setHeader("Refresh","5;url=newPage.jsp"); response.setHeader ("Обновить", "Количество секунд ожидания; url = абсолютный путь или относительный путь"); Проблема пути такая же, как и с sendredirect. Нет никакого мнения об абсолютном пути и относительном пути. Этот код должен подождать 5 секунд перед прыжком
Седьмое: используйте JavaScript
Js page jump (родительская страница, внешняя страница, эта страница)
«window.location.href», «location.href» — переход на эту страницу
«parent.location.href» — переход на предыдущую страницу.
«top.location.href» — переход к самой внешней странице.
Пользовательский скачок времени (метод 1):
Затем добавьте index.asp в качестве страницы, на которую хотите перейти.
Пользовательский скачок времени (метод второй):
Система автоматически перейдет к новому URL-адресу через секунд позже, в случае сбоя Нажмите .