java统一处理请求代码
时间: 2023-08-08 16:06:56 浏览: 91
Java中可以使用Servlet和Filter来统一处理请求。Servlet是处理HTTP请求的Java类,可以通过继承 HttpServlet 类实现自定义的 Servlet。Filter是一种过滤器,可以在请求到达 Servlet 之前或之后对请求进行拦截和处理,可以通过实现 Filter 接口来自定义 Filter。
在 Servlet 中,可以通过重写 doGet() 和 doPost() 方法来处理 GET 和 POST 请求,也可以重写其它 HTTP 方法的方法来处理其它类型的请求。在 Filter 中,可以通过实现 doFilter() 方法来对请求进行拦截和处理。
以下是一个简单的示例代码,演示了如何使用 Servlet 和 Filter 统一处理请求:
```java
// 自定义 Servlet
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 处理 GET 请求
System.out.println("处理 GET 请求");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 处理 POST 请求
System.out.println("处理 POST 请求");
}
}
// 自定义 Filter
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// 初始化
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// 拦截请求
System.out.println("拦截请求");
// 继续处理请求
chain.doFilter(request, response);
// 处理完请求后的操作
System.out.println("请求处理完成");
}
@Override
public void destroy() {
// 销毁
}
}
// 配置 Servlet 和 Filter
public class MyWebAppInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
// 注册 Servlet
ServletRegistration.Dynamic myServlet = servletContext.addServlet("myServlet", new MyServlet());
myServlet.addMapping("/myServlet/*");
// 注册 Filter
FilterRegistration.Dynamic myFilter = servletContext.addFilter("myFilter", new MyFilter());
myFilter.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), true, "/*");
}
}
```
在上述代码中,我们定义了一个自定义的 Servlet 和 Filter,并在 MyWebAppInitializer 类中配置了它们的映射关系。当请求到达时,先会经过 MyFilter 进行拦截和处理,然后再交给 MyServlet 进行具体的处理。在 MyFilter 中我们还可以进行一些其它的操作,例如记录日志、设置请求头等。
阅读全文