欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java過濾器和分發(fā)器

劉柏宏1年前7瀏覽0評論

在 Java 前端開發(fā)中,過濾器和分發(fā)器是非常重要的概念和工具。過濾器主要用于對請求進行過濾和處理,可以在請求到達 servlet 之前或者之后進行過濾處理。而分發(fā)器也被稱為 Servlet 包含器,主要用于選擇目標 servlet 進行請求的分發(fā)。

過濾器使用 Filter 接口實現(xiàn),可以實現(xiàn)對請求頭、請求參數(shù)、請求體等進行過濾處理。下面是一個簡單的過濾器實現(xiàn)對請求進行編碼轉(zhuǎn)換的例子:

public class EncodingFilter implements Filter {
private String encoding;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
encoding = filterConfig.getInitParameter("encoding");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
request.setCharacterEncoding(encoding);
chain.doFilter(request, response);
}
@Override
public void destroy() {
encoding = null;
}
}

而分發(fā)器實現(xiàn)主要是通過調(diào)用 servlet 的 service() 方法來實現(xiàn),根據(jù)請求 URL 的匹配規(guī)則來選擇目標 servlet 進行請求處理。下面是一個簡單的分發(fā)器實現(xiàn):

public class DispatcherServlet extends HttpServlet {
private MapservletMapping = new HashMap<>();
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
// 初始化 servletMapping
servletMapping.put("/doLogin", new LoginServlet());
servletMapping.put("/doLogout", new LogoutServlet());
servletMapping.put("/doRegister", new RegisterServlet());
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String uri = req.getRequestURI();
String contextPath = req.getContextPath();
String servletPath = uri.substring(contextPath.length());
HttpServlet servlet = servletMapping.get(servletPath);
if (servlet != null) {
servlet.service(req, resp);
} else {
resp.sendError(404, "Servlet Not Found");
}
}
}

過濾器和分發(fā)器可以組合使用,實現(xiàn)復(fù)雜的請求處理邏輯。同時,在實際開發(fā)中,也可以使用成熟的的框架如 Spring 或 Struts2 來實現(xiàn)過濾器和分發(fā)器的功能。