Struts2的基本配置和使用过程

建立web项目

建立时注意使用 JavaEE5.0

导入jar包

以下9个为核心包:

  1. commons-fileupload-1.3.1.jar

  2. commons-io-2.2.jar

  3. commons-lang3-3.1.jar

  4. commons-logging-1.1.3.jar

  5. freemarker-2.3.19.jar

  6. javassist-3.11.0.GA.jar

  7. ognl-3.0.6.jar

  8. struts2-core-2.3.16.3.jar

  9. xwork-core-2.3.16.3.jar

注意,导入jar包位置为WEB-INF下的lib文件夹,其他位置不可

在web.xml中添加Struts2核心filter

640?wx_fmt=png&wxfrom=5&wx_lazy=1

注意此处所有的页面访问均要通过Struts2的filter,若导包错误,会导致org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter找不到,则所有页面均为404

此时在页面中的所有请求都会根据web.xml的配置发送给指定的Struts2过滤器

配置struts.xml

此处以登录用的LoginAction为例

0?wx_fmt=png

action元素

属性作用
name相当于配置的servlet名字,在发送表单时发送至此名称就会进入相应的Struts2处理脚本
classStruts2处理脚本的实际位置,从第一层包名开始

result元素

属性作用
name用于匹配此Struts2处理脚本反悔的结果字符串
节点内容根据结果字符串进行页面跳转

MyEclipse中配置struts.xml

0?wx_fmt=png

编写Struts2的Java脚本文件

此处以登录的LoginAction.java为例

0?wx_fmt=png

此脚本需实现Action接口,重写其excute方法,这个方法需返回一个字符串,此字符串的内容用于匹配struts.xml中result的属性
这个类的属性会自动从request中读取对应的属性值,无需再手动从request中取值 这里使用的message变量可在前端页面中使用OGNL表达式取出

0?wx_fmt=png

Struts2的Action中的字符串常量

属性
SUCCESS"success"
NONE"none"
ERROR"error"
LOGIN"login"
INPUT"input"

五个常量可用 Action.常量名 来调用,如Action.SUCCESS会得到success字符串

在Struts2中获取Servlet API

解耦方式

通过ActionContext类的getContext()获取ActionContext对象,再用ActionContext对象的getSession()和get("")方法获取session,request和application
获取到的是Map对象,要使用put方法向其中添加键值对

0?wx_fmt=png


解耦方式(注入)

首先要求Action所在类实现SessionAware接口,然后定义三者的Map属性,再由setter向其中中注入对象

0?wx_fmt=png

耦合方式

直接使用ServletActionContext的三个方法获得session,request,application对象

0?wx_fmt=png


Struts2数据校验

要求Action类继承ActionSupport类,并在类中重写validate()方法
此处以登录界面的非空验证为例

0?wx_fmt=png

注意:此方法默认返回“input”,所以需要在struts.xml中加入result对应input这个结果
在前端页面要使用OGNL表达式中的<s:filederror/>标签来获取提示信息

0?wx_fmt=png


Struts2 标签

首先要在前端页面中导入Struts 2标签库,类似于JSTL标签库的导入方法

0?wx_fmt=png

UI标签

标签说明
<s:form>...</s:form>获取相应form的值
<s:textfield>...</s:textfield>文本输入框
<s:password>...</s:password>密码输入框
<s:textarea>...</s:textarea>文本域输入框
<s:radio>...</s:radio>单选按钮
<s:checkbox>...</s:checkbox>复选按钮
<s:submit/>提交
<s:reset/>重置
<s:hidden/>隐藏域
<s:filederror/>数据校验信息

通用标签

名称标签
条件<s:if test="表达式">...</s:if>
条件<s:elseif test="表达式">...</s:elseif>
条件<s:else>...</s:else>
迭代<s:iterator value="集合对象" status="当前元素示例" id="当前元素id">...</s:iterator>

注意:
OGNL表达式中获取作用域中的值需要加#前缀,而获取valuestack(值栈)中的值时不用加#
Action中的属性的值都存放在valuestack中

0?wx_fmt=png

Struts2标签中OGNL表达式与字符串的识别问题

如下标签中,value的值两侧有一对单引号

0?wx_fmt=png

这就是强制使Struts2框架将其识别为字符串,若不加此单引号则会被识别为OGNL表达式

若希望字符串被强制识别为OGNL表达式,则需要使用%{字符串}的形式,如:

0?wx_fmt=png


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值