Struts2.3搭建使用

Struts2.3搭建使用

Struts2的相关

Struts2是一款基于MVC模式(模型视图控制)的轻量级web层框架,本质用于相当于Servlet,作为MVC控制器用来建立模型(Service/Dao)与视图(JSP)之间的数据交互.

其实所有的web层框架均是基于前端控制器模式实现的,在客户端的请求到达Servlet之前都要经过前端控制器,所以我们可以在前端控制器中实现对项目周边功能的抽取.Struts2的前端控制器由拦截器(Interceptor)实现,其体现的思想就是大名鼎鼎的AOP(面向切面编程)思想,简单地说就是纵向重复(Action类中的重复功能代码),横向抽取(抽取到拦截器).

Struts2.3环境搭建

  1. 导包


    这里只是搭建基本环境所以将Struts2.3源文件中的13个基本包导入
  2. 准备Action与前台页面
    首先准备前台页面,为了演示这里我写了一个简单的helloStruts.jsp页面.jsp文件的内容如下:

    其次准备Struts的核心类Action

    关于继承ActionSupport类是因为这是Struts提供的创建Action类的方式之一(推荐),当然你也可以直接实现Action接口或者编写一个普通的不继承或者实现任何特殊类与接口的类作为Action(不推荐)
  3. Struts配置文件
    Struts配置文件是用于配置Action与客户端请求的对应关系.
    注意一点:Struts是属于web层的项目,当项目启动时,配置文件的加载时有顺序之分的,与Struts相关的配置文件加载顺序为struts.xml-->struts.properties(用于配置Struts常量)-->web.xml(用于配置Struts常量),这三个配置文件均可以配置Struts的常量,但是后加载的配置文件将会覆盖先加载的,但是一般我们只在struts.xml中书写配置,话不多说接下来就开始配置struts.xml文件
    A  在src目录下创建struts.xml文件并导入约束


    在导入约束之前请在Eclipse之中映射DTD约束文件
    具体流程点击window-->preference-->输入catalog-->选择xml catalog-->add-->将本地的DTD约束文件路径粘贴在Location框中-->点击Key Type为RUI-->完成.

    B  添加常量配置
    直接在根元素在添加<constant>标签书写常量配置


    以上是常用的几个常量配置:
    "struts.DevMode"用于设置struts开发者模式进行热加载
    "struts.action.extension"用于设置访问路径的后缀,默认值为"action,,":  代表Action的访问路径后缀为.action或无后缀名,例如: " http://localhost:8080/struts2_day01/helloStrutsAction.action"中的.action
    但是最后一个我给注释了,关于动态方法调用下一节介绍

    C  package包配置
    package元素的配置是用来管理ACtion类与Struts拦截器,一个package配置就是多个Action与Interceptor引用的集合


    其中
    1>name属性为该包的标识符,是其它包引用该包的键
    2>namespace属性指定Action的命名空间默认值就是"",一般使用"/"(是Action虚拟映射路径的一部分)
    3>extends属性用于指定所继承的package(抽象包才能被继承),继承那个包就拥有该包的所有配置信息,一般默认继承struts-default包
    4>abstract属性用于指定是否是抽象包,属性值为boolean类型(若为抽象包则不能包含具体的Action定义)

    D  action配置
    将请求的URL映射到Action类的配置,若此次请求映射某个Action类,Struts就使用该Action处理请求
    1>name属性为该Action的标识符,与package中的namespace属性共同决定了Action的虚拟映射路径
    2>class属性为Action类的全限定类名,该属性也存在默认值"com.opensymphony.xwork2.ActionSupport",对你没有听错这个默认值就是我们继承的ActionSupport类
    3>method属性为访问该Action时所调用的方法,默认值为execute,即访问Action默认调用execute方法

    E  结果处理配置
    Action的方法返回值必须为String类型,根据这个返回值我们可以在result标签中配置不同的结果处理方式例如如上action配置就是当Action返回"success"字符串时进行重定向,重定向的路径就是:  /hello.jsp
    result标签中:
    1>name属性用于接收Action方法的返回值,而且Action接口中预定义了5个字符串常量用于方法返回值:
             success:Action执行成功
             none:页面不跳转
             error:跳转错误页面
             input:数据校验
             login:跳转登录
    2>type属性用于指定结果的处理类型,Struts一共给出了11个,常用的就是redirect重定向,以及dispatcher请求转发

    F  配置Struts核心过滤器
    在web.xml中添加StrutsPrepareAndExecuteFilter过滤器


    为什么需要添加这个过滤器?
    第一当然是为了读取struts.xml配置文件了,在执行过滤器init方法时读取
    第二是为了准备数据(就当初使用Servlet时执行service方法需要服务器准备request与response参数一样),看下此过滤器源码


    很明显过滤器默默的帮我们创建了ActionContext对象,并封装了request参数


测试

直接在地址栏输入"http://localhost:8080/struts2_day01/helloStrutsAction"


填一下动态方法调用的坑,其实到这里Struts已经基本可以运行了,但是可能会有同学注意到了,这样访问Action岂不是只能访问execute一个方法,难道我们需要为Action的每一个方法都在struts.xml中配置一个<action>元素,答案肯定是否定的(当然这种方式可可行的但是然并卵,读取配置文件太浪费时间了),Struts提供两种解决方式:
方式一(不推荐):
就是动态方法调用,将一开始动态方法调用常量的注释打开

然后将struts.xml中的method属性删除

接下来访问Action,但是在路径后需要附带方法名:"http://localhost:8080/struts2_day01/helloStrutsAction!execute"

方式二(推荐):
注释动态方法调用常量
修改配置文件的action元素的name属性值为"helloStrutsAction_*",修改method属性为"{1}"
接下来访问Action,但是在路径后需要附带方法名:"http://localhost:8080/struts2_day01/helloStrutsAction_execute"

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值