struts2 入门(自用笔记,仅供参考,欢迎讨论)

简述

测试使用的版本是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的基本功能了,暂停更新。等深入了解之后再继续

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值