struts2概述:(百度一下)基于MVC的web应用技术,本质上相当于servlet
功能:接受并处理请求
优势:提高开发效率。将WEB开发中多数常见的功能进行了封装
struts1和struts2:两个框架完全不同。不属于版本的替换。
框架搭建:
1. 导包。官网下载安装包。apps/struts-blank空项目下lib即必须包
2. 创建Action类。
public class HelloAction {
public String hello(){
System.out.println("Hello Action!");
return "success";
}
}
3. struts2中注册action。src目录下创建struts.xml配置文件,约束在struts核心jar core中
XXX
4. 配置struts2入口过滤器(web.xml中配置filter) StrutsPrepareAndExecuteFilter 全限定名;路径/*
至此,就可以测试struts了!
架构:官网上图
struts中拦截器:
1. 拦截器设计与servlet技术中的filter几乎一样。都是在流程运行到servlet(Action)之前执行。执行时分 为前处理和后处理(即以filter中chain.doFilter(req,resp)运行前后划分)
2. 过滤器|拦截器都体现了aop思想(纵向重复,横向抽取)
3. struts框架中将web常见开发功能封装到了拦截器中。每个拦截器都封装了一个功能。默认经过20个 拦截器。共35个拦截器
4. 拦截器设计非常灵活,经过的拦截器数量、顺序都可以自由定制。还可以自定义拦截器来扩展struts2 的功能
配置详解:
基本配置:
package:包配置,封装Action配置。便于管理Action
name属性:给包起个名字
namespace:为包中Action的访问加上一个路径,默认 ""
extends:继承指定包配置。使用struts2默认提供的"struts-default"
action:配置action的元素
name属性:自定义。决定Action访问资源的名称
class:Action的全限定名,默认com.opensymphony.xwork2.ActionSupport
method:Action类中处理请求的方法名,默认execute
result:Action方法的返回结果的定义配置
name属性:为结果返回值起别名。与实际返回值对应,默认success
type属性:指定结果处理器类处理结果。默认"dispatcher",共11个result-type
标签体:下一步访问的资源路径
常量配置:
默认常量配置:struts核心jar core下default.properties
修改常量配置:
1. src下的struts.xml文件使用constant标签,name-value(推荐使用)
2. src下使用struts.properties文件以键值对形式
3. web.xml 在filter中init配置初始化参数
注:加载顺序从上至下(倘若都有的话)
常量配置:
struts.i18n.encoding=UTF-8 :struts国际化编码.该配置可以解决表单提交乱码.
注:只能解决post提交乱码.get仍然需要手动处理.
struts.action.extension=action,, :指定Struts中,访问Action的后缀名. action|[空]
struts.devMode = false :指定是否开启struts2的开发模式。i18n配置热加载(即不关闭服务器重新加载配 置文件) ; struts.xml配置热加载 提供 ; 更多的错误|调试信息
struts2分模块开发:struts.xml使用include标签引入分模块xml配置文件
动态方法调用配置:
方式1:!号动态方法调用
1. 开启常量:struts.enable.DynamicMethodInvocation = true
2. 不写Action的method属性
3. 访问时按照指定路径调用方法:
http://xxxxx:8080/xxx/DemoAction![execute]调用的方法名
方式2:*(通配符)动态方法调用
1. 配置:
此处{1}为*索引
2. 访问:
http://xxxxx:8080/xxx/HelloAction_haha
struts2核心Action:
创建方式:
方式1:POJO(Plain Ordinary
提供公共空参构造和execute方法(public、返回值String、空参)
方式2:实现Action接口
声明了一个范例Action方法;准备了一些字符串常量,在返回|定义结果时使用
方式3:继承ActionSupport类(推荐使用)
实现了Action接口;实现了其他功能的接口
Action方法创建规则:
必须public;返回值String;方法名任意;参数必须为空;可以抛出异常。
public String execute(){
return null;
}
未完待续……