2012-03-14 1 views
0

У меня проблемы с перенаправлением и сервлетами в Google App Engine. У меня есть index.jsp и list.jsp, но я не могу получить ожидаемые результаты.Google App Engine (Java) - перенаправление на jsp из web.xml

У меня есть это в web.xml:

<filter-name>URIParserFilter</filter-name> 
    <filter-class>com.bbva.icaro2.web.filters.URIParserFilter</filter-class> 
</filter> 

<servlet> 
    <servlet-name>EntitiesAdminServlet</servlet-name> 
    <servlet-class>com.myproject.web.EntitiesAdminServlet</servlet-class> 
</servlet> 
<servlet> 
    <servlet-name>ListServlet</servlet-name> 
    <servlet-class>com.myproject.web.ListServlet</servlet-class> 
    <jsp-files>/lists/lists.jsp</jsp-files> 
</servlet> 

<servlet-mapping> 
    <servlet-name>EntitiesAdminServlet</servlet-name> 
    <url-pattern>/admin/entities/*</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>ListServlet</servlet-name> 
    <url-pattern>/lists/*</url-pattern> 
</servlet-mapping> 


<welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 

Когда я получить доступ к http://myproject/lists/mylist Резьба идет к URIParserFilter:

public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { 
    String entityKind = null; 
    String id = null; 
    String pathInfo = ((HttpServletRequest)req).getPathInfo(); 
    String pathString = (pathInfo == null || pathInfo.equals("/")) ? "" : pathInfo.substring(1); 
    String[] parts = pathString.split("/"); 

    entityKind = parts[0].trim(); 
    id = (parts.length > 1) ? parts[1].trim() : null; 

    req.setAttribute(Constants.REQ_ATTR_REQ_ENTITYKIND, entityKind); // entityKind = "mylist" 
    req.setAttribute(Constants.REQ_ATTR_REQ_ENTITYID, id); 

    chain.doFilter(req, resp); 
} 

И тогда он идет к list.jsp пройти через whitout ListServlet :-( В случае http://myproject/admin/entities/hello это работает!

Классы точно такие же ...

Что я делаю неправильно?

Спасибо, и извините за мой плохой английский ...

ответ

1

написать только <jsp-files> с URL-адрес pattern.it будет перенаправлять файл JSP.

<servlet> 
<servlet-name>MyServlet</servlet-name> 
<servlet-class>com.uks.MyServlet</servlet-class> 
<jsp-files>/jsp/my.jsp</jsp-files> 
</servlet> 

<servlet-mapping> 
<servlet-name>MyServlet</servlet-name> 
<url-pattern>/MyServlet</url-pattern> 
</servlet-mapping> 
+0

IThanks для вашего ответа, он перенаправляет на мой Jsp «lists.jsp», но поток не проходит через мой сервлет: ListServlet – tpdeoro

+0

то вы хотите перенаправить внутри кода сервлета с помощью RequestDispatcher. –

+0

Но ... Это происходит из URIParserFilter.doFilter() непосредственно в "lists.jsp", как я могу заставить его пройти через мой сервлет, чтобы перенаправить его? Я думаю, что у меня что-то не так в моем web.xml, но я не знаю, что – tpdeoro

0

Сделайте пересылку из своего сервлета на страницу jsp. Не сопоставляйте jsp в web.xml.

Так что все, что вам нужно в сервлет, а затем:

String destination = "/jsp/my.jsp"; 
RequestDispatcher rd = getServletContext().getRequestDispatcher(destination); 
rd.forward(request, response);