filter必须实现哪个接口,及其方法
时间: 2023-05-24 13:06:21 浏览: 50
filter必须实现javax.servlet.Filter接口,该接口包含以下方法:
1. void init(FilterConfig config):该方法在Filter被初始化时被调用,可以利用该方法获取Filter的初始化配置信息。
2. void doFilter(ServletRequest request, ServletResponse response, FilterChain chain):该方法是Filter的核心方法,它在请求被Servlet处理之前或之后拦截请求,并对请求或响应进行处理。
3. void destroy():该方法在Filter被销毁时调用,可以进行一些清理工作,例如释放资源等。
相关问题
详解cas-client-autoconfig-support2.3.0-GA中CasClientConfigurerAdapter的使用及其每个方法并给代码实例
cas-client-autoconfig-support2.3.0-GA是一个用于集成CAS(Central Authentication Service)客户端的Java库,其中包含了一个名为CasClientConfigurerAdapter的类,可以通过继承该类并覆盖其中的方法来自定义CAS客户端的配置。
该类中包含以下方法:
1. configureAuthenticationFilter(AuthenticationFilter authenticationFilter):用于配置AuthenticationFilter,该方法接收一个AuthenticationFilter对象作为参数。示例代码如下:
```java
public class CustomCasClientConfigurer extends CasClientConfigurerAdapter {
@Override
public void configureAuthenticationFilter(AuthenticationFilter authenticationFilter) {
authenticationFilter.setAuthenticationDetailsSource(new CustomAuthenticationDetailsSource());
}
}
```
2. configureValidationFilter(ValidationFilter validationFilter):用于配置ValidationFilter,该方法接收一个ValidationFilter对象作为参数。示例代码如下:
```java
public class CustomCasClientConfigurer extends CasClientConfigurerAdapter {
@Override
public void configureValidationFilter(ValidationFilter validationFilter) {
validationFilter.setRenew(true);
}
}
```
3. configureHttpServletRequestWrapperFilter(HttpServletRequestWrapperFilter httpServletRequestWrapperFilter):用于配置HttpServletRequestWrapperFilter,该方法接收一个HttpServletRequestWrapperFilter对象作为参数。示例代码如下:
```java
public class CustomCasClientConfigurer extends CasClientConfigurerAdapter {
@Override
public void configureHttpServletRequestWrapperFilter(HttpServletRequestWrapperFilter httpServletRequestWrapperFilter) {
httpServletRequestWrapperFilter.setEncoding("UTF-8");
}
}
```
4. configureLogoutFilter(LogoutFilter logoutFilter):用于配置LogoutFilter,该方法接收一个LogoutFilter对象作为参数。示例代码如下:
```java
public class CustomCasClientConfigurer extends CasClientConfigurerAdapter {
@Override
public void configureLogoutFilter(LogoutFilter logoutFilter) {
logoutFilter.setLogoutUrl("/cas/logout");
logoutFilter.setFollowRedirects(true);
}
}
```
5. configureSsoFilter(SingleSignOutFilter singleSignOutFilter):用于配置SingleSignOutFilter,该方法接收一个SingleSignOutFilter对象作为参数。示例代码如下:
```java
public class CustomCasClientConfigurer extends CasClientConfigurerAdapter {
@Override
public void configureSsoFilter(SingleSignOutFilter singleSignOutFilter) {
singleSignOutFilter.setCasServerUrlPrefix("https://cas.example.com");
singleSignOutFilter.setIgnoreInitConfiguration(true);
}
}
```
6. configureProxyFilter(ProxyFilter proxyFilter):用于配置ProxyFilter,该方法接收一个ProxyFilter对象作为参数。示例代码如下:
```java
public class CustomCasClientConfigurer extends CasClientConfigurerAdapter {
@Override
public void configureProxyFilter(ProxyFilter proxyFilter) {
proxyFilter.setProxyReceptorUrl("/cas/proxy/receptor");
proxyFilter.setProxyCallbackUrl("/cas/proxy/callback");
}
}
```
通过继承CasClientConfigurerAdapter并覆盖上述方法,可以实现对CAS客户端的自定义配置。在集成CAS客户端时,可以通过将自定义的CasClientConfigurerAdapter实例传入CasClientConfigurer接口的实现类中,来完成对CAS客户端的配置。例如:
```java
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private CasClientConfigurer casClientConfigurer;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.apply(casClientConfigurer);
}
}
```
在上述代码中,通过调用apply(casClientConfigurer)方法来应用自定义的CasClientConfigurerAdapter实例,完成对CAS客户端的配置。
Java常见的设计模式及其应用场景
Java常见的设计模式有23种,它们分别是:
1. 工厂模式(Factory Pattern)
2. 抽象工厂模式(Abstract Factory Pattern)
3. 单例模式(Singleton Pattern)
4. 建造者模式(Builder Pattern)
5. 原型模式(Prototype Pattern)
6. 适配器模式(Adapter Pattern)
7. 桥接模式(Bridge Pattern)
8. 过滤器模式(Filter Pattern)
9. 组合模式(Composite Pattern)
10. 装饰器模式(Decorator Pattern)
11. 外观模式(Facade Pattern)
12. 享元模式(Flyweight Pattern)
13. 代理模式(Proxy Pattern)
14. 责任链模式(Chain of Responsibility Pattern)
15. 命令模式(Command Pattern)
16. 解释器模式(Interpreter Pattern)
17. 迭代器模式(Iterator Pattern)
18. 中介者模式(Mediator Pattern)
19. 备忘录模式(Memento Pattern)
20. 观察者模式(Observer Pattern)
21. 状态模式(State Pattern)
22. 策略模式(Strategy Pattern)
23. 模板方法模式(Template Method Pattern)
它们的应用场景如下:
1. 工厂模式:用于创建对象实例。
2. 抽象工厂模式:用于创建一组相关或相互依赖的对象实例。
3. 单例模式:用于保证系统中只有一个实例,例如系统配置等。
4. 建造者模式:用于创建复杂对象,将创建过程与表示分离。
5. 原型模式:用于创建对象的克隆,避免重复创建对象。
6. 适配器模式:用于将一个类的接口转换成客户端希望的另一个接口。
7. 桥接模式:用于将抽象部分与实现部分分离,使它们可以独立变化。
8. 过滤器模式:用于过滤一组对象,返回满足条件的子集。
9. 组合模式:用于将对象组合成树形结构,表示“整体-部分”关系。
10. 装饰器模式:用于为对象动态添加功能,避免使用继承方式扩展功能。
11. 外观模式:用于提供一个统一的接口,封装子系统中的一组接口。
12. 享元模式:用于共享一组细粒度对象,以减少内存使用和提高性能。
13. 代理模式:用于为其他对象提供一种代理以控制对这个对象的访问。
14. 责任链模式:用于将请求沿着处理链传递,直到有一个处理对象处理该请求。
15. 命令模式:用于将请求封装成一个对象,从而使不同的请求可以使用相同的处理方式。
16. 解释器模式:用于定义语言的文法,并解析语言中的句子。
17. 迭代器模式:用于提供一种方法顺序访问聚合对象中的各个元素。
18. 中介者模式:用于封装一组对象之间的交互,使其可以松耦合地改变交互方式。
19. 备忘录模式:用于保存对象的状态,以便恢复到之前的状态。
20. 观察者模式:用于在对象之间定义一对多的依赖关系,当一个对象状态改变时,所有依赖于它的对象都得到通知。
21. 状态模式:用于封装对象的状态,并定义对象状态之间的转换。
22. 策略模式:用于定义一组算法,并将每个算法封装起来,使其可以互换使用。
23. 模板方法模式:用于定义一个算法的骨架,并将一些步骤延迟到子类中实现。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)