SSH知识点

MVC\Struts简介

1. MVC设计模式的基本流程
   a. 用户的请求首先到达控制器(servlet)。
   b. 由控制器分析用户的的请求(一般根据act)作出对应的处理,处理流程:
      1)从request中获取和所申请的操作相关的数据,必要的时候还要封装入javabean.
      2) 调用对应的业务逻辑(service)对相关数据进行处理
      3)业务逻辑处理结束后,一般会返回一些数据。
      4)servlet获取数据后,一般保存到某个范围,然后调用对应的视图组件对该内容进行渲染。
   c. service很可能有一些数据必须持久化,那么在这个位置上可以调用对应的数据DAO来完成对象的持久化操作。


2. JSP/SERVLET形态下的MVC B/S设计的缺点
   缺点整体上就是编码上比较繁琐,有一定改良空间,能大幅提高效率。


   a. request中参数的获取、数据类型的转化和javabean的封装。 
   b. 表单数据回填的繁琐
   c. 国际化参数设置
   d. 代码模块化设计上的问题
   e. 不容易测试
   f. 硬编码过多


   MVC设计模式非常优越,但纯粹使用jsp/servlet来做MVC开发,程序员太累,效率不够高,在对该技术熟练了解的基础上,可以采纳struts2 MVC framework提高开发效率。 struts2是MVC框架,其主要目的是把常见的操作函数化,用户只要调用即可,大幅减少技术含量不高的操作。
   使用STRUTS2也是有开销的,其运行速度大幅低于直接用jsp/servlet做MVC开发。Struts2的开销大于1.x.




3. STRUTS简介
   1. struts 1.x  (structure)
      JAVA MVC Framework


   2. Struts 2.x
      Webwork




4. Struts2的下载和下载包结构说明


5. 最基础的struts2工程所依赖的jar包


6. struts2运作机制
   1. struts2进入系统,主要通过filter形态介入。struts2会分析所有的请求链接,如果发现某个链接属于struts2处理,struts2的机制才开始工作。
   2. struts.xml文件(structs配置文件)规定了什么样的链接后缀,该由struts2来处理 (struts.action.extension)。
   3. struts2包的概念

Struts详细介绍

1. struts2配置文件的分离
   在多人开发环境,用于很多人都需要往struts2配置中写入配置信息,就会出现文件的争用问题(冲突),那么
   为了避免出现这样的情况,struts支持多个配置文件,也就是把一个配置文件分成多个,一个模块一个配置文件    ,一个模块对应一个开发小组。




2. 包的概念
   同样一个action的名字很多人都喜欢用,比如某模块的默认访问页面经常叫做index.action,在这种情况下,struts2借鉴了java包的概念,用来来进行模块隔离,而各个包中,action名字可以出现雷同,只要在同一包中不雷同即可。


   package 
     name: 名字在这边没有太多的意义,一个包真正的命名概念应该是命名空间,名字专为继承而生。
     namespace: 命名空间是一个包的唯一标识,比如访问命名空间/abc中名字a的action, 链接如下:
       /abc/a.action (如果你没有给struts2指定后缀扩展,默认是action作为struts2应用后缀扩展名)
     这里额外要说明一下,如果我们在/abc这个命名空间中,找不到名字为a的action, 则strut2会继续到一个叫
     根命名空间(/)去查找  /abc/a.action  -> (not found) -> /a.action -> (not found) -> error
     extends: 继承与扩展
       后跟包名, 一个package继承了另外一个package,将获得这个package中所有的资料。


3. 认识struts-default.xml
   a. 几个默认:
     一个action没有指定类名,默认是com.opensymphony.xwork2.ActionSupport。
     一个action没有指定interceptor, 默认是defaultStack.
     一个result没有指定name, 默认是success.
     一个result没有指定类型,默认是dispatcher (forward).


     class ActionSupport{
       String execute(){
         return "success";
       }
     }


     一个包中,如果访问的时候,出现了没有被具体声明的action,系统将自动访问默认action,
     <default-action-ref name="index" />




   b.几个全局类型的说明
     <global-results>
            <result name="error">/error.jsp</result>
     </global-results>    


     如果在多个action中,存在相同的result, 名字相同而且链接地址也相同,在此情况下,无需每个action
     都做重复声明,而只要编写一个global result即可。


     <global-exception-mappings>
            <exception-mapping exception="java.lang.Exception" result="error"/>
     </global-exception-mappings>
     
     
   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值