Struts 框架体系

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="插件的全路径" />

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值