Skip to content

Instantly share code, notes, and snippets.

@troter
Created May 31, 2011 06:37
Show Gist options
  • Save troter/1000070 to your computer and use it in GitHub Desktop.
Save troter/1000070 to your computer and use it in GitHub Desktop.
SAStrutsと生Servletを共存させる
package jp.troter.sandbox.seasar.struts.filter;
import java.io.IOException;
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 org.seasar.framework.util.StringUtil;
import org.seasar.struts.filter.RoutingFilter;
import org.seasar.struts.util.RequestUtil;
public class ExtendedRoutingFilter extends RoutingFilter {
@Override
public void init(FilterConfig config) throws ServletException {
super.init(config);
// TODO ignorePatternsをconfig.initParameter("ignorePatterns")から取得、設定
}
/**
* IgnorePatternsを利用してSAStrutsに渡さないPathを判断
* @param request
* @return
*/
protected boolean isIgnorePattern(HttpServletRequest request) {
if (StringUtil.equals("/test/", RequestUtil.getServletPath(request))) {
return true;
}
return false;
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (! isIgnorePattern((HttpServletRequest) request)) {
super.doFilter(request, response, chain);
return ;
}
chain.doFilter(request, response);
}
}
<?xml version="1.0"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<filter>
<filter-name>encodingfilter</filter-name>
<filter-class>org.seasar.extension.filter.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter>
<filter-name>s2filter</filter-name>
<filter-class>org.seasar.framework.container.filter.S2ContainerFilter</filter-class>
</filter>
<filter>
<filter-name>routingfilter</filter-name>
<filter-class>jp.troter.sandbox.seasar.struts.filter.ExtendedRoutingFilter</filter-class>
<!-- TODO
<init-param>
<param-name>ignorePatterns</param-name>
<param-value>
regexp 1
regexp 2
...
regexp N
</param-value>
</init-param>
-->
</filter>
<filter-mapping>
<filter-name>encodingfilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>s2filter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>routingfilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<servlet>
<servlet-name>test</servlet-name>
<servlet-class>jp.troter.sandbox.seasar.struts.filter.action.TestServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>configFactory</param-name>
<param-value>org.seasar.struts.config.S2ModuleConfigFactory</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>s2container</servlet-name>
<servlet-class>org.seasar.framework.container.servlet.S2ContainerServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>/test</url-pattern>
<url-pattern>/test/</url-pattern>
<url-pattern>/test.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>s2container</servlet-name>
<url-pattern>/s2container</url-pattern>
</servlet-mapping>
<error-page>
<error-code>404</error-code>
<location>/WEB-INF/view/error/404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/WEB-INF/view/error/500.jsp</location>
</error-page>
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<el-ignored>false</el-ignored>
<page-encoding>UTF-8</page-encoding>
<scripting-invalid>false</scripting-invalid>
<include-prelude>/WEB-INF/view/common/prelude.jsp</include-prelude>
<trim-directive-whitespaces>true</trim-directive-whitespaces>
</jsp-property-group>
</jsp-config>
</web-app>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment