1

私はhome.jspページと連絡先ページを持っていますが、私たちに関係するのは次のようなhome.jspページです:

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@ page contentType="text/html;charset=windows-1252"%>
<%@ page import="javax.faces.context.FacesContext" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

<f:view>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>
    <title>home</title>
  </head>
  <body>

<%   
    response.sendRedirect("contact.jsp");
%>
  </body>

</html>
</f:view>

ファイルweb.xmlコード:

<?xml version = '1.0' encoding = 'windows-1252'?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee">
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/home.jsp</url-pattern>
  </servlet-mapping>
</web-app>

home.jsp をロードすると、contact.jsp ではなく空白のページが返されます

4

1 に答える 1

2

まず第一に、このコードをどのページにも絶対に入れたくありません。

<%   
    response.sendRedirect("something.jsp");
%>

「home.jsp」へのアクセス時に「contact.jsp」にリダイレクトしたい場合は、フィルターで行う必要があります。

public class MyAppFilter implements Filter {

    public void init(FilterConfig filterConfig) throws ServletException {
}

    public void destroy() {
}

    public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain filterChain) throws IOException, ServletException {
        if ((request instanceof HttpServletRequest) && (response instanceof HttpServletResponse)) {
            HttpServletRequest httpServletRequest = (HttpServletRequest) request;
            HttpServletResponse httpServletResponse = (HttpServletResponse) respo
            String requestPath = httpServletRequest.getRequestURI();
            //check if the URL contains <anything>/home.jsp
            if (requestPath.contains("home.jsp")) {
                 //if that's the case, redirect to another page
                 httpServletResponse.sendRedirect("/SportABAWeb/jsf/Esquema.jsf");
                 return;
            }
        }
        filterChain.doFilter(request, response);
    }
}

Web アプリケーションでフィルターを構成する必要があります。Java EE 6 Web アプリケーション サーバー (GlassFish 3.x など) または Java EE 6 サーブレット コンテナー (Tomcat 7 など) を使用すると仮定すると、このタグをクラスに追加してフィルターにすることができます。

@WebFilter(filterName = "MyAppFilter", urlPatterns = {"/*"})
public class MyAppFilter implements Filter {
    //filter implementation...
}

そうでない場合は、web.xml で構成する必要があります。

<filter>
    <filter-name>MyAppFilter</filter-name>
    <filter-class>my.package.MyAppFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>MyAppFilter</filter-name>
    <servlet-name>*.jsp</servlet-name>
</filter-mapping>
于 2012-10-14T22:46:26.073 に答える