Java-strurs总结

这里是自己对自学的struts2 的一个整体 的脉络进行的一个概括,需要学习哪些东西,注重哪些东西:

struts2 是主流框架SSH 中的一个"S" ,准备MVC开发标准的一个框架,strtus2 在MVC框架中充当“C”层,也就是控制器部分,

主要功能:实现界面和逻辑代码的分离 (请求和视图分离)(显示和调用分离)

学习大纲:

Action :

Result:

OGNL和valueStack:

Taglib:

Action :

    1. Namespace     想当与包名,用来区分相同的Action名

    2.定义Action

    3.路径Path   指定basePath

    4. Action 自定义   继承ActionSupport类,这个工具类封装了很多方法

    5.DMI(Dynamic Method  Invocation )   动态的方法调用,不仅限与内置的excute()方法

    6.通配符  通过通配符, “*” 能够实现对action配置文件的简化,

   7.接收参数(3种方式)

         <1> 直接通过action的属性进行接收,直接在action中定义相同名的属性,进行接收(可利用率低)

         <2>  通过DomainModel 域接收,new一个对象,接收对象,通过传入对象的属性,去取出得到的对象的属性就是传入的值,这样,目标明确,针对性强,通常直接new bean对象就行了,                       不过,如果遇到那种“输入密码和重复输入密码的问题的时候”,就需要建立一个vo.do.dto进行接收后转换了再传给DomainModel

         <3> 通过ModelDriven 模型驱动进行接收,实现驱动模型接收,少用

   8.中文乱码问题

         配fitler中的i18n一般就能解决接收参数的中文乱码问题,不过,这里的fitler问题很奇怪,详情参见以前的一篇文章

   9.数据验证

       数据验证,如果出错,可以返回一个错误的标识符,然后在jsp页面进行显示,

       这里调用的是值栈里面的值,所以能够直接的取得

  10.值栈

  11.访问web元素

        <1> Map方式,通过复制传递

              ActionContext.getContext().getSession().put("name","sunzhiyan");

       <2> 泛型,实现接口(IOC)

              private Map<String , Object> request;

              get set 方法

              request.put("name","sunzhiyan");

        <3> 直接拿

              ServletActionContext.getRequest().setArrribute("name","sunzhiyan");

         <4> 依赖注入  很少用

Result:

  1.type

     Dispatche       是服务器跳转 Redirect        是客户端跳转 Chain                     服务器跳转到Action  RedirecAction    客户端跳转到Action

  2.全局结果集

      有时候如果验证错误,需要跳转到错误页面的似时候,不会一个个的去配置action,就直接定义一个公共的action专门用来导向错误页面,这里就涉及到全局结果集

<global-results> 

<result name="error">/404.jsp</result>

</global-results>

如果涉及到跨包的问题的时候,需要用到<parm>标签,进行跨包的处理

OGNL和valueStack:

OGNL

是一种存取对象的属性,调用对象的方法。

OGNL能访问静态方法,访问复杂对象,访问List,Map

是从Action在数据的现实页面取得数据的一种方法,记住只有传值才会初始化构造方法,因此构造方法需要重载一个空的

值栈:

valueStack:

ActionStack:

,一个轻量级的内存数据中心,分为值栈和栈上下文,取上下文的东西需要用“#”

Taglib:

数据标签:

property: 从值栈中取值

set:  设置值

push:

date:  时间的出入格式,自带格式住转换

bean:

debug: 看值栈中的内容

url:

a:

include: 包含标签,不过一般不怎么用

param:

控制标签:

if elseif else: 控制标签

iterator:  迭代标签

append:

generator:

UI标签不怎么用:

原文地址:https://www.cnblogs.com/sunxun/p/4157392.html