**
敏而好学,不耻下问
**
struts2是什么
Struts2 是apache的一个开源项目,它是纯java开发,它是一个非常优秀的MVC框架,基于Model2 设计模型。
**
struts2有什么优点?
1、将控制逻辑单独封装成通用的控制器
2、原控制逻辑中封装请参数、调用业务逻辑代码抽取出来。
3、支持多视图技术。
控制器:
struts2提供前端控制器(Struts2PreparedAndExecutFilter),控制逻辑封装起来 接收请求
模型:
封装请求参数,进行业务处理
struts2提供了action接口,根据业务需求开发不同的action,比如:注册用户Action
视图:
提供Result接口,支持多视图技术
Result将结果响应给用户
想用Struts2就得加入基本的5个jar包,如下图
然后在创建Struts2运行最基础也是最重要的struts.xml**(名字必须一模一样而且还要放到Source Folder下面,也就是文件夹外面有个包的图片那种)**
然后配置web.xml
<!-- 前端控制器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<!--
方式一:具体 的路径,比如:/add.action
方式二:目录路径匹配,/XXX/* 或 /*
要使用/* 将所有请求拦截,只有请求action时候进行处理,
拦截所有的请求,由于在struts-core的jar包有default.properties中配置了解析哪些扩展名
struts.action.extension=action,,
只会解析*.action的请求
方式三:扩展名匹配 *.action或*.do(struts1默认的扩展名)
当要请求不带扩展名的url,不能实现了,比如:/XXX/add
-->
<url-pattern>/*</url-pattern>
</filter-mapping>
然后定义Action
Action定义的规范:
1、Action可以是一个pojo(不实现任何类和接口)
2、Action可以继承Action接口或继承ActionSupport
3、Action中定义的请求处理方法必须是public、且没有参数,方法名称不限制,方法的返回值可以是void或String
到了最重要的部分就是配置struts2的主要配置文件
struts.xml
struts.xml的定义需要在classpath定义一个struts.xml(名称固定,位置固定)!!
struts2框架运行会按照以下顺序加载配置文件:
default.properties(框架提供):配置了struts运行的参数
struts-default.xml(框架提供):struts框架加载创建、Result、拦截器等,框架运行要用
struts-plugin.xml(插件提供):插件文件,比如:第三方插件,转json插件、struts2和spring整合插件。。
struts.xml(程序员定义):它能配置的内容和struts-default.xml一样,重点要配置Action、自定义运行参数、自定义的拦截器
struts.properties(程序员定义):可以配置struts运行的参数
这里我们自己开发只配置了struts.xml
struts.xml配置好了我们就配置运行的参数也就是常量
配置运行参数(常量)
struts框架提供default.properties,配置了很多常量。
在struts.xml中自定义设置常量 值。
哪些文件可以配置常量?不是所有文件都能配置,以下的可以配置
default.properties
struts-default.xml
struts-plugin.xml
struts.xml
struts.properties
web.xml
这里最重要的一点就是struts加载上边的配置文件,下边的常量覆盖上边同名的常量值。
然后我们来配置struts.xml的常量
<!-- 配置struts运行参数(常量) -->
<!-- 开发模式,在开发阶段设置为true可以输出更多的日志 -->
<constant name="struts.devMode" value="true"></constant>
<!-- 主题,一般不使用struts提供模板设置为simple -->
<constant name="struts.ui.theme" value="simple"></constant>
<!-- 扩展名,struts处理请求的扩展名,要配置多个,中间以半角逗号分隔 -->
<constant name="struts.action.extension" value="action"></constant>
然后开始配置package
接下来就是最重要的action了
配置action(重点)
Result配置
如果action的方法是string,执行完成返回一个逻辑视图名
Struts2 根据逻辑视图名决定调用哪个result
通过元素配置一个result,result有两个属性:
name 该属性指定配置逻辑视图名,框架提供了一些默认的success、error等逻辑视图名。
type 该属性指定结果类型,常用的:
dispatcher:转发
redirect:重定向
基本的配置都差不多配好了然后附上一张Struts2执行流程图
喜欢就点个赞吧