Struts2开发手册- 马士兵 - 图文
更新时间:2024-06-12 05:16:01 阅读量: 综合文库 文档下载
- struts2开发手册推荐度:
- 相关推荐
Struts2 学习笔记
---wjt276
[二○一○年一月五日 完]
目录
01 Struts2-Action .............................................................................................................................................................................................. 5
一、 二、 三、 四、 五、 六、 七、 八、 九、
1、 2、 3、 十、 十一、 十二、
一、 二、 三、 四、 十三、 十四、 十五、 一、 二、 三、 四、 五、 六、
Struts作用: ..................................................................................................................................................................... 5 搭建Struts2的运行环境: ............................................................................................................................................... 5 Namespace ............................................................................................................................................................................ 6
02 Struts2-Result ............................................................................................................................................................................................ 19
03 OGNL表达式语言 ..................................................................................................................................................................................... 23 04 Struts2-Tags ............................................................................................................................................................................................... 28
Struts2标签目录 ................................................................................................................................................................................ 28 一、 二、 三、 四、 五、 六、 七、
property标签 ................................................................................................................................................................... 28 set标签 ............................................................................................................................................................................. 29 bean标签 ........................................................................................................................................................................... 29
05设计约定(编码规定) ................................................................................................................................................................................. 32 06 项目开发顺序 .......................................................................................................................................................................................... 32 07 声明式异常处理 ...................................................................................................................................................................................... 33 08 国际化 ...................................................................................................................................................................................................... 35
一、 二、
国际化资源文件 ................................................................................................................................................................ 35 Java国际化 ....................................................................................................................................................................... 35
三、
1、 2、 3、 四、 五、
Struts学习笔记 第3页 共39页
Struts2国际化 ................................................................................................................................................................. 35 Action级别 ................................................................................................................................................................... 35 Package级别 ................................................................................................................................................................. 36 Application级别 ......................................................................................................................................................... 36 资源文件中的参数处理 ..................................................................................................................................................... 37 国际化-动态语言切换 ....................................................................................................................................................... 37
09 自定义拦截器 .......................................................................................................................................................................................... 38 10 类型转换 .................................................................................................................................................................................................. 38 Struts2总结 ................................................................................................................................................................................................... 39
目录
? Action
? 简单数据校验 ? Result
? 常用配置文件 ? OGNL & ValueStack ? Tags
? ---------------------Project
? 类型转换、上传与下载、interceptor、防止重复提交 ? MVC思想深入剖析 ? 源码解读 ? 其他话题
Struts学习笔记 第5页 共39页
01 Struts2-Action
一、 Struts作用:
将请求与结果分开
二、 搭建Struts2的运行环境:
1、建立Web项目;
2、建立Struts2的配置文件(struts.xml);
将Struts2的空项目中的配置文件(struts.xml)复制到项目的src目录下。 配置如下:
Struts学习笔记 第6页 共39页
将空项目中lib目录中的除junit和spring-test之外的所有文件复制到项目的WebRoot/WEB-INF/lib目录下 4、修改对应的web.xml,建立struts2的filter(参考struts自带的项目),添加如下配置:
三、 Namespace
Namespace决定了action的访问路径,默认为“”,可以接收所有路径的action,如果没有找到相应的namespace时,则使用namespace为空的action
Namespace可以写为/,或者/xxx,或者/xxx/yyy,对应的action访问路径为/index.action、/xxx/index.action、或者/xxx/yyy/index.action.
Namespace最好也用模块来进行命名。
namespace :对应与项目名称后面的\例如Struts2_0100_Introduction后面的\ (http://localhost:8080/Struts2_0100_Introduction/)
四、
五、 Action 具体视图的返回可以由用户自己定义的Action来决定 具体的手段是根据返回的字符串找到对应的配置项,来决定视图的内容,有三种手段: Struts学习笔记 第7页 共39页 第三种:Action 继承com.opensymphony.xwork2.ActionSupport类,而这个类又实现了com.opensymphony.xwork2.Action接口,我们重写execute()方法就可以了。 import com.opensymphony.xwork2.ActionSupport; public class IndexAction3 extends ActionSupport { } 注:第三种Action是我们需要使用的方式,因为这个类不担实现了com.opensymphony.xwork2.Action接口,更重要的是它已经帮我封装了许多其它有用的方法。 六、 路径问题的说明 @Override public String execute() { //return \ return this.SUCCESS;//SUCCESS常量值为:\ } struts2中的路径问题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径。 虽然可以用redirect方式解决,但redirect方式并非必要。 解决办法非常简单,统一使用绝对路径。(在jsp中用request.getContextRoot方式来拿到webapp的路径) 或者使用myeclipse经常用的,指定basePath 还有另一种方式,就是在
<% String path = request.getContextPath();// String basePath = request.getScheme()+\+request.getServerName()+\+request.getServerPort()+path+\; %>
Action执行的时候并不一定要执行execute方法,我们可以指定Action执行哪个方法: 1、 方法一(通过methed属性指定执行方法):
可以在配置文件中配置Action的时候用method=来指定执行哪个方法
2、 动态方法调用DMI(推荐)
Struts学习笔记 第9页 共39页
可以在url地址中动态指定action执行那个方法。Url地址如下: http://localhost:8080/Struts2_0500_ActionMethod/user/user!add 方法:action + ! + 方法名 注:只要Action对象中有这个方法,并且返回类型为String就可以调用。 这样Struts.xml配置文件中不需要配置methed属性。代码如下:
使用通配符,将配置量降到最低, 不过,一定要遵守\约定优于配置\的原则 1、 通配符 星号(*) 表示所有 {数字} 表示第几个通配符 例如:Student* 那么{1}代表第一个星号(*) 2、 实例 *_* 那么{1}代表第一个星号(*) ,{2}代表第二个星号(*) public String add() { return SUCCESS; }
九、 Action的属性接收参数
Action中三种传递并接受参数:
Struts学习笔记 第10页 共39页
1、 在Action添加成员属性接受参数
例如请求的URL地址:
http://localhost:8080/Struts2_0700_ActionAttrParamInput/user/user!add?name=a&age=8 其中传递了两个参数:name和age,其值分别为:a、8,此Action执行的是add()方法。 那我们只要在user这个Action对象中添加这两个成员属性并生成set、get方法。
public class UserAction extends ActionSupport { } 2、 域模型(Domain Model)
就是利用对象域来进行传递和接受参数 例如请求的URL地址:
http://localhost:8080/Struts2_0800_DomainModelParamInput/user/user!add?user.name=a&user.age=8 其中,访问的是namespace=”/user” action的name=”user” Action所执行的方法method=”add”
利用对象域user来传递参数,为对象的属性赋值(user.name=a user.age=8) 注:需要一个对象user 并且这个对象需要有两个成员属性,且具有get、set方法。 然后在Action中添加一个User对象的成员属性。并且有get、set方法,就可以了。
private String name; private int age; public String add() { } public String getName() { } public void setName(String name) { } public int getAge() { } public void setAge(int age) { this.age = age; } return age; this.name = name; return name; System.out.println(\ + name); System.out.println(\ + age); return SUCCESS; //User对象 public class User { private String name; private int age; public String getName() { } public void setName(String name) { this.name = name; return name;
Struts学习笔记 第11页 共39页
} public int getAge() { } public void setAge(int age) { } }
//Action类 public class UserAction extends ActionSupport { private User user; //private UserDTO userDTO; public String add() { } public User getUser() { } public void setUser(User user) { } } 3、 ModelDriven接收参数
return age; this.age = age; System.out.println(\ + user.getName()); System.out.println(\ + user.getAge()); return SUCCESS; return user; this.user = user; 使Action实现com.opensymphony.xwork2.ModelDriven
参数被传入至Action后,会被ModelDriven对象根据参数名自动赋值给User对象相应的属性而生成User对象,并且由getModel()返回。那么我们在Action中就可以利用这个对象了。
注意:传入的参数名需要与对象模型中的成员属性一致。 对象模型User:
public class User { private String name; private int age; public String getName() { } public void setName(String name) { } public int getAge() { this.name = name; return name; Struts学习笔记 第12页 共39页
}
} return age; public void setAge(int age) { } this.age = age; Action对象
import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; public class UserAction extends ActionSupport implements ModelDriven
如果表单提交数据中有中文时,尽量使用post方式。 需要在Struts.xml配置文件中加入一个常量配置,如下:
System.out.println(\ + user.getName()); System.out.println(\ + user.getAge()); return SUCCESS;
使用addFieldError方法和s:fieldError标签简单处理数据校验 场景:对一个用户名进行验证,如果用户名不合法,则显示给客户端查看信息。 URL请求地址: http://localhost:8080/Struts2_1100_SimpleDataValiation/user/user!add?name=a 分析:访问的Struts2配置,namespace=”/user” action的name=”user” Action所执行的方法method=”add”并且传入了一个参数name=a.如下:
根据配置文件可以得知action所对应的类为com.bjsxt.struts2.user.action.UserAction,并且具有两个结果集(success和error).代码如下: import com.opensymphony.xwork2.ActionSupport; public class UserAction extends ActionSupport { } 根据Action类代码,可以看到Action是利用Action的成员属性(name)来接受参数值,并且使用this.addFieldError()方法添加错误信息,以便前台可以访问到。 private String name; public String add() { } public String getName() { } public void setName(String name) { } this.name = name; return name; if(name == null || !name.equals(\)) { } return SUCCESS; //addFieldError 添加错误信息,可以在客户端访问到。 this.addFieldError(\, \); this.addFieldError(\, \); return ERROR; this.addFieldError(name, errorMessage); 注:此方法是使用继承了ActionSupport父类的 name:可以是傻的属性名称,但一般建议使用哪个成员属性出题了,就用那个。当前是因为name没有通过验证,所以使用name errorMessage:添加的信息 在客户端获取这些信息,如下:
User Add Error!Struts学习笔记 第14页 共39页
2、
取得Map类型request,session,application,真实类型 HttpServletRequest, HttpSession, ServletContext的引用:
1. 前三者:依赖于容器 2. 前三者:IOC (只用这种) 3. 后三者:依赖于容器 4. 后三者:IOC
一、 方法一:ActionContext方式
Struts学习笔记 第15页 共39页
一般在Action类的构造方法、或execute()方法中获取。
public class LoginAction1 extends ActionSupport { } 然后在Jsp页面中获取相关web元素。
User Login Success!private Map request; private Map session; private Map application; public LoginAction1() { } public String execute() { } request.put(\, \); session.put(\, \); application.put(\, \); return SUCCESS; request = (Map)ActionContext.getContext().get(\); session = ActionContext.getContext().getSession(); application = ActionContext.getContext().getApplication(); 注:因为request、session、application对象Struts2将在放入到Action Context中, 因此需要使用#key来访问对象们。 后面的是java脚本代码的访问方式。 二、 方式二:Ioc(控制反转)—推荐使用
让Action类实现RequestAware、SessionAware、ApplicationAware接口,然后重写他们的set方法(setRequest、setSession、setApplication),通过依赖注入、控制反转(原来自己控制,现在由别人来控制值。) import org.apache.struts2.interceptor.ApplicationAware; import org.apache.struts2.interceptor.RequestAware;
Struts学习笔记 第16页 共39页
import org.apache.struts2.interceptor.SessionAware; import com.opensymphony.xwork2.ActionSupport; public class LoginAction2 extends ActionSupport implements RequestAware,SessionAware, ApplicationAware { } 在视图(JSP)页面中获取相关对象,同方式一。
三、 方式三:获取原类型
private Map
}
四、 方式四:获取原类型-控制反转
首先需要Action实现org.apache.struts2.interceptor.ServletRequestAware接口,然后重写setServletRequest()方法,获取HttpServletRequest对象,再通过HttpServletRequest对象取昨HttpSession和ServletContext对象。
import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.struts2.interceptor.ServletRequestAware; import com.opensymphony.xwork2.ActionSupport; public class LoginAction4 extends ActionSupport implements ServletRequestAware { } 十三、 Struts2配置文件模块化包含(include)
private HttpServletRequest request; private HttpSession session; private ServletContext application; public String execute() { } @Override public void setServletRequest(HttpServletRequest request) { } this.request = request; this.session = request.getSession(); this.application = session.getServletContext(); request.setAttribute(\, \); session.setAttribute(\, \); application.setAttribute(\, \); return SUCCESS;
当Struts配置文件比较多,需要模块化划分或分开成为多个配置文件时,这个功能比较好。
则需要使用
则需要在struts.xml文件中使用
十四、 默认的Action
当用户访问的namespace下一个不存在的Action,则会将使用默认的Action。
使用
十五、 Action总结
1、 实现一个Action的最常用的方式:从ActionSupport继承 2、 DMI动态方式的调用:! 3、 通配符配置:* {1} {2}
4、 接收参数的方式(一般属性或DomainModel来接收) 5、 简单参数验证addFieldError
a) 一般不使用Struts的UI标签 6、 访问Web元素
a) Map类型
i. IoC ii.
依赖Struts2
b) 原始类型 i. IoC ii.
依赖Struts2
7、 包含文件配置
Struts学习笔记 第19页 共39页
02 Struts2-Result
一、 Result类型 (type)
1、 dispatcher
运用服务器跳转 jsp forward 不可以是Action,只可以跳转到视图 2、 redirect
客户端跳转(重定向)-url发生变化 不可以是Action,只可以跳转到视图 3、 chain
跳转到Action (forward action) 可以动用到Action
在访问Action时,Action前面不要加”/” 4、 redirectAction
客户端跳转到Action――-url发生变化 5、 freemarker 6、 httpheader
发送一个http头 7、 stream
下载 8、 velocity 9、 xslt
10、 plaintext
返回页面的源码 11、 titles
把页面分成几块,每个页面都可以动态的指定
注:当访问不同的namespace下的Action时,则使用如下方式:
当有多个Action使用同一个结果集时,则可以使用全局结果集(Globle Result),如下:
UserAction
public class UserAction extends ActionSupport { } UserAction返回的结果集中有”mainpage”,但是user的Action中并没有”mainpage”的Rsult,这时就会使用全局的结果庥(global-result),这人结果集中有”mainpage” 当其它不同的package需要使用这个全局的Result时,则需要使用
三、 动态的结果集(dynamic result)
Struts学习笔记 第21页 共39页
private int type; private String r; public String getR() { } public void setR(String r) { } public int getType() { } public void setType(int type) { } @Override public String execute() throws Exception { } if(type == 1) r=\; else if (type == 2) r=\; return \; this.type = type; return type; this.r = r; return r; 也就是向结果集传参数 服务器forward共享一个值栈(Value stack) 客户端跳转则不共享 例如:
UserAction类: public class UserAction extends ActionSupport { } 因为当执行Action后,已经将Action的成员属性写入了值堆栈了,因此可以在配置文件中使用${type}取出type的值。 但是只有Action才具有值堆栈的。Jsp是没有什么值堆栈的。因为当result重新定向到/user_success.jsp?t=${type}后,是不能从值堆栈中取出t的值。但是有ActionContext的,所以可以从中取出t的值。JSP代码如下:
User Success! from valuestack:from actioncontext:
1、 常用的四种类型
a) dispatcher(默认)
b) redirect c) chain
d) redirectAction
2、 全局结果集
a) Global-result | extends 3、 动态结果集(了解)
a) 在Action中保存一个属性,存储具体的结果location 4、 传递参数
a) 客户端跳转才需要传递 b) ${}表达式(不是el表达式)
六、 项目经理:
1、 界面原型 2、 设计数据库 3、 使用什么框架构 4、 设计约定(硬编码) ***
项目名称、数据库名称、配置文件名称、Action、JSP??
Struts学习笔记 第23页 共39页
03 OGNL表达式语言
使用一个实例如说明OGNL表达式语言,如下: Cat类 OGNL表达式语言访问静态方法,需要在Struts2.xml配置文件如下: Object Graph Navigation Language 对象图导航语言
User.xxx 只有传入参数,才会构造对象,或者直接在action中new也可以,但是User对象必需具有无参数的构造方法。 {}大括号 在OGNL中可以表示一个集合
public static String STR = \; public static String s() { User类 return \; }} package com. wjt276.struts2.ognl; public class User { private int age = 8; public User() {} public User(int age) { } public int getAge() { } public void setAge(int age) { this.age = age; } @Override public String toString() { } }
OgnlAction类 super(); this.age = age; return age; return \ + age; package com. wjt276.struts2.ognl; public class OgnlAction extends ActionSupport { private Cat cat; private Map
} public String execute() { } public Cat getCat() { return cat; } public Map
Struts学习笔记 第26页 共39页
} Struts2.xml配置文件:
- 访问值栈中的action的普通属性: username =
访问静态方法:
访问普通类的构造方法:
访问List:
访问Map中所有的key:
投影(过滤):
[]:
04 Struts2-Tags
Struts2标签目录
1、 通用标签
a) b)
Property Set
i. 默认为action scope,会将值放入request和ActionContext中 ii. page/request/session/application c) d) e) f) a) b) c) a)
bean
include对中文文件支持的问题,不建议使用,如需要包含,改用jsp包含 param debug
If elseif else Iterator
i. collections map enumerateon iterator array subset Theme
i. Simple xhtml(默认) css_xhtml ajax
4、 AJAX标签
a) a) b) c)
补充
$ 用于i18n和Struts配置文件 # 取得ActionContext的值
% 将原本的文本属性解析为ognl,对于本来就是ognl的属性不起作用 i. 参考
一、 property标签
格式:
2、 控制标签
1、 利用ognl表达式取值(例如:取值堆栈中的username值)
二、 set标签
注:var 用于设定变量名 Struts学习笔记 第29页 共39页
value 变量值(可以是ognl表达式),也可以是字符串 scope 就是的作用范围 request session page application action(默认) set 设定adminName值(默认为request 和 ActionContext):
定义bean,并使用param来设定新的属性值
包含文件 include _include1.html 包含静态英文文件
include _include1.html 包含静态英文文件,说明%用法
if elseif else:
六、 Iterator标签
Struts学习笔记 第31页 共39页
遍历集合:
1、 css(覆盖Struts2原来的css) 2、 覆盖单个文件 3、 定义自己的theme 4、 实战
a) b) c)
把所有主题定义为simple Fielderror特殊处理 自己控制其他标签的展现
Struts学习笔记 第32页 共39页
05设计约定(编码规定)
1、 原则:简单就是美 2、 库名:项目名 3、 表的命名:t_model名
4、 字段:保持和属性名一致(尽量不要起和数据库命名冲突) 5、 用层来划分包
com.wjt276.bbs.action model(bean) service dto(vo) 6、 Action: xxxAction 7、 *.* 8、 前台: / 9、 后台: /admin
10、 Package: “action” adminAction
06 项目开发顺序
1、 建立界面原型 2、 建立Struts.xml
a) b) c) d) e) f)
确定namespace 确定packge 确定Action的名称 确定Result
将界面原型页面进行修改,匹配现有设置 测试
3、 建立数据库(或实体类) 4、 建立Model层
5、 建立Service层(后面讲hibernate后再完美)
a)
此时可以使用Junit进行单元测试了
6、 着手开发
Struts学习笔记 第33页 共39页
07 声明式异常处理
注:Struts2支持声明式异常处理。 Struts2是通过拦截器(interceptor)来处理声明式异常处理。 要求在DAO、Service、Action层都需要抛出导演就可以了。其它的让Struts2来处理。详细过程如下: 实例: 如果在列表时出现错误,则方法如下: public List
08 国际化
一、 国际化资源文件 app_en_US.properties文件内容 welcome.msg=hello world! app_zh_CN.properties welcome.msg=欢迎您! 二、 Java国际化 要求:资源文件要求存放在classpath的根目录下(src下)。 然后再建立一个Java类和一个main方法如下:这样就可以进行国际化处理了。 public static void main(String[] args) { } ResourceBundle res = ResourceBundle.getBundle(\,Locale.CHINA); System.out.println(res.getString(\)); 命名格式:xxx_语言_国家.properties 例如:app_en_US.properties 表示美国 英语 app_zh_CN.properties 表示中国 汉语 资源文件的编码是使用UTF-8的编码,这样中文也必需是UTF-8的格式,则需要将中文转换成UTF-8的,你可以使用propertiesEditor插件来进行输入中文。 注:java.util.ResourceBundle是加载国际化资源文件的类。利用此类的getBundle()方法加载classpath下的指定开头的文件名的国际化资源文件。并且在加载时需要指定加载哪个国家的国际人资源文件。
此实例中的ResourceBundle.getBundle(\,Locale.CHINA);表示加载以\开头的国际化资源文件,并且一但国际化资源文件加载上来后,就可以使用ResourceBundle类的getSring(\)方法获取当前内容。
Struts2国际化分为:Action级别、package级别、Application级别 1、 Action级别 条件:要求国际化资源文件名的前缀同相应的Action名,并且国际化资源文件需要与相应的Action在同一个包中 例如:我们需要国际化登录页面。如下 是中国的(对应的zh_CN)的。 三、 Struts2国际化
原始代码:
Login_input这里需要对\、\、\、\进行国际化。因为登录页面的请求URL为 http://localhost:8080/struts2_3200_bbs2009_08/admin/Login-input 根据Struts2.xml的配置文件可知对应的Action为LoginAction.java.因为国际化资源文件名应是LoginAction_开头(此处为LoginAction_zh_CN.properties、LoginAction_en_US.properties)如下
Struts学习笔记 第36页 共39页
时国际化资源文件会自动加载。我们在相应的文件中可以直接访问(利用ActionSupport类中的getText()方法。)了。 我们现在只需要将登录页面代码修改就可以了。
注意:要求国际化资源文件需要与相应的Action在同一包中(见上第三个图),这样Struts2就可以保证当访问这个LoginAction
国际化资源文件以任何名称开头都可以,只是需要在Struts2.xml配置文件中告诉Struts2资源文件是以什么开头的。
Struts学习笔记 第37页 共39页
例如:现在以项目名为前缀:bbs2009
bbs2009_en_US.properties 及 bbs2009_en_US.properties
告诉Struts2资源文件是以什么开头的
场景:如果一个登录系统,用户登录后页面提示“欢迎您,xxxx”,如果是英文:”Welcome,xxx” 正常应该如下处理:先取职欢迎信息 + 再显示登录的用户名。
在某些网站中,会发现页面中有国家语言的选择,如:中文、英语、日语等语言供您选择。 Struts2也可以实现这种动态语言切换的功能,方法非常的简单。 方法:只需要传入一个参数(参数名必需为request_locale),参数值为”语言_国家”(也就是资源文件的后缀,如zh_CN、en_US)就可以了。例:如果当前访问的页面为中文并且URL为 http://localhost:8080/struts2_3200_bbs2009_08/admin/Login-input 如果需要切换成英文,则只需要传入一个参数request_locale=en_US就可以了。URL如下 http://localhost:8080/struts2_3200_bbs2009_08/admin/Login-input?request_locale=en_US 这样当前进程的浏览器就可以访问这个网站的所有页面为英文,至到这个进程结束,因为Struts2向session中写入locale值 WW_TRANS_I18N_LOCALE=en_US Struts学习笔记 第38页 共39页
09 自定义拦截器
一般99.9%用不上
10 类型转换
public class MyPointConverter extends DefaultTypeConverter{ }
public class MyPointConverter extends StrutsTypeConverter{
@Override
public String convertToString(Map context, Object o) { }
// TODO Auto-generated method stub return o.toString(); @Override
public Object convertFromString(Map context, String[] values, Class toClass) { }
Point p = new Point();
String[] strs = (String[])values; String[] xy = strs[0].split(\); p.x = Integer.parseInt(xy[0]); p.y = Integer.parseInt(xy[1]); return p; @Override
public Object convertValue(Object value, Class toType) { }
if(toType == Point.class) { }
if(toType == String.class) { }
return super.convertValue(value, toType);
return value.toString(); Point p = new Point();
String[] strs = (String[])value; String[] xy = strs[0].split(\); p.x = Integer.parseInt(xy[0]); p.y = Integer.parseInt(xy[1]); return p;
Struts学习笔记 第39页 共39页
}
a) 三种注册方式: i. ii. iii.
局部:XXXAction-conversion.properties 1. p(属性名称) = converter 全局:xwork-conversion.properties 1. com.xxx.XXX(类名)= converter Annotation
b) 如果遇到非常麻烦的映射转换 i. request.setAttribute(); ii.
session
Struts2总结
1. Action
a) namespace(掌握) b) path(掌握) c) DMI(掌握) d) wildcard(掌握)
e) 接收参数(掌握前两种)
f) 访问request等(掌握Map IOC方式)
g) 简单数据验证(掌握addFieldError和 a) 结果类型(掌握四种,重点两种) b) 全局结果(掌握) c) 动态结果(了解) OGNL表达式(精通) a) # % $ Struts标签 a) 掌握常用的 声明式异常处理(了解) I18N(了解) CRUD的过程(最重要是设计与规划)(精通) Interceptor的原理(掌握) 类型转换(掌握默认,了解自定义) 2. 3. 4. 5. 6. 7. 8. 9.
正在阅读:
物资管理试题09-23
中国画论(1)自考09-19
章庄学校开展教育收费中突出问题专项治理工作实施方案10-14
培养低年级学生良好书写习惯的研究03-07
连加连减顾玉兰20151105-02
冶金传输原理习题08-17
公司人员批评与自我批评发言稿04-06
附录B 装饰装修工程工程量清单05-03
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 士兵
- Struts2
- 手册
- 图文
- 开发
- 标识加工工艺介绍
- 文化产业发展的国际经验及启示
- 最新北师大版适用初二数学上册《立方根》
- 部门、子公司2012年度工作总结暨2013年度目标计划汇编
- 芜湖市弋江路袁泽桥工程防洪影响评价报告项目(朱)20080331(报
- 2013届浙科版二轮复习实验专题
- 08-09年度第一学期初中联考试卷
- 走进动画片综合实践活动方案
- 萌萌哒师生情 - 图文
- 朵唯女性智能手机校园推广策划案
- 建立HR绩效管理体系 提升考评效率
- OA系统培训方案(办公自动化)
- 计算机系统结构第1-8章部分作业答案
- 大学英语四级语法全集下载
- 天宏催化操作规程
- 国学经典 —古诗词吟诵
- 矿井维修电工中级工单选
- 养生旅游市场分析调查及投资前景行业报告2018目录
- 二上语文教学计划
- 2015高考语文二轮复习:语句补写题