認証フィルタを作って、パラメータにparam=1が含まれている場合、リクエストで呼び出したサーブレットに遷移し、それ以外ならばエラーページに遷移するようにしたいです。下記のように書いたのですが、param=1以外でアクセスしてもエラーページに遷移しません。
フィルタのコード
package union; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class SampleFilter1 implements Filter { @Override public void destroy() { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; String param = req.getParameter("param"); if (param != "1") { ((HttpServletResponse)response).sendRedirect("/html/error.html"); } chain.doFilter(request, response); } @Override public void init(FilterConfig config) throws ServletException { } }
param=1だった場合呼び出されるサーブレット
package union; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author * */ public class SampleServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html; charset=UTF-8"); String disp = "/html/sample.html"; RequestDispatcher dispatch = request.getRequestDispatcher(disp); dispatch.forward(request, response); } }
web.xml
<web-app> <filter> <filter-name>sampleFilter1</filter-name> <filter-class>sampleFilter</filter-class> </filter> <filter-mapping> <filter-name>sampleFilter1</filter-name> <url-pattern>/sampleServlet</url-pattern> </filter-mapping> <servlet> <servlet-name>sampleServlet1</servlet-name> <servlet-class>sampleServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>sampleServlet</servlet-name> <url-pattern>/sampleServlet</url-pattern> </servlet-mapping> <!--エラーページ--> <error-page> <error-code>404</error-code> <location>/html/error.html</location> </error-page> <error-page> <error-code>500</error-code> <location>/html/error.html</location> </error-page> </web-app>
以上になります。分かりづらくてすみません。
どなたかお分かりになる方がいらっしゃいましたら宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー