strutt1.2与1.3在lib上的差别 由于1.2中没有标签库包 ,所以需要相关的tld文件
(struts-bean.tld,struts-html.tld,struts-logic.tld,struts-nested.tld,struts-tiles.tld)
(1)导包 拷贝需要相关的tld文件(1.2)
(2)写action类 继承action 重写execute方法
public class HelloWorldAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
HelloWorldForm hwForm = (HelloWorldForm) form;
hwForm.setMessage("Hello World");
return mapping.findForward("success");
}
}
(3)在web-inf新建struts-config.xml文件
< xml version="1.0" encoding="UTF-8" >
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
(4)在web.xml进行struts配置
(5)运行 http://localhost:端口号/应用名/配置的path
演示不同路径访问 以及传值回jsp页面
2 helloworld(在1的基础上 带form)
(1) 编写ActionForm 继承ActionForm
(2) 在struts-config.xml配置 form-bean
在action配置处加入 name=上面配置的form名 指定formbean的scope (request或者session) 可再次演示request属性值丢失问题
演示 request或者session的formbean使用
action类中的代码 给HelloForm设置一个属性
HelloForm f=(HelloForm)form;
f.setName("pppppppppp");
在jsp页面上取出来
<%
HelloForm f=(HelloForm)session.getAttribute("helloform"); //此处的属性helloform就是在struts-config.xml的formbean名称
out.print(f.getName());
%>
(3) actionform如何自动获取页面值 只需要form表单中名字与formbean名字相同即可
跳转演示
登录练习
地址栏斜杠的演示 / 如何精确定位action
多个方法的演示(增加,删除,修改)
3 Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的 并且要在开发时特别小心。Action资源必须是线程安全的或同步的。
4 全局转发与局部转发 全局异常与局部异常
全局转发 所有的action共用 局部转发 自己的action用 当两者重名时,优先选择局部转发
全局异常与局部异常(附件 struts1.x中的异常处理.txt)
在error.jsp页面 获取异常信息
全局异常 所有的action共用 局部异常 自己的action用 当两者重名时,优先选择局部异常
5 资源文件的使用(附件 资源文件设置.txt) 默认情况下,Struts默认的资源文件为ApplicationResources.properties文件。
在src目录下建立一个properties文件 一般为ApplicationResource.properties 里面写着键值对信息
如
aaa=111
bbb=222
ccc=333
在 struts-config.xml中配置使用资源文件 与同级别,一般在后,
如果该资源文件不在src目录下,而在其他包名下,则应加上包名,假设ApplicationResource.properties在com包下,则配置修改为
在jsp页面上通过bean标记 可输出资源文件的内容
在页面上将显示111
ActionError与ActionMessage
actionError 1.1版本 1.2版本推出actionMessage actionMessage是actionError的父类
actionError从语义上一般是指错误信息 actionMessage指的是一般信息
ActionError类与ActionErrors类
ActionError类从不独立进行错误处理,它们总是被存储在ActionErrors对象中。ActionErrors对象保存ActionError类的集合以及它们特定的属性值,我们可以使用自己定义的属性值,或是使用ActionErrors.GLOBAL_ERROR.
如下使用
ActionErrors errors = new ActionErrors();
ActionError error = new ActionError("资源文件中的key值",“要传递进去的参数值(一个或多个(字符串数组))");
errors.add(ActionErrors.GLOBAL_ERROR,