这里是自己对自学的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标签不怎么用:

Java-strurs总结的更多相关文章

  1. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  2. 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题

    背景起因: 记起以前的另一次也是关于内存的调优分享下   有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...

  3. Elasticsearch之java的基本操作一

    摘要   接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...

  4. 论:开发者信仰之“天下IT是一家“(Java .NET篇)

    比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...

  5. 故障重现, JAVA进程内存不够时突然挂掉模拟

    背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...

  6. 死磕内存篇 --- JAVA进程和linux内存间的大小关系

    运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...

  7. 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用

    有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...

  8. Java多线程基础学习(二)

    9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...

  9. Java多线程基础学习(一)

    1. 创建线程    1.1 通过构造函数:public Thread(Runnable target, String name){}  或:public Thread(Runnable target ...

  10. c#与java的区别

    经常有人问这种问题,用了些时间java之后,发现这俩玩意除了一小部分壳子长的还有能稍微凑合上,基本上没什么相似之处,可以说也就是马甲层面上的相似吧,还是比较短的马甲... 一般C#多用于业务系统的开发 ...

随机推荐

  1. [BZOJ 3052] [wc2013] 糖果公园 【树上莫队】

    题目链接:BZOJ - 3052 题目分析 这道题就是非常经典的树上莫队了,并且是带修改的莫队. 带修改的莫队:将询问按照 左端点所在的块编号为第一关键字,右端点所在的块为第二关键字,位于第几次修改之 ...

  2. 2016 年开发者应该掌握的十个 Postgres 技巧

    [编者按]作为一款开源的对象-关系数据库,Postgres 一直得到许多开发者喜爱.近日,Postgres 正式发布了9.5版本,该版本进行了大量的修复和功能改进.而本文将分享10个 Postgres ...

  3. 详解Linux配置iSCSI方法

    iSCSI技术是在2001年初由IBM及Cisco联合制定的技术,在2003年5月微软在 Windows 2003中 开始自己正式支持iSCSI微软此举很大程度上的推动了iSCSI技术的发展.下面为大 ...

  4. WordPress HMS Testimonials 多个跨站脚本漏洞和跨站请求伪造漏洞

    漏洞名称: WordPress HMS Testimonials 多个跨站脚本漏洞和跨站请求伪造漏洞 CNNVD编号: CNNVD-201308-199 发布时间: 2013-08-22 更新时间: ...

  5. (转载)MySQL默认INFORMATION_SCHEMA,MySQL,TEST三个数据库用途

    (转载)http://www.45it.com/database/201204/29390.htm 本文简要说明了MySQL数据库安装好后自带的INFORMATION_SCHEMA,MySQL,TES ...

  6. LoadRunner的场景设置

    loadrunner场景设置的方法: 1.逐步增加用户数,分多次去运行场景.比如:第一次运行50并发,第二次运行100并发…… 2.针对同一个脚本设置多个组,使用组策略(点击Edit Schedule ...

  7. Selenium 前期学习

    一.了解selenium必读文档: 官方文档:http://docs.seleniumhq.org/docs/03_webdriver.jsp 二.公司使用c#开发,配合开发的要求,使用visual ...

  8. 自定义UITableView的Seperator

    在默认配置中 ,UITableView的Cell之间的Seperator左边总是空出一块,即使在Storyboard中设置为0 ,也没有效果 需要在代码中进行配置,在ViewController中实现 ...

  9. 使用devpartner的blockchecker检查c++内存错误

    在仿写stl的过程中,被一处内存错误卡了很久.当内存池需要多次malloc时会出现堆损坏的错误,初步判断是数组越界,但总是检查不出来.一开始用Dr.Memory检查不出来,就试了一下devpartne ...

  10. Sorting Algorithm

    sorting 应该是最容易被考到的东西,自己老是学了背,背了忘.为了方便复习,这里进行总结 1. Bubble Sort 定义:每两个两个比较,每扫完一次,当前扫过的最大值放在了末尾. for i ...