简述
测试使用的版本是struts-2.3.37,(当前最新的版本是2.5.18,但是没有找到blank的jar包),测试参考的文档来自struts2官网Document-Getting Started。
准备工作
eclipse,tomcat自行下载安装
struts2的基本jar包(导入jar包略过)
开始
How To Create A Struts 2 Web Application
这章节前面讲了一堆看不懂的,应该是maven,直接略过,看后面,
在web.xml里加入过滤器。
按住ctrl单击这个类没有超链接,明显类名有问题,少个ng
src下新建struts.xml,把配置信息复制过来
constant是常量,这条信息表示开启开发模式。
package是包,继承了默认的包struts-default
action是href地址
result返回的网址
不理解的话先略过
Hello World Using Struts 2
这章就是测试了一个hello world,但是用了标签,所以先看下一章,直接看代码,代码看不懂再看英文说明。
首先index中加入了这句
<%@ taglib prefix=“s” uri="/struts-tags" %>,这个是用来引入标签库的
href="<s:url action=‘hello’/>">Hello World,这句一看就知道是一个超链接,连接到hello,
再看struts.xml,action的name=“hello”,就是连接到这里了,class表示用来处理的类,method表示处理类方法
result name表示返回的值,后面是返回的页面
来测试一下,
部署struts之前先测试tomcat和index是否能正常访问。
index.xml
action
struts.xml
测试一下
报错。。。
然后。。。
java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
localhost都打不开了。。。
网上搜了一下,把jar包放在web-inf 目录下,顺带标签找不到的问题也解决了。.
测试
action中不配置method,默认执行execute()方法,result不配置name,默认是success。见ActionHello类中的execute()方法,返回值是success。
现在测试指定方法和返回值
指定方法demo()处理,返回值是dem,dem指向de.jsp。
带参数的超链接标签,感觉用不到吧,用表单哇。。略过
下面就是表单
<s:property/>这个应该是获得getbean的返回值,没看到实例,看看后面有没有
下一章有一个例子,试试看,
在action类中添加username,
返回页面增加代码
<s:property value=“username” />
测试是成功的,输入text,
Processing Forms
在action类中处理属性是不合适的。。需要把model独立出来。
增加一个User类
action类中直接吧User的实例作为属性
index.jsp传入参数
success.jsp接收参数
测试成功,结果略(实际操作中一般都是implements modeldriven,看看后面有没有介绍)。
Form Validation
这章说的是如果输入有问题,怎么吧问题返回给前端。
在action类中添加validate方法,这个似乎是默认的方法(没错,需要重写)
提示没有addFieldError方法,这里需要extends ActionSupport
增加一个result
然后报错。。
经过多番测试,我才发现我按钮点错了,应该点下面那个。。。
显示了出错信息,
设置出错的样式。略过
Message Resource Files
大段的英文。。看不懂,大概的目的应该是为了输出不同国家语言的前端页面?
看下怎么处理,增加一个和action名的properties,然后标签的name=改成key=
测试一下。
创建ActionHello.properties,并且输入参数,
输入表单中,name改成key
action中没有对u.username进行赋值
<s:property>依旧能获得输入的参数。
文章后面写到,想要获取ActionHello.properties中value的值,可以通过
<s:text name=“u.username” />来获取
测试
结果
Exception Handling
异常处理,没看懂,先略了
Debugging Struts
调试工具。。我直接用<s:debug></s:debug>标签
Form Tags
其他表单的标签用法,下拉菜单,单选,多选等
表单类标签,估计用的不多,以后用到了再补代码。
<s:radio key=“personBean.gender” list=“genders” />
<s:checkboxlist key=“personBean.carModels” list=“carModelsAvailable” />
Form Validation Using XML
通过xml来验证表单信息是否合法,
Control Tags
控制类标签
Wildcard Method Selection
通配符,这个有点意思,约定好的话,struts.xml的配置信息将简化很多。 action的name中加入*,在后面可以{1}来获得 通配符的值。
例如
使用这2个action类
struts.xml 中action如下
报错。。
直接写好的话访问成功,
成功
失败
用myeclipse自带的2.1struts试了一下,是成功的,初步怀疑是之前的jar包的问题。
Spring and Struts 2
spring和struts的整合的文档
文章前面意思就是说不用自己new对象了
流程:引入插件包
spring的监听器
spring的配置文件
依赖注入
按我的理解,上面的类初始化了一个editService的对象,下面的类需要初始化的时候,需要一个editService的参数(property),这个参数的来源(ref)就是上面类生成的。
最后,struts配置文件action的class地址改成spring的id
等最后整合的时候再测试代码了。
Annotations
注解代替配置文件
引入jia包
文档描述的乱七八糟,而且好像不能用通配符,这样的话只能配置简单的关系了,那如果这样的话写进配置文件也不会花太多时间。。以后如果用到再补充实例。
Introducing Interceptors
拦截器的介绍,文章开篇就说“到目前为止,我们的教程还没有深入探讨Struts 2框架的内部工作原理”。
嗯。。没错,现在看到的都是浮于表面的现象,内部原理还是迷。。文章大概说的是再执行action类的前后(注意是前后),struts执行了很多个拦截器,而你可以定义自己的拦截器,比如测试运行过程的时间,来评判代码的性能。
嗯。。文章只是介绍了一下,没有深入的讲。
Unit Testing
junit的测试方法,用到了再来查。
HTTP Session
servlet有重写doget和dopost方法获得内置对象,而struts中,需要action实现相应的接口。
文档只介绍了SessionAware,等遇到全的例子再补充。
Preparable Interface
看了问题描述一脸懵逼,连问题出在哪都不知道,不用再往下看了。
Exclude Parameters
同上,遇到了再补充。
到这里,已经可以使用struts的基本功能了,暂停更新。等深入了解之后再继续