Как настроить файл приветствия (HTML / JSP) в контейнере Джерси
у меня есть проект веб-службы Jersey RESTful. Я настроил контейнер Джерси в web.в XML и все работает нормально.
в том же проекте я ввел одну HTML-страницу и включил в <welcome-file-list>
для обработки другого запроса non-REST. Но когда я обращаюсь к URL-адресу, файл приветствия не отображается.
после того, как я прокомментировал конфигурацию контейнера Джерси в web.в XML и развернуть приложение, на этот раз я я могу получить доступ к файлу приветствия.
Я использую Tomcat 7, JDK 7, Джерси 2.2 и Eclipse Juno. Как сделать файл приветствия работающим, когда Джерси настроил? Есть ли какие-либо ограничения с Джерси или мне нужно настроить по-другому, чтобы достичь этого?
мой web.в XML:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com /xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>My Service</display-name>
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.my.rest.service</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
</welcome-file-list>
</web-app>
7 ответов
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>com.webservice.services</display-name>
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.webservice.services</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/service/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
Попробуйте шаблон URL с другим путем, как указано выше (/service/*) для отдыха. Он работает и файл приветствия отображается при запуске сервера.
ваше текущее сопоставление сервлетов -
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/*</url-pattern>
, который перенаправляет все запросы в Джерси. поэтому, чтобы сделать страницу приветствия видимой, вам нужно сделать запись как
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest</url-pattern>
этот шаблон будет вызывать Джерси только для URL-адресов, таких как
http://localhost:8080/rest/
и таким образом url
http://localhost:8080/index.html
не будет перенаправлен на сервлет Джерси.
проект таргетинг же сценарий размещен наhttps://github.com/skohli0302/jims
в интернете.XML-код:
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/somethinghere/*</url-pattern>
</servlet-mapping>
вместо
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
вы можете иметь что-то вроде
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/index.html</url-pattern>
</servlet-mapping>
когда вы используете Джерси, все запросы направлены на сервлет Джерси, т. е. ServletContainer. Поэтому, если какой-либо запрос не соответствует ни одному сопоставленному классу rest, он выдает 404. Но вы всегда можете добавить фильтры сервлетов для перехвата входящего запроса. В зависимости от URL-адреса входящего HTTP-запроса(defualt/welcome и т. д.) Вы можете принять решение перенаправить его на страницу weclome:
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.sendRedirect("/welcome.jsp");
мне просто интересно знать, будет ли работать приведенный ниже пример?
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.sendRedirect("/welcome.jsp");
если это будет, где это sendRedirect()
называться? с сервлетом, так что если я не ошибаюсь, должен быть сервлет, который просто redirects
запрос first/default
страница, верно?
вы можете создать класс " API " и вставить анотацию в свой проект. ApplicationConfig Класс...
@ApplicationPath ("api") //анотация
public class ApplicationConfig расширяет приложение { }
после этого я создаю Класс "пользователи", которые остаются...
Класс UserApi
@Path ("users")//пользователь страницы анотации.
открытый класс UserApi {
.... mycode в дополнение страница....
@GET
@Path("list")
@Produces("application/json")
public String getUsuarios() throws Exception {
String json = new Gson().toJson(this.userD.listar());
return (json);
}
помните, что ваш корневой остаться проектом ... http://yourprojectpatc.com.br/api/users/list
используя" Postman " изменить для Json, чтобы отправить ваши данные