欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Struts2的基本配置和使用过程

程序员文章站 2022-06-14 22:26:56
...

建立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

Struts2的基本配置和使用过程

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

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

配置struts.xml

此处以登录用的LoginAction为例

Struts2的基本配置和使用过程

action元素

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

result元素

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

MyEclipse中配置struts.xml

Struts2的基本配置和使用过程

编写Struts2的Java脚本文件

此处以登录的LoginAction.java为例

Struts2的基本配置和使用过程

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

Struts2的基本配置和使用过程

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方法向其中添加键值对

Struts2的基本配置和使用过程


解耦方式(注入)

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

Struts2的基本配置和使用过程

耦合方式

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

Struts2的基本配置和使用过程


Struts2数据校验

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

Struts2的基本配置和使用过程

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

Struts2的基本配置和使用过程


Struts2 标签

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

Struts2的基本配置和使用过程

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中

Struts2的基本配置和使用过程

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

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

Struts2的基本配置和使用过程

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

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

Struts2的基本配置和使用过程