(1)ActionServlet
ActionServlet配置
我们需要在web.xml中声明ActionServlet,并且将它配置成启动时进行加载。
ActionServlet是Struts的Controller,基本功能:
A、截获用户的Http请求
B、把这个请求映射到相应的Action类,如果这是此类收到的第一个请求,将初始化实例并缓存
C、创建或发现一个ActionForm bean实例(看配置文件是否定义),然后将请求过程移植到bean.
D、调用Action实例的execute方法,并将ActioFormbean,Action Mapping对象,request和response对象传给它
E、execute方法会返回一个ActionForward对象,连接到相应的jsp页面
(2)ActionForm
介绍:
ActionForm是一个JavaBean,它捕获通过HTTP请求传送的参数
ActionForm针对每个HTML表单中的字段具有一个对应的属性
ActionServlet匹配请求中的参数和ActionForm中的属性,并调用ActionForm中的setter方法,将参数传入ActionForm
要求:
必须扩展自org.apache.struts.action.ActionForm
如果想要在组装前初始化属性,必须实现reset方法
特殊:动态ActionForm,DynaActionForm的配置
作用:
作为表单字段收集器
作为类型转换器,所有从表单提交到后台的数据均为字符串类型,自动转换类型
作为传输对象(vo,dto)
(3)Action
介绍:
Action是一个Java类,需继承org.apache.struts.action.Action类
ActionServlet将会组装ActionForm,并将它传递给Action
Action 主要职责:
a.校验输入数据
b.调用业务逻辑方法,执行业务逻辑操作
c.检测处理异常
d.根据逻辑进行转向操作
可重入性:
J2EE是一个多线程的环境,服务器针对每个请求启动一个线程来处理。所以有可能会有多个线程同时访问一个Servlet实例的情况
在Struts里面也是一样的,有可能会有多个线程同时访问一个Action实例的情况
所以必须保证Action类中的方法具有“可重入性”,即不能在Action的方法里改变实例变量的值
(4)ActionMapping
ActionMapping的属性
path
forward
type
name
scope
validate
input
parameter
unknown
scope属性:在Action映射配置中,Scope属性可以取值为:request或session
Scope属性表示:Struts框架在将ActionForm对象传送到Action之前,会将ActionForm对象保存的位置
(5)ActionForward
作用:Action操作成功了,然后呢?
ActionForward会回传给ActionServlet
ActionForward中的路径,可以是一个带参数的URI
ActionForward的属性
name
path
redirect
className
转发(forward)与重定向(redirect)
全局ActionForward与局部ActionForward
动态ActionForward
(6)Struts Taglib
易于使用,能代替直接在页面上写JAVA脚本
便于重用
<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean"%>
<%@ taglib prefix="logic" uri="http://struts.apache.org/tags-logic" %>
<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html" %>
常用的taglib:
<bean:write>
<logic:empty>和<logic:notEmpty>
<logic:present>和<logic:notPresent>
<logic:iterator>