Java后台框架篇--Struts2.0之总结

一、MVC框架

1MVC框架由视图、模型、控制器组成。

学过的有开发模式二servlet+jsp+javaBean,其中servlet充当控制器,负责处理请求和控制业务流程,JSP充当视图,负责输出响应结果,javaBean充当模型,负责具体的业务逻辑和业务数据。

   2、优点:分离了表示和业务,明确了开发人员和网页设计人员的角色定义和职责分工。

   3、缺点:缺乏对分布式组件对象的访问支持,缺乏事务执行和管理的分布性。

二、struts框架

Struts是基于MVCWeb应用框架

1、视图:JSPHTML文件,ActionFormBean

2、模型:表示应用程序的状态和业务逻辑,有JavaBean EJBHibernateSpring

3、控制器:由ActionServletAction组成。

4、配置文件struts-config.xml

三、struts框架的内部组件

1、视图组件:ActionFormBean,提供对国际化,接收用户输入的表单数据、表单验证和错误处理等的支持。ActionFormBean就是由struts框架提供的DTO对象,用于在视图层和控制层之间传递HTML表单数据。分为静态和动态的ActionFormBean

1)、静态ActionFormBean

·创建自己的ActionForm必须继承ActionForm类,属性和表单中的字段一一对应。

·struts-config.xml中配置<form-bean  name =”别名” type=”包名+类名”>

  <action path=” ” type=”” name=”” validate=”” input=”” attribute=””  scope=””>

  其中:path:客户端请求的路径,和<form>表单中的action的路径对应。

        Type:当前请求由哪个应用控制器处理

        Name:表示当前请求需要填充哪个ActionForm

        Validate:当前表单是否需要做表单验证,默认为true

        Input:表示表单验证失败后,转向的页面路径

        Attribute:请求时将ActionForm放在作用域中的键名

        Scope:请求时将ActionForm放在哪个作用域下,默认为session

2)、动态ActionFormBean

   DynaActionForm,避免类爆炸,是ActionForm的子类。不用建类,属性和属性名由配置文件描述。

   <form-bean  name=”log” type=”org.apach.sturts.action. DynaActionForm”>

      <form-property name=”userName” type=”String”>

      取值:DynaActionForm  df =( DynaActionForm) form

            Object  obj =df.get(“name”)

2、控制器组件

 1ActionServlet组件,充当struts框架的中央控制器,所有的用户请求都先由ActionServlet来处理,然后再把请求转发给其他组件。一个应用只能配置一个ActionServlet类,由web.xml配置初始化。

2)应用控制器Action,是用户请求和业务逻辑的桥梁,调用execute方法完成用户请求的业务逻辑,根据执行结果将请求转发到其它Web组件。常用的内置Action有三种:

AForwardAction

     请求转发跳转页面,为了给页面解藕

     <action>标签中配置type=”org.apache.struts.actions.

ForwardAction” parameter=”跳转的页面.jsp”

BIncudeAction

包含另一个Web组件

<action>标签中配置type=”org.apache.struts.actions.IncudeAction” parameter=”跳转的页面.jsp”

     CDispatchAction

        在一个类中实现一组相关业务,适用于逻辑简单的业务。

       · 创建一个类继承DispatchAction类,添加的业务操作方法必须和execute()方法有同样的参数和返回类型,抛出异常。

       ·struts-config.xml中配置<action path=””  type=”” name=””  

         Parameter=”method”>

       ·JSP页面表单中写隐藏表单

         <input type=”hidden” name=”method” value=”业务方法名”>

  3)模型组件

       包含了业务实体和业务规则,负责访问和更新持久化数据。

四、struts工作流程

    1、用户以*.do方式发出请求,该请求找到ActionServlet

    2、当ActionServlet收到一个客户请求时,会根据struts-config.xml 找到相关Action信息。

    1)检索和用户请求相匹配的ActionServlet实例,如不存在,就返回请求路径无效。

    2)如果ActionForm实例不存在就创建一个ActionForm对象,把客户提交的表单保存在一个ActionForm对象中。

    3)根据配置信息决定是否需要表单验证,如果需要验证,调用ActionFormvalidate方法。

    4)如果ActionFormvalidate方法返回null或返回一个不包含ActionMessageActionError对象,就表示表单验证成功。

    5ActionServlet会根据ActionMapping实例包含的映射信息决定将请求转发到哪个Action,如果该Action不存在,就会创建一个实例,然后调用Actionexecute方法。

    6Actionexecute方法返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward指定的JSP组件。

    7ActionForward对象指定的JSP组件生成动态网页返回客户。

     (如果表单验证失败,ActionServlet将直接把请求转发给包含用户提交表单的JSP组件,此时不会再创建Action对象)。

五、Struts标记

    1、基本的HTML标记

    1<html:html>

         显示html元素,html标签表单的值可以和ActionForm的属性值进行绑定,还可以将请求路径进行URL路径重写。

    2<html>表单

         <html:form action=””>创建表单

         <html:text property=””>生成表单文本框字段,property的字段名和ActionForm属性值相对应

         <html:hidden property>生成隐藏字段,property属性指定隐藏字段的名字

         <html:select property >生成下拉列表,property属性和ActionForm属性值相对应

         <html:option>生成可选项

     3<html>显示消息

          <html:errors>显示包含ActionMessage对象包含的消息

          <html:messages><html:errors>相似,message属性指定消息来源

2bean标签库

       <beanwrite>

       Request.setAttribute(“date”,new Date());

       <bean:write name=”date” format=”YYYYMMdd”> 

    3Logic标签库,用在JSP页面中控制流程

<logic:iterate>迭代元素

          如:<logic:iterate  id=”bean” name=”list”>

              ${bean.id}

       <logic:equal>比较变量是否等于指定的值

       <logic:present>判断指定的对象是否存在

       <logic:match>判断的指定的对象是否等于指定字符串

 六、 struts验证框架

      1、将validator-rules.xml,validation.xml放在工程中的WEB-INF下。

2、在struts-config.xml的最后加入

 <plug-in className="org.apache.struts.validator.ValidatorPlugIn">

        <set-property  property="pathnames"

        value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>

        </plug-in>

3、将validator-rules.xml注释中所有error开始的键值对,加入资源文件中,以显示验证失败信息。

4、建立ActionForm。该类不能继承ActionForm,必须继承ValidatorForm,并且不能重写validate方法

5、在validation.xml中书写表单具体的验证规则。

   七、表单验证

1、在src目录下建mesaage.properties,写上键值对,键为需要验证的表单属性名,值为提示的错误信息。

2、在ActionForm中重写validate方法,创建ActionErrors对象,判断验证的信息,返回错误信息。

3、在struts-config.xml中配置

   <message-resources  parameter=”message”></message-resources>

4、在JSP页面中导入

<%@ taglib prefix="html"  uri="http://jakarta.apache.org/struts/tags-html" %>

<%@ taglib prefix="bean"  uri="http://jakarta.apache.org/struts/tags-bean" %>

<body>标签中写入<html:errors>输出对应信息

缺点:这种验证方式必须通过编码实现,当逻辑发生变化时,会重新进行编码,当有相同逻辑时,又会进行重复编码,重用性降低。

解决:所以用上面那个Sturts验证框架,灵活的配置了验证规则,不需要使用编程的方式进行数据验证。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值