Struts框架体系
框架介绍:
遵循MVC模式2的web层框架
开源框架
只负责表示层和控制层
struts框架的jar包和作用
struts.jar
struts核心包
Commons-beanutils.jar
获取和设置javaBean相关属性值
commons-digester.jar
用于XML解析,完成XML到JAVA对象的映射
commons-fileupload.jar
用于文件上传和下载
commons-logging.jar
用于日志处理
commons-validator.jar
struts验证框架的验证规则
jakarta-oro.jar
用于正则表达式处理的一套API
antlr.jar
用Ant实现Java项目的自动构建和部署
struts框架的工作流程
1、用户通过*.什么的方式(一般使用*.do)发出请求
2、程序通过web.xml文件的用户请求映射路径,找到前端控制器(也成中央控制器)ActionServlet
3、ActionServlet通过struts-config.xml文件中的action-mappings映射,找到相应的ActionForm路径,如果没找到映射,则返回路径无效
4、如果ActionForm实例不存在,则创建一个ActionForm对象,把表单提交的数据保存到这个对象中
5、根据配置文件的validate属性,决定是否要对表单数据进行验证,如果要,则调用ActionForm的validate方法
6、如果ActionForm的validate验证方法返回的是一个null,或者是一个不包含ActionMessage的ActionError对象,则表示验证成功
7、验证成功后就根据action-mappings中的配置产生Action实例,验证失败就很据配置文件对应的action标签中的input属性返回到指定页面
8、验证成功,根据配置文件的Action路径,决定将请求交给哪个Action执行,如果Action实例不存在,则先创建一个Action实例,在调用其execute方法
9、Action的execute方法返回一个ActionForward对象,中央控制器ActionServlet再根据ActionForward的信息,把信息转发到指定JSP页面
10、ActionForward对象指向的JSP页面生产动态网页返回给浏览器
ActionServlet的作用
前端控制器,也成中央控制器
初始化框架信息,xml文件,系统配置、插件等
接收请求信息
根据请求信息找到映射的action配置
把页面数据填充ActionForm属性内容
调用ActionForm的验证方法
根据配置文件产生Action,调用Action的execute方法
根据ActionForward对象指向不同的JSP页面
Action
如何书写?
写一个类,继承Action
重写execute方法
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {}
如何配置?
在struts-config.xml文件中的action-mappings中添加标签action
<action path="该类处理的请求路径" type="action类的全路径"></action>
生命周期?
Action是用户请求和业务逻辑之间的桥梁,所以Action是在用户请求时产生,当执行完execute方法后,请求断开,Action销毁
内置Action
ForwardAction
作用:
负责在控制器端转发页面,可以很好的利用struts控制器的预处理请求功能
配置:
在struts-config.xml文件的action-mappings中添加action标签
配置书写:
<action path="请求的路径" type="ActionForward类的全路径" parameter(forward)="要转到的页面" ></action>
IncludeAction
作用:
可以在一个web组件中包含其他web组件
配置:
在struts-config.xml文件的action-mappings中添加action标签
配置书写:
<action path="请求的路径" type="IncludeAction类的全路径" parameter="要包含的web组件"></action>
DispathAction
作用:
多个请求可以用于一个Action
类书写:
继承DispathAction,根据隐藏表单的value重写名字相同的方法
注意:不能重写execute方法,因为DispathAction已经重写过 并且是由它的execute方法调用子类的方法
配置书写:
在struts-config.xml文件中相应的action标签中添加parameter属性,其值为隐藏表单的name值
ActionForm的类型
静态ActionForm
ActionForm
是一个抽象类,其他ActionForm的基类
ValidateForm
继承于ActionForm,针对表单数据进行验证
注意:不能重写validate方法
ValidateActionForm
继承于ValidatorForm,针对请求路径进行验证
动态ActionForm
DynaActionForm
DynaValidateForm
动态ActionForm要使用验证框架,必须继承该类或者其子类
DynaValidateActionForm
LazyValidateForm
依赖于验证框架,不用书写类
生命周期
(1).控制器接收请求
(2).根据struts-config.xml的action标签的路径寻找ActionForm的实例,如果没有,则自动创建一个
(3).填充ActionForm的数据
(4).根据struts-config.xml对应的action标签的validate属性来决定是否调用验证方法
(5).验证成功后,把ActionForm保存在作用域中,交给Action处理 验证失败
国际化
含义:
根据浏览器的语种,生成不同语言的页面
步骤:
书写国家化资源文件
在struts-config.xml中的message-resources中的parameter属性中书写资源文件路径
struts视图组件
包含JSP页面,struts标签,ActionForm Bean
ActionForm Bean为什么也是视图组件?
因为页面中的数据和真正要持久化的数据有一定的差异(如:验证码等) 所以应该另外书写相应的数据库对象的PO对象
特点:可以使JSP页面中没有业务逻辑,没有模型信息,达到显示层和业务处、模型层的解耦
struts标签库
html标签库
作用:
生成基本的HTML标签
生成HTML表单
显示正常或错误的消息
特点:
可以和相应的ActionForm的属性值绑定
当用户禁用cooke时,可以自动生成jsessionid连接到路径后面
常用标签:
html表单元素
注意:当使用HTML标签库生成表单时,请求路径就应该和struts-config.xml文件中action的path属性值相同
自动和相应的ActionForm的属性值绑定
<html:link>
可以对URL地址进行编码
可以动态生成URL链接
同时可以提交多个参数
<html:errors>
可以在页面显示ActionError对象中的错误信息
bean标签库
作用:
主要用于在JSP页面中管理Bean对象
特点:
包含输出标签
可以创建和复制Bean标记
访问资源标记
资源国际化
格式化输出内容
常用标签
<bean:write>
输出作用域中的信息
用format属性格式化输出内容
<bean:message>
输出资源文件中的信息(国际化)
<bean:define>
创建或复制对象属性
<bean:define id="JSP页面中的别名" name="要复制或创建的对象名" type="对象的全路径" />
Logic标签库
作用:
根据特点逻辑来控制页面输出内容
循环遍历集合、映射等
进行运算比较
常用标签
<logic:equal>
用于判断变量是否相等
<logic:empty>
用于判断指定的变量是否为null
注意:集合和字符串没有内容也成立
<logic:iterate>
用于遍历集合对象
<logic:forward>
用于请求转发
注意:只和struts-config.xml中的<global-forward>元素匹配
<logic:redirect>
用于请求重定向
注意:只和struts-config.xml中的<global-forward>元素匹配
上传组件
1、表单书写
只能使用post方式提交数据
要指明服务器接受类型,在form中添加属性enctype="multipart/form-data"
2、ActionForm Bean书写
在属性中添加FormFile属性,ActionServlet会将上传的文件以二进制方式填充到其中
Action书写
(1).在ActionForm对象中获取FormFile
(2).获取上传资源名称
(3).根据名称获取要写入资源的全路径
(4).创建字节输出流,将文件写入服务器端
(5).关闭输入流
控制上传文件大小
在stryts-config.xml文件的message-resourec后面写上<controller maxFileSize="10M" />
异常处理
异常处理方式
全局异常处理
在<global-exceptions>中加入全局异常<exception>标签 配置方式同下
局部异常处理
在Action标签中加入<exception type=“指定待处理的异常类” key="指定错误消息的key" path="指定转发路径">标签
异常处理流程
当程序抛出异常后,会先在相应的action配置中寻找相应的key,如果没有在到全局异常配置中寻找
tiles框架
介绍:
建立在JSP中的include指令之上,为创建WEB页面提供的一种模板机制
特点:
使网页模板和内容分离,易重用,易维护
在WEB应用运行时,才把指定的内容插入到模板中
实现:
(1).定义模板文件,规划布局
书写一个简单的JSP文件
建立整体页面的DIV块
在DIV块中用<tiles:insert attribute="属性名">标签标记内容插入点
(2).向模板传递参数
建立一个JSP页面,只留声明
使用标签指明要填充的模板和页面
根标签,指明模板
<tiles:insert page="要填充的模板页面" flush="true"> </tiles:insert>
子标签,指明填充内容
<tiles:put name="模板页面的属性名" value="要填充进去的JSP页面" />
(3).书写具体的JSP内容文件
根据具体要显示的内容,书写相应的JSP页面
validator验证框架
框架介绍:
validator组件可以插到struts应用程序中,灵活的配置验证规则,不需要使用编程的方式对数据进行验证
框架结构:
Jakarta的ORO包
包含正则表达式、完成替换以及文本切分等功能
Commons-validator.jar
提供了一个验证框架,包含通用的验证方法和规则
validation-rules.xml
包含验证类的一些配置,有验证别名,验证处理类,验证方法,属性类型,错误信息等
validation.xml
主要是用户配置的一些对指定ActionForm Bean的属性验证规则
注意点:
静态的ActionForm不能直接使用验证框架,如果要使用,必须继承ValidatorForm本类或者其子类
动态的ActionForm如果要是用验证框架,必须继承DynaValidatorForm本类或者其子类
操作流程:
(1).创建表单
(2).创建ActionForm,继承ValidatorForm
(3).在struts-config.xml文件中的form-beans中配置AcitonForm的信息
(4).在validation.xml文件中配置要验证的信息
在<formset>标签中添加子元素<form name="要验证的ActionForm在struts-config.xml中的别名">
在form元素中添加子元素<filed property="ActionForm的属性名" depends="验证方式">标签
自定义转换器
用途:
转化自定义类型,当一个类中有把另一个类作为属性时
步骤:
(1).书写一个转化类,实现Converter接口,并实现其方法
(2).书写插件类,实现PlugIn接口,并实现其方法
(3).在struts-config.xml文件中的message-resourec后写入标签<plug className="插件的全路径" />
Struts 框架体系
最新推荐文章于 2021-02-16 09:22:24 发布