尚学堂马士兵struts2操作手册

图片右键另存为到本地,改成docx就可以看了



前言
假 如 你 的 人 生 有 理 想,那 么 就 一 定 要 去 追,不 管 你 现 在 的 理 想 在 别 人 看 来是 多 么 的 可 笑 , 你 也 不 用 在 乎 , 人 生 蹉 跎 几 十 年 , 如 果 年 轻 的 时 候 计 较 得 失 前 怕 狼 就 后 怕 虎 而 不 去 追 逐, 等 到 了 40, 50 岁 的 时 候 , 你 唯 一 能 做 的 就 是 感 叹 岁 月 的 消 逝 和 无 情…
实验软件下载
下载struts2.1.6 http://struts.apache.org/download.cgi#struts217 
(选择下载full distribution)
下载myeclipse,http://www.myeclipseide.com 
下载tomcat,http://tomcat.apache.org 
下载xwork,http://www.opensymphony.com/xwork (要注意的是下载与struts2.1.6的对应版本,即2.1.2)
安装与设置
解压struts2.1.6,假设解压后位于d:\struts2目录
安装MyEclipse,任何版本都可以
假设你已经安装好jdk和tomcat了,如d:\tomcat
HelloWorld
建立项目
打开eclipse
新建项目
选择myeclipse-java enterprise projects-web project
项目名称:struts2_0100_introduction
选择java ee 5.0
设定server
window – preferences – myeclipse – servers – tomcat – 6.x
选择tomcat home directory 
选择enable
finish
设定jdk环境
window – preferences – java – installed jres
如果没有对应的JDK(不是JRE),选择add
选择standard VM -> next
选择JDK对应的Directory
将刚刚设定的JDK设为默认
建立第一个struts2.1的程序
找到struts目录下对应的apps目录
解压struts2-blank-2.1.6.war
Copy对应的lib的jar文件,需要除junit和spring-test之外的所有文件,其中commons-io的jar包会在文件上传和下载时需要,其他为必须
Copy对应的struts.xml到src目录,在package explorer视图进行操作
注释掉struts.xml的多余内容
建立HelloStruts2_1.jsp文件
*修改jsp文件的默认编码属性window-preferences-web-jspfiles-设为Chinese,National Standard
在struts.xml中照原配置进行对应的配置
修改对应的web.xml,建立struts2的filter(参考struts自带的项目)
运行项目
可以首先部署到tomcat上项目
也可以项目右键debug as – myeclipse server app,选择刚刚建立好的server
其他
学习建立struts的dev-mode,好处在于我们修改了配置文件的时候能够自动热替换 
建立jar文件对应的源码D:/share/tools/struts-2.1.6/src/core/src/main/java,以及xwork对应的源码,以及对应的javadoc location,(更好的方式是建立自己的user-library)
浏览struts的目录
认识eclipse jee的项目部署目录,认识如何修改webapp的context-root,项目copy改名后可能会出现的问题
package explorer – 建立jar的源文件和目标关联,navigator – 观察所有的内容
认识Action的后缀名,在struts2默认中,带不带action都可以


常见问题:
struts.xml不自动提示
window – preferences – 搜索 catalog – add 
选择key type为URI
key: http://struts.apache.org/dtds/struts-2.0.dtd
location: 对应的dtd文件,位于struts-core包中,解压开,指定相应位置,如:D:\share\0750_Struts2.1.6\soft\struts-2.1.6\lib\struts2-core-2.1.6\struts-2.0.dtd
导入示例项目
注意JDK的版本,应该是JDK6,否则会出class version的问题
如果总是项目出问题,可以重建项目,单独拷文件
还有一种情况是项目右键,properties – java – compiler 选择6.0
另外,在tomcat配置中也要使用jdk6
devMode设为true就会出问题空指针问题
tomcat路径带了空格
在使用ActionContext.getContext().get(“request”)取不到对象,为null值
web.xml不要使用2.0的filter,用新的
在action的试验中,遇到一个奇怪的bug
用default-action-ref指定一个action
用*_*映射
在地址栏中访问一个不存在的action,如adfsdfsfs
结果居然会映射到*_*上
如果换成*__*就没问题了
靠,只能认为是bug
下次用*-*,不用*_*
学习方法说明
先阅读老师的代码
再建立自己的项目进行动手学习
Action
实现一个Action的最常用方式:从ActionSupport继承
DMI动态方法调用 !
通配符配置 * {1} {2} …
*_* 
接收参数的方法(一般用属性或者DomainModel来接收)
简单参数验证addFieldError
一般不使用Struts2的UI标签
访问Web元素
Map类型
IoC
依赖Struts2
原始类型
IoC
依赖Struts2
包含文件配置
默认action处理
Result
常用四种类型:
dispatcher(默认)
redirect
chain
redirectAction
全局结果集
global-results | extends
动态结果(了解)
在action中保存一个属性,存储具体的结果location
传递参数
客户端跳转才需要传递
${}表达式(不是EL)
OGNL
Object Graph Navigation Language
想初始化domain model,可以自己new,也可以传参数值,但这时候需要保持参数为空的构造方法
其他参考ognl.jsp
什么时候在stack中会有两个Action?chain
Struts-Tags
通用标签:
property
set
默认为action scope,会将值放入request和ActionContext中
page、request、session、application
bean
include(对中文文件支持有问题,不建议使用,如需包含,改用jsp包含)
param
debug
控制标签
if elseif else
iterator
collections map enumeration iterator array
subset
UI标签
theme
simple xhtml(默认) css_xhtml ajax
AJAX标签
补充
$ # %的区别
$用于i18n和struts配置文件
#取得ActionContext的值
%将原本的文本属性解析为ognl,对于本来就是ognl的属性不起作用
参考<s:property 和 <s:include
定义自己的theme
css(覆盖struts2原来的css)
覆盖单个文件
定义自己的theme
实战:
把所有主题定义为simple
fielderror特殊处理
自己控制其他标签的展现
作业
读doc文档:struts-tags
设计约定(编码规定)
原则:简单就是美
库名:项目名
表的命名:_Model名
字段:保持和属性名一致(尽量不要起名和数据库命名冲突)
用层来划分包com.bjsxt.bbs.action model(bean) service dto(vo)
Action XXXXAction
*-*
/
/admin
package “action” adminAction
项目开发顺序-以BBS2009的名义
建立界面原型
建立Struts.xml
确定namespace
确定package
确定Action的名称,空的方法
确定Result
将界面原型页面进行修改,匹配现有设置
测试
做好规划!!!!!
建立数据库(或者实体类)
建立Model层
建立Service层(后面讲了Hibernate后再完善)
此时可以使用JUnit进行单元测试了
着手开发
声明式异常处理
在Actoin中进行异常映射
在package中进行全局异常映射
使用继承共用异常映射
Struts2中异常处理由拦截器实现(观察struts-default.xml)
实际上Struts2的大多数功能都由拦截器实现
I18N
I18N原理
ResourceBundle和Locale的概念
资源文件
native2ascii
Struts的资源文件
Action – Package – App级
一般只用APP
struts.xml custom.i18n
PropertiesEditor插件
解压
features plugin 覆盖到myeclipse中的eclipse目录里
动态语言切换
request_locale=en_US
Struts拦截器以及源码解析
Struts架构图
见文档
Struts执行过程分析
Interceptor拦截器过程模拟
定义自己的拦截器
acegi – spring security
使用token拦截器控制重复提交(很少用)
类型转换
默认转换
日期处理
写自己的转换器:
public class MyPointConverter extends DefaultTypeConverter{


@Override
public Object convertValue(Object value, Class toType) {
if(toType == Point.class) {
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;
}
if(toType == String.class) {
return value.toString();
}
return super.convertValue(value, toType);
}


}
public class MyPointConverter extends StrutsTypeConverter{






@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 String convertToString(Map context, Object o) {
// TODO Auto-generated method stub
return o.toString();
}


}


三种注册方式:
局部:XXXAction-conversion.properties
p(属性名称) =  converter
全局:xwork-conversion.properties
com.xxx.XXX(类名)= converter
Annotation
如果遇到非常麻烦的映射转换
request.setAttribute();
session
补充视频中讲解的内容
Lambda表达式
验证框架
UI标签
类型转换中的异常处理
上传与下载文件
Struts2注解
Struts2总结
Action
namespace(掌握)
path(掌握)
DMI(掌握)
wildcard(掌握)
接收参数(掌握前两种)
访问request等(掌握Map IOC方式)
简单数据验证(掌握addFieldError和<s:fieldError)
Result
结果类型(掌握四种,重点两种)
全局结果(掌握)
动态结果(了解)
OGNL表达式(精通)
# % $
Struts标签
掌握常用的
声明式异常处理(了解)
I18N(了解)
CRUD的过程(最重要是设计与规划)(精通)
Interceptor的原理(掌握)
类型转换(掌握默认,了解自定义)




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值