Struts2 (1)

Struts2:  是一个基于MVC设计模式的WEB层框架, C是核心过滤器Filter,  V是jsp(html), M是 Action

Struts2的优势: 可以解决Servlet里获取请求参数, 页面跳转代码冗余的问题

1. 框架内置的配置文件(有三个)

default.properties: 在struts2-core.jar 中 的 org.apache.struts2包中, 存放了struts2所有的常量信息

struts-default.xml : 在struts-core.jar中, 定义了struts2框架底层的一些bean , struts-default抽象包, 拦截器,结果集

struts0pulgin.xml : 可有可无 , 定义了插件中的bean, action等信息

2. 自定义的配置文件(有三个)

struts.xml : 是struts2的核心配置文件, 位于工程的src目录下, 主要用于配置用户自定义的Action类

struts.properties : 可有可无, 位于src目录下, 用户可以添加, 也可以不添加, 用于配置struts2的常量

web.xml : 在WEB-INF下, 也可以配置struts的常量

3.配置文件加载顺序: 

struts2框架中的六个配置加载顺序如下 : 

default.properties--->struts-default.xml--->struts-plugin.xml--->struts.xml--->struts.properties--->web.xml

(1) struts2项目启动时, 会调用过滤器的init方法完成初始化;

(2) 初始化时, 先加载default.properties的文件

(3)再加载, struts-default.xml、struts-plugin.xml、struts.xml文件

(4)再加载, struts.properties;

(5)再加载 web.xml配置的初始化参数

4. 核心配置文件struts.xml

4.1 constant标签 : 用于修改struts中的常量

属性 :

name : 指定常量的key

value : 指定常量的值

常用常量介绍:

常量名

常量值

说明

struts.i18n.encoding

UTF-8

应用中使用的编码

struts.objectFactory.spring.autoWire

name

和spring框架整合有关

struts.multipart.parser

jakarta

指定文件上传用的组件

struts.multipart.maxSize

2097152

文件上传总文件大小限制:2M

struts.action.extension

action,,

能进入Struts2框架内部的url地址后缀名。多个值用逗号分隔

struts.enable.DynamicMethodInvocation

false

是否允许动态方法调用

struts.devMode

false

是否是开发模式。开发模式:改了配置文件,不需要重启。输出更多的错误信息。开发阶段建议为true

struts.ui.theme

xhtml

页面展示用的主题

开启开发者模式的好处:

(1)当发生异常后, 可以再页面上看到详细的异常信息

(2)当更改了配置文件, 自动重载配置文件, 不需要重启服务, 提高开发效率

4.2  package标签 : 在struts2的配置文件中引入了面向对象的思想, 说那个了分包管理. 易于管理Action类. 便于模块化开发Action类

属性:

name: 包的名称. 必须写且必须唯一

extends : 一般情况下需要继承struts-default包, 但是不是必须的. 不过如果不继承的话, 将无法使用struts2提供的核心功能. struts-default.xml 中定义着struts-default这个包.  而struts-default.xml是在我们的struts.xml加载之前加载

abstract :  把包声明为抽象包, 抽象包就是用来被继承的. 是钥匙没有<action>元素的包, 就可以声明为抽象包

namespace :  名称空间.  它的作用是访问URL按照模块化来管理

空间名称的写法 : 一般以/ 开头.  当我们指定了空间名称之后, 访问的URL就变成了: 名称空间+action标签的name属性取值  

命名空间使用公式 :  http://服务器ip地址/项目名/命名空间/action 名字.action

4.3 action标签 :  配置Action类,

属性: 

name: 指定Action类的访问名称. 注意此处不能有后缀, 必须唯一

class: 指定的是Action类的全路径名

method: 指定的是Action中的方法名称

在配置Action类时有一些特殊情况 : 

如果在配置action节点时, 没有指定class属性, 则默认寻找com.opensymphony.xwork2.ActionSupport类, 因为在struts-default.xml做了如下配置, 指定默认的Action类, 当根据某个名字找不到对应的action时, 就找默认的类ActionSupport

5 Action编写方式(3种)

在struts 中编写一个Action的方式有三种:

(1) 实现Action接口, 重写execute 方法

好处: 可以利用Action接口里的静态常量作为方法的返回值(对应的是结果集的名字)

(2) 继承ActionSupport父类, 重写execute方法

本质上与第一种方法一样, 因为ActionSupport已经实现了Action接口

好处: 可以利用Action接口里的常量, 也可以利用父类里的国际化, 校验, 添加错误信息方法

(3) 编写一个POJO类 :  Plain Ordinary Java Object , 意为简单Java对象

在自定义的POJO类中编写execute方法需要满足以下条件:

                       修饰符为public 

                       返回类型为String

                       方法名叫execute

                       无形参

                       异常可选

特征: 没有现成的东西可用

6. Action的方法编写格式

在Action中自定义方法: 修饰符为public, 返回类型为String, 无形参, 异常可选

6.1 通过设置method属性调用Action中的方法

6.2 通配符的使用

在struts2中* 表示通配符: 匹配所有路径, {1}取出第一个* 的值, {2}取出第二个* 的值 

一个*号: 匹配任意路径

<action name="*" class="xx.xx" method="{1}"></action>

例:  url:add: 此时* 就是add; {1}取第一个*的值, 就是add

两个*号: 匹配像 Dept_add这样的路径

<action name="*_*" class="xx.{1}Action" method="{2}"></action>

例:  url:Dept_add: 此时第一个* 就是Dept, {1}=DeptAction; 第二个*就是add,{2}=add

6.3  动态方法调用

作用: 允许通过action名字!方法名来访问Action类中的方法

需要把动态方法调用的开关打开, 默认是关闭的

<!-- 允许动态方法调用 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true" />

缺点: 不安全, 不推荐使用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值