/* * Copyright 2008-2009 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.hasor.web; import net.hasor.core.ApiBinder; import net.hasor.core.BindInfo; import net.hasor.core.Matcher; import net.hasor.core.Provider; import javax.servlet.Filter; import javax.servlet.ServletContext; import javax.servlet.ServletContextListener; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpSessionListener; import java.util.Map; /** * 提供了注册Servlet和Filter的方法。 * @version : 2016-12-26 * @author 赵永春 (zyc@hasor.net) */ public interface WebApiBinder extends ApiBinder, MimeType { /**获取ServletContext对象。*/ public ServletContext getServletContext(); /** 设置请求编码 */ public WebApiBinder setRequestCharacter(String encoding); /** 设置响应编码 */ public WebApiBinder setResponseCharacter(String encoding); /** 设置请求响应编码 */ public WebApiBinder setEncodingCharacter(String requestEncoding, String responseEncoding); /**获取容器支持的Servlet版本。*/ public ServletVersion getServletVersion(); // /**使用 MappingTo 表达式,创建一个{@link ServletBindingBuilder}。*/ public ServletBindingBuilder jeeServlet(String urlPattern, String... morePatterns); /**使用 MappingTo 表达式,创建一个{@link ServletBindingBuilder}。*/ public ServletBindingBuilder jeeServlet(String[] morePatterns); /**使用 MappingTo 表达式,创建一个{@link MappingToBindingBuilder}。*/ public MappingToBindingBuilder<Object> mappingTo(String urlPattern, String... morePatterns); /**使用 MappingTo 表达式,创建一个{@link MappingToBindingBuilder}。*/ public MappingToBindingBuilder<Object> mappingTo(String[] morePatterns); // public void scanMappingTo(); public void scanMappingTo(String... packages); public void scanMappingTo(Matcher<Class<?>> matcher, String... packages); // /**使用传统表达式,创建一个{@link FilterBindingBuilder}。*/ public FilterBindingBuilder<InvokerFilter> filter(String urlPattern, String... morePatterns); /**使用传统表达式,创建一个{@link FilterBindingBuilder}。*/ public FilterBindingBuilder<InvokerFilter> filter(String[] morePatterns); /**使用正则表达式,创建一个{@link FilterBindingBuilder}。*/ public FilterBindingBuilder<InvokerFilter> filterRegex(String regex, String... regexes); /**使用正则表达式,创建一个{@link FilterBindingBuilder}。*/ public FilterBindingBuilder<InvokerFilter> filterRegex(String[] regexes); // /**使用传统表达式,创建一个{@link FilterBindingBuilder}。*/ public FilterBindingBuilder<Filter> jeeFilter(String urlPattern, String... morePatterns); /**使用传统表达式,创建一个{@link FilterBindingBuilder}。*/ public FilterBindingBuilder<Filter> jeeFilter(String[] morePatterns); /**使用正则表达式,创建一个{@link FilterBindingBuilder}。*/ public FilterBindingBuilder<Filter> jeeFilterRegex(String regex, String... regexes); /**使用正则表达式,创建一个{@link FilterBindingBuilder}。*/ public FilterBindingBuilder<Filter> jeeFilterRegex(String[] regexes); // /**注册一个ServletContextListener监听器。*/ public void addServletListener(Class<? extends ServletContextListener> targetKey); /**注册一个ServletContextListener监听器。*/ public void addServletListener(ServletContextListener sessionListener); /**注册一个ServletContextListener监听器。*/ public void addServletListener(Provider<? extends ServletContextListener> targetProvider); /**注册一个ServletContextListener监听器。*/ public void addServletListener(BindInfo<? extends ServletContextListener> targetRegister); /**注册一个HttpSessionListener监听器。*/ public void addSessionListener(Class<? extends HttpSessionListener> targetKey); /**注册一个HttpSessionListener监听器。*/ public void addSessionListener(HttpSessionListener sessionListener); /**注册一个HttpSessionListener监听器。*/ public void addSessionListener(Provider<? extends HttpSessionListener> targetProvider); /**注册一个HttpSessionListener监听器。*/ public void addSessionListener(BindInfo<? extends HttpSessionListener> targetRegister); /**添加插件*/ public WebApiBinder addPlugin(Class<? extends WebPlugin> webPlugin); /**添加插件*/ public WebApiBinder addPlugin(WebPlugin webPlugin); /**添加插件*/ public WebApiBinder addPlugin(Provider<? extends WebPlugin> webPlugin); /**添加插件*/ public WebApiBinder addPlugin(BindInfo<? extends WebPlugin> webPlugin); /**添加MappingSetup*/ public WebApiBinder addSetup(Class<? extends MappingSetup> setup); /**添加MappingSetup*/ public WebApiBinder addSetup(MappingSetup setup); /**添加MappingSetup*/ public WebApiBinder addSetup(Provider<? extends MappingSetup> setup); /**添加MappingSetup*/ public WebApiBinder addSetup(BindInfo<? extends MappingSetup> setup); // /**负责配置Filter。*/ public static interface FilterBindingBuilder<T> { public void through(Class<? extends T> filterKey); public void through(T filter); public void through(Provider<? extends T> filterProvider); public void through(BindInfo<? extends T> filterRegister); // public void through(Class<? extends T> filterKey, Map<String, String> initParams); public void through(T filter, Map<String, String> initParams); public void through(Provider<? extends T> filterProvider, Map<String, String> initParams); public void through(BindInfo<? extends T> filterRegister, Map<String, String> initParams); // public void through(int index, Class<? extends T> filterKey); public void through(int index, T filter); public void through(int index, Provider<? extends T> filterProvider); public void through(int index, BindInfo<? extends T> filterRegister); // public void through(int index, Class<? extends T> filterKey, Map<String, String> initParams); public void through(int index, T filter, Map<String, String> initParams); public void through(int index, Provider<? extends T> filterProvider, Map<String, String> initParams); public void through(int index, BindInfo<? extends T> filterRegister, Map<String, String> initParams); } /**负责配置Servlet。*/ public static interface ServletBindingBuilder extends MappingToBindingBuilder<HttpServlet> { // public void with(Class<? extends HttpServlet> servletKey, Map<String, String> initParams); public void with(HttpServlet servlet, Map<String, String> initParams); public void with(Provider<? extends HttpServlet> servletProvider, Map<String, String> initParams); public void with(BindInfo<? extends HttpServlet> servletRegister, Map<String, String> initParams); // public void with(int index, Class<? extends HttpServlet> servletKey, Map<String, String> initParams); public void with(int index, HttpServlet servlet, Map<String, String> initParams); public void with(int index, Provider<? extends HttpServlet> servletProvider, Map<String, String> initParams); public void with(int index, BindInfo<? extends HttpServlet> servletRegister, Map<String, String> initParams); } /**负责配置Servlet。*/ public static interface MappingToBindingBuilder<T> { public void with(Class<? extends T> targetKey); public void with(T target); public void with(Provider<? extends T> targetProvider); public void with(BindInfo<? extends T> targetInfo); // public void with(int index, Class<? extends T> targetKey); public void with(int index, T target); public void with(int index, Provider<? extends T> targetProvider); public void with(int index, BindInfo<? extends T> targetInfo); } // // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /**拦截这些后缀的请求,这些请求会被渲染器渲染。*/ public RenderEngineBindingBuilder<RenderEngine> suffix(String urlPattern, String... morePatterns); /**拦截这些后缀的请求,这些请求会被渲染器渲染。*/ public RenderEngineBindingBuilder<RenderEngine> suffix(String[] morePatterns); /**扫描Render注解配置的渲染器。*/ public void scanAnnoRender(); /**扫描Render注解配置的渲染器。*/ public void scanAnnoRender(String... packages); /**扫描Render注解配置的渲染器。*/ public void scanAnnoRender(Matcher<Class<? extends RenderEngine>> matcher, String... packages); // /**负责配置RenderEngine。*/ public static interface RenderEngineBindingBuilder<T> { /**绑定实现。*/ public void bind(Class<? extends T> filterKey); /**绑定实现。*/ public void bind(T filter); /**绑定实现。*/ public void bind(Provider<? extends T> filterProvider); /**绑定实现。*/ public void bind(BindInfo<? extends T> filterRegister); } }