黑马程序员技术交流社区

标题: struts2 web.xml 配置文件的疑惑 [打印本页]

作者: 燃灯街    时间: 2013-6-9 19:10
标题: struts2 web.xml 配置文件的疑惑


<filter>
  <filter-name>struts2</filter-name>
  <filter-class>
   org.apache.struts2.dispatcher.FilterDispatcher
  </filter-class>
</filter>

<filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>
请教:这些配置文件是用来干什么的?怎么执行的?
作者: 张歆明    时间: 2013-6-9 19:39
**************************************
<filter>
  <filter-name>struts2</filter-name>
  <filter-class>
   org.apache.struts2.dispatcher.FilterDispatcher
  </filter-class>
</filter>

<filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>这些配置文件是用来干什么的?怎么执行的?

**************************************
首先说一下

你应该理解web中的过滤器吧 简单说 就是 他要配置一个url路径  当客户端请求了这个路径以后
你就要在他向执行什么动作之前  把这个路径截住  预先做你想做的事情  --- 这就是过滤器的功能
那么 Java Web中 过滤器也是一个类  所以  你要在url -pattern中说明 你想过滤那些url请求
在对应的filter-class里面  配置处理这些url的Java类  
但是你随便定义的java类 web容器怎么知道他们是过滤器呢?
这就是要在这个web.xml中进行说明 我这个类(filter-class)是过滤器  Web容器才能赋予这个类相应
的权利来处理url-pattern中对应的客户端请求

其次:
要理解这个问题 你必须 了解 MVC Model(数据)--View(视图)--Controller(控制器)这个体系
Model: 操作数据库层(Hibernate操作Oracle DB2或者SQLServer或者 MySQL)----流行框架Hibernate 替代:JDBC
View: 页面层(JSP Html PDF)
Controller:控制器(当客户端发起URL请求的时候, Controller接收到请求之后  会决定由哪一个Model来处理请求)----流行框架SpringMVC或者Struts2 替代 Servlet
那么 Struts2就是Controller的扮演者
Struts2里面又一次细分成
(1)核心控制器 以前叫 org.apache.struts2.dispatcher.FilterDispatcher 现在叫 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
这个核心控制器 就是你web.xml中 在<filter-class>标签中配置的元素名称
(2)业务控制器  你要是用过struts2的话  你应该知道 还要配置struts.xml 这里面  配置了action name, action class, action method 每一个action name就是一个业务控制器

这样  struts2将Controller就划分为 核心控制器(FilterDispatcher)和业务控制器(struts.xml中配置的action)
当客户端发起的请求符合你在url-pattern中定义的路径时候(/*你这里是无论什么url请求  都会落入struts2的处理框架) , struts2的核心控制器(FilterDispatcher)就会拦截住
这个客户端请求  然后根据请求的名字 匹配相应的业务控制器的action name 匹配上了  就将请求发送到相应的业务控制器  进行处理  (比如和数据库的交互等等)


作者: 燃灯街    时间: 2013-6-9 20:47
张歆明 发表于 2013-6-9 19:39
**************************************

  struts2

恩,谢谢你的回答!
作者: Renica    时间: 2013-6-9 21:14
java web开发学的,mvc过滤的吧。
作者: 张歆明    时间: 2013-6-9 22:03
燃灯街 发表于 2013-6-9 20:47
恩,谢谢你的回答!

不客气  哈哈哈




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2