模拟struts框架技术

 Struts实质上就是在JSP model2java+servlet+javabean)模式的基础上实现一个MVC框架。我先简单说下MVC,MVCmodel—view—controller简称,即模型---视图控制器。工作原理如下:(见附件)

视图是与用户交互的界面,模型来表示业务数据和逻辑数据,而控制器是接受用户数据并调用模型和视图去完成用户需要。

struts框架中,模型由实现业务逻辑的javaBean或者EJB组成,控制器由一个基类Action和一些xxxAction来实现,视图由一些JSP文件构成。下图是struts实现的MVC框架流程:(附件)

 

Struts就是在MC两层中间加上一个MVC,在这个MVC里,

M层是应用程序的状态和业务逻辑,由一些javaBeanEJB组件来实现。

V层是JSP组件,没有业务代码,模型。只有标签,如用户自定义标签库等。

C层是由ActionServletAction类来实现的。

ActionServlet是整个框架的核心,继承HttpServlet,主要负责接收Http请求,根据用户的struts-config.xml配置文件,把请求转发给相应的Action,如果Action不存在,ActionServlet会先创建这个Action对象。而Action负责调用模型的方法,更新模型状态,并帮助控制应用程序的流程。

ActionServlet控制器接收到Http请求后,通过配置映射的struts-config.xml文件,把请求转发给一个Action实例,而每个Action的映射信息都通过<action>元素来配置,并以元素里一个path属性来制定请求的uri,并用属性name来匹配Action对象。如果这个Action实例不存在,ActionServlet先会创建它,然后调用Actionexcute()方法,Actionexcute()方法会返回ActionForward对象,它封装了请求转发给其他web组件的信息。

这些配置信息在ActionServlet容器启动并初始化的时候,通过this.getServletContext().getRealPath(this.getInitParameter(xxx路径/struts-config.xml))的方式读入到内存,供在运行期间使用,而每一个<action>元素都对应一个ActionMapping类的实例。

下面就我的struts-config.xml配置文件详细解释如下:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mystruts-config SYSTEM "struts-config.dtd">

 

<mystruts-config>

   <form-beans>

      <form-bean name="loginform" type="yy.struts.form.LoginForm" />

   </form-beans>

  

   <action-mappings>

     <action

         name="loginform"

         type="yy.struts.action.LoginAction"

         path="login"

         scope="session"

         validate="true"

         input="error.jsp"

         redirect="false"

         >

         <forward

           name="sucess"

           path="sucess.jsp"/>  

     </action>

   </action-mappings>

</mystruts-config>

在上面的配置文件里,首先呢,如果需要关联外部的DTD文档,有三种方式:

1.       使用内部DTD  直接定义

2.    使用外部DTD  <!DOCTYPE mystruts-config SYSTEM "struts-config.dtd">

3.使用公共的DTD   <!DOCTYPE mystruts-config PUBLIC  "struts-config.dtd">

每个<form-bean>对应每个formBean模型,并以属性name代表制定要传给的xxxFormBeantype代表xxxForm的完整路径。

    action-mapping里的<action>元素:name属性代表要传递给ActionFormBeantype属性制定Action的完整类名,path制定要访问的Action路径,scope制定要存放的范围,validate制定是否需要进行表单验证,input制定表单验证失败后的转发路径,redirect制定是否需要重定向。还有一个<forward>是来制定要转发的路径。

现在对struts框架了解后,也说了怎么实现的。下面是它的作用:

1.获取表单内容,并组织生成参数对象
2.根据请求的参数转发请求给适当的控制器
3.在控制器中调用业务接口
4.将业务接口返回的结果包装起来发送给指定的视图,并由视图完成处理结果的展现
5.做一些简单的校验或是国际化工作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值