tomcat的filter功能的配置使用

应用场景,使用第三方服务,需要通过url添加fid字段对能够访问的权限进行控制

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
           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_4_0.xsd"
           version="4.0">
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

	***************************web,xml的配置****************************************
    <filter>
        <filter-name>WebForwardFliter</filter-name>
        <filter-class>filter.WebForwardFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>WebForwardFliter</filter-name>
        <url-pattern>/TestServlet/*</url-pattern>
    </filter-mapping>
</web-app>
@WebFilter(urlPatterns = "/web_war_exploded*")
public class WebForwardFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        if (servletRequest instanceof HttpServletRequest) {
            HttpServletRequest req = (HttpServletRequest) servletRequest;
            String uri = req.getRequestURI();
            if (uri.contains("TestServlet")) {
                System.out.println(uri);
                String newPath = uri.replace("web_war_exploded/","");
                try{
                    Map parameterMap = servletRequest.getParameterMap();
                    //map字段开始的时候是被锁住的,需要解锁修改
                    Method method = parameterMap.getClass().getMethod("setLocked", new Class[]{boolean.class});
                    method.invoke(parameterMap, new Object[]{new Boolean(false)});
                    parameterMap.remove("fid");
                    parameterMap.put("fid",new String[]{"16017"});
                    method.invoke(parameterMap, new Object[]{new Boolean(true)});
                }catch(Exception e){
                    System.out.println(""+e.toString());
                }
                System.out.println(newPath);
                RequestDispatcher requestDispatcher = servletRequest.getRequestDispatcher(newPath);
                requestDispatcher.forward(servletRequest, servletResponse);
                return;
            }
        }
        filterChain.doFilter(servletRequest, servletResponse);
    }

    @Override
    public void destroy() {

    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是使用Tomcat内置的Cluster功能实现Session共享的配置步骤: 1. 配置Tomcat集群:在每个Tomcat实例的`server.xml`文件中添加如下Cluster元素: ``` <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"> <Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true"/> <Channel className="org.apache.catalina.tribes.group.GroupChannel"> <Membership className="org.apache.catalina.tribes.membership.McastService" address="228.0.0.4" port="45564" frequency="500" dropTime="3000"/> <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="auto" port="4000" autoBind="100" selectorTimeout="5000" maxThreads="6"/> <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"> <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/> </Sender> <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/> <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/> </Channel> <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/> <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> </Cluster> ``` 上述配置中的`address`和`port`参数可以根据实际情况进行修改。 2. 配置Web应用程序:在每个Web应用程序的`context.xml`文件中添加distributable元素,指定该Web应用程序支持分布式Session: ``` <Context distributable="true"> ... </Context> ``` 3. 启动Tomcat实例:在每个Tomcat实例上启动Tomcat服务器。 4. 验证Session共享:在多个Tomcat实例上部署相同的Web应用程序,在其中一个Tomcat实例上创建一个Session,并在另一个Tomcat实例上访问该Session,验证Session共享是否生效。 需要注意的是,以上配置仅适用于Tomcat 7及以上版本。对于Tomcat 6及以下版本,需要使用不同的配置方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值