一、 Action访问ServletAPI
a) 使用ActionContext类:
i. 创建对象:ActionContextac = ActionContext.getContext();
ii. 常用方法 put, get/setApplication, 静态getContext,getParameters, get/setSession
b) 使用ServletActionContext工具类:常用静态方法getPageContex, getRequest, getResponse, getServletContext
二、 详解Action的基本配置
a) 使用Action的动态方法调用
i. DMI(Dynamic MethodInvocation) : action=”ActionName!MethodName”
ii. 如需禁用则需配置相对应常量
b) 指定Method属性
i. 配置action节点时,指定method属性
c) 使用通配符
i. 在配置action的节点时,在name属性中可以使用多个*通配符,在class,method,result中都可以使用
三、 Action的匹配方式
a) 完全匹配
b) 模糊匹配(通配符)
c) 定义通用Action (所有请求不再指向视图资源)
四、 配置处理结果 Result
a) name属性:逻辑视图名
b) type属性:指定结果类型
常用结果类型:
i. dispatcher :默认类型(服务器分发)
ii. redirect :重定向
iii. redirectAction :重定向到另一个action
五、 异常处理
a) 使用try…catch进行异常捕获
b) 声明式异常捕获
i. 配置global-results
ii. 配置全局global-exception-mappings
iii. 在某个action配置节点中单独配置exception-mapping
iv. 在action处理中抛出异常
v. 异常页面输出异常信息
总结
1.JSTL标签和struts标签使用方式不同
2.struts有几个parameter就要在action中设置几个属性,可以通过设置不同的form区分
3.获取内置对象,Action访问ServletAPI
第一种低耦合,用struts新对象获取
ActionContext ac =ActionContext.getContext();
Map<String,Object> session = ac.getSession();
session.put("pet", pi);
第二种使用ServletActionContext工具类
HttpSession session =ServletActionContext.getRequest().getSession();
Map<String, Object> map =ServletActionContext.getContext().getApplication();
4.详解Action的基本配置
使用Action的动态方法调用,通过修改action实现
i. DMI(Dynamic Method Invocation) : action=”ActionName!MethodName”
ii. 如需禁用则需配置相对应常量
<form name="pet"method="post" action="/epet/Login!execute"> 在action后面加上方法名称
<constant name="struts.enable.DynamicMethodInvocation"value="false"></constant> 关闭动态方法调用
指定Method属性
i. 配置action节点时,指定method属性
<action name="Login" class="com.feiduit.tjw.action.Login" method="execute">对应action中的execute()
使用通配符
i.在配置action的节点时,在name属性中可以使用多个*通配符,在class,method,result中都可以使用
<action name="User_*"class="action.UserAction" method="{1}">
<actionname="*"><resultname="success">/{1}.jsp</result></action> 一般要写通配action,查询顺序要精确再通配,先前再后
<action name="*Action_*"class="struts.action.{1}Action" method="{2}"> 2个通配符,按顺序
<resultname="success">/{2}_success.jsp</result>
5.配置处理结果 Result
a) name属性:逻辑视图名,也就是方法的String返回值
b) type属性:指定结果类型
常用结果类型:
i. dispatcher:默认类型(服务器分发)
ii. redirect :重定向
iii. redirectAction :重定向到另一个action
6.获取表单对象的值
1.<input type="text"name="petInfo.pet_owner_email" value=""> 设置表单对象
2.private PetInfo petInfo; 在Action中封装对象属性
3.pi.setPet_owner_email(getPetInfo().getPet_owner_email()); 通过对象来接收值
7.异常处理
a) 使用try…catch进行异常捕获
b) 声明式异常捕获
i. 配置global-results
ii. 配置全局global-exception-mappings
iii. 在某个action配置节点中单独配置exception-mapping
iv. 在action处理中抛出异常
v. 异常页面输出异常信息
<global-results>
<resultname="error">/exception.jsp</result>
<resultname="exception">/exception.jsp</result>
<resultname="login">/login.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mappingresult="error"exception="java.sql.SQLException"></exception-mapping>
<exception-mappingresult="exception"exception="java.lang.Exception"></exception-mapping>
</global-exception-mappings>
先进<global-exception-mappings>访问符合要求的异常,再根据error匹配符合要求的结果,跳转页面