FilterDispather.java
上传用户:hensond
上传日期:2021-12-27
资源大小:817k
文件大小:2k
- package com.company.controller;
- import java.io.IOException;
- import javax.servlet.Filter;
- import javax.servlet.FilterChain;
- import javax.servlet.FilterConfig;
- import javax.servlet.RequestDispatcher;
- import javax.servlet.ServletException;
- import javax.servlet.ServletRequest;
- import javax.servlet.ServletResponse;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import com.cbf4life.view.ViewManager;
- import com.company.action.ActionDispather;
- import com.company.action.IActionDispather;
- import com.company.helper.ValueStackHelper;
- import com.company.valuestack.ValueStack;
- /**
- * @author cbf4Life cbf4life@126.com
- * I'm glad to share my knowledge with you all.
- */
- public class FilterDispather implements Filter {
- //定义一个值栈辅助类
- private ValueStackHelper valueStackHelper = new ValueStackHelper();
- //应用IActionDispather
- IActionDispather actionDispather = new ActionDispather();
-
-
- //server销毁时要做的事情
- public void destroy() {
- }
- //过滤器必须实现的
- public void doFilter(ServletRequest request, ServletResponse response,
- FilterChain chain) throws IOException, ServletException {
-
- //转换为HttpServletRequest
- HttpServletRequest req = (HttpServletRequest)request;
- HttpServletResponse res = (HttpServletResponse)response;
- //传递到其他过滤器处理
- chain.doFilter(req, res);
- //获得从HTTP请求的ACTION名称
- String actionName = getActionNameFromURI(req);
- //对ViewManager的应用
- ViewManager viewManager = new ViewManager(actionName);
- //所有参数放入值栈
- ValueStack valueStack = valueStackHelper.putIntoStack(req);
- //把所有的请求传递给ActionDispatcher处理
- String result =actionDispather.actionInvoke(actionName);
- String viewPath = viewManager.getViewPath(result);
- //直接转向
- RequestDispatcher rd = req.getRequestDispatcher(viewPath);
- rd.forward(req, res);
- }
- public void init(FilterConfig arg0) throws ServletException {
- /*
- * 1、检查XML配置文件是否正确
- * 2、启动监控程序,观察配置文件是否正确
- */
- }
-
- //通过url获得actionName
- private String getActionNameFromURI(HttpServletRequest req){
- String path = (String) req.getRequestURI();
- String actionName = path.substring(path.lastIndexOf("/") + 1,path.lastIndexOf("."));
- return actionName;
- }
-
- }