Struts2

Struts2

目录:

1.1     Struts2概述

2 struts2的介绍

  1. Struts 是Apache软件基金会赞助的一个开源项目。它最初是Jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。它通过采用JavaServlet/JSP技术,实现了基于JavaEEWeb应用的MVC设计模式的应用框架,是MVC经典设计模式中的一个经典产品。
  2. Struts 1.x--基于Model2的MVC框架,官方已经不提供支持了
  3. Webwork--分为Xwork1和WebWork2两个项目。
  4. Struts2框架应用的javaee三层结构中的web层框架
  5. Struts2。 Struts 2是Struts1的下一代产品。是在struts1和WebWork的技术基础上进行了合并,全新的Struts 2框架。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品.
  6. 面试题:Struts1和Struts2的区别和联系?

Struts2与Struts1差别很大,是一个全新的框架,不能理解为Struts1的升级版

Struts2以webwork为核心,可以理解为WebWork的升级版

3 Struts2的HelloWorld

第一步:建web项目

第二步:导入jar包

  struts-2.3.24.1appsstruts-blank.war(使用压缩软件打开即可)WEB-INFlib下所有的jar包复制到自己创建的web项目的lib下

第三步:创建action

第四步:配置action类的访问路径

  a)创建struts2的核心配置文件(核心配置文件的名称和位置必须是固定的:位置必须在src下面,名称必须为struts.xml)

  b)引入dtd约束

  c)配置action

第五步:在web.xml中配置前端控制器(过滤器)

复制struts-blank.warWEB-INFweb.xml中filter的配置到自己项目的web.xml中

1.2     Struts的执行原理

 

1.3     Struts的源码分析

 过滤器在服务器启动的时候创建,创建过滤器时候先执行init方法

在init方法中主要加载配置文件

包含自己创建的配置文件以及struts自带的配置文件

**struts.xml

**web.xml

1.4     Struts2的核心配置文件分析(重点)

package标签

1类似于代码包,区别不同的action,要配置action,必须首先写package标签,在package

里面才能配置action

2 package标签属性

(1)   name属性

name属性值跟功能本身没什么关系的

在一个配置文件中可以写多个package,name属性值不能相同的

(2)   extends属性

属性值是固定的,struts-default

写了这个属性以后,在package里面配置的类具有action功能

(3)   namespace属性

namespace属性值在项目名之后,action访问路径之前

namespace属性值和action标签里面的name属性值构成访问路径

 

action标签

1 action标签配置action访问路径

2 action标签属性

(1) name属性

namespace属性值和action标签里面的name属性值构成访问路径

在package标签里面可以写多个action标签,但是action的name属性值不能相同的

(2) class属性

action全路径

(3) method属性

比如在action里面默认执行的方法execute方法,但是在action里面可以写其他方法

让action中多个方法执行,使用method进行配置

result标签

1 根据action的方法返回值,配置到不同的路径里面;每个action下可以有多个result,它们不能重合

2 result标签属性

(1) name属性

和方法返回值一样

如果没有指定result的name属性,默认值为success

(2) type属性

配置如何跳转到指定路径中(转发或重定向)

type属性默认值 做转发操作

dispatcher:将请求转发给jsp的result

redirect: 将请求重定向到另一个URL

redirectAction:将请求重定向到一个Action

1.5     Action编写方式

第一种 创建普通类,这个类不继承任何类,不实现接口

 

第二种 创建类,实现action接口

 

第三种 创建类,继承ActionSupport类(推荐使用第三种)

 

1.6     访问action的方法(重点)

第一种 使用action标签的method属性,在这个属性里面写执行的action方法名  

1.创建action,创建多个方法      

2.使用method配置

缺陷:action每个方法都需要配置,如果action里面有很多方法需要配置很多action

第二种 动态调用(*)

Struts2支持动态方法调用,它指的是一个Action中有多个方法,系统根据表单元素给定的action来访问不同的方法,而不用写多个Action。

使用动态方法调用前必须设置Struts2允许动态方法调用,它是通过设置

<constant name="struts.enable.DynamicMethodInvocation“ value="true" />    

第三种使用通配符方式实现

       在action标签里面name属性,name属性值里面写*号

       *理解:匹配任意内容

       比如访问add方法,*可以匹配到

       比如访问update方法,*可以匹配到

注意:

(1)   如果action方法有返回值,在配置文件中没有配置,出现错误

(2)   在action里面的方法有返回值,如果有返回值时候类型必须是String

(3)在action里面的方法可以没有返回值,没有返回值时候,在result标签不需要配置

--把方法写成void

让返回值为:return NONE或return “none”

1.7     配置默认action

  1. 当用户请求找不到对应的Action时,系统默认的Action就将处理用户请求

配置默认Action通过<default-action-ref>元素完成,一般配置在struts.xml文件中<package>元素下

1.8     常见的常量配置

默认的常量配置

位置:struts2-core-2.3.24.1.jarorg.apache.struts2default.properties

开发者模式

在开发阶段如果出现错误,会提示更多的错误信息  默认值为false(产品模式)

原文地址:https://www.cnblogs.com/yulibo/p/9250630.html