今天跟大伙儿聊聊FilterDispatcher,这玩意儿在Struts2里头可是个大管家,所有用户点点鼠标、敲敲键盘发过来的请求,都得先过它这一关。
话说我之前做个项目,用到Struts2,那会儿对这框架还不太熟,配置来配置去,总感觉差点儿意思。后来我静下心来,一步步琢磨,总算把FilterDispatcher给搞明白。
咱得在*里头把这个FilterDispatcher给配置上,要不它咋知道自己要干活?
配置好以后,我启动服务器,然后在浏览器里输入一个网址,回车!
这时候,FilterDispatcher就开始忙活。它先是把这个网址(也就是请求的URL)给拿过来,仔细瞅瞅,看看这个请求到底想干是要看个文章,还是要提交个表单?
- 这一步,我感觉就像是FilterDispatcher在问:“喂,这个请求,你想让我找哪个Action来伺候你?”
就是见证奇迹的时刻
FilterDispatcher会去找一个叫ActionMapper的家伙,问它:“哥们儿,这个请求你认识不?知道该交给哪个Action处理不?”
如果ActionMapper说:“这个请求我知道,应该交给XXXAction来处理。” 那FilterDispatcher就会把这个请求交给一个叫ActionProxy的家伙。
ActionProxy又是个啥?
它就像是一个中间人,拿着FilterDispatcher给的请求,去找Struts2的配置文件(通常是*),在里头翻箱倒柜,找到对应的Action类。
- 我当时就想,这ActionProxy还挺厉害,像个情报贩子,啥都知道。
找到Action类以后,ActionProxy就会把请求交给这个Action,让它去处理具体的业务逻辑。比如,如果是要查询个数据,Action就会去数据库里头把数据捞出来,然后交给JSP页面去展示。
再说点儿我自己的感悟
我觉得FilterDispatcher就像是一个大管家,把所有的请求都给拦下来,然后分门别类,交给不同的“仆人”(Action)去处理。这样一来,整个系统就井井有条,不会乱套。
而且通过FilterDispatcher,我们可以很方便地对请求进行拦截和过滤,比如检查用户是否登录、验证用户权限等等。这就像是给系统加一道安全门,防止坏人进来捣乱。
FilterDispatcher在Struts2里头的作用非常重要,掌握它,就相当于掌握Struts2的半壁江山。我这只是我自己的理解,可能还不够深入,大家伙儿要是觉得我说的不对,欢迎拍砖!