strust2入门与介绍
什么是Struts2
是基于MVC设计模式的WEB
层框架
WEB层框架
Struts1,WebWork,Struts2,SpringMVC
Struts2的内核是基于WebWork的
前端控制器模式
Struts2的入门
- 解压之后:
- apps :Struts2 里面提供的一些测试的应用
- docs :Struts2 里面的帮助文档
- lib :Struts2的提供的开发的jar包
- src :Struts2提供的源码
- 导包,导最少的包,找到blank项目下的jar包,导这些即可
- 写一个jsp页面,跳转的目标的路径是
xxx.action
.
<h3> <a href="${pageContext.request.contextPath}/hello.action">访问Struts2框架</a></h3>
- 配置Struts2的核心过滤器,前端控制器(完成部分功能),会默认执行拦截器(过滤器路径在
struts2-core/包后边是filter/StrutsPrepareAndExecuteFilter.class
),然后会跳到配置文件中 写action类里面有一个execute方法,方法的格式是固定的:
必须是public ,返回值是String,方法名execute,方法中没有参数配置action类的配置文件
struts2默认的配置文件是struts.xml
,写在src下。- 配置文件写法:copy约束,struts标签,里边有package
- package标签属性:name extends namespace
- package里边有action:name class类action的全路径
- 配置文件写法:copy约束,struts标签,里边有package
- 修改struts2配置文件:加一个result标签1234567<struts><package name="demo01" extends="struts-default" namespace="/"><action name="jsp中的xxx" class="类action的全路径"><result name="success(action传过来的字符串)">要跳转的路径</result></action></package></struts>
struts2的执行流程
当一个页面发送一个请求的时候,首先经过核心过滤器(StrutsPrepareAndExecuteFilter)
,在这个过滤器中其实会执行一组拦截器
(这组拦截器就完成了部分的功能),执行完这组拦截器之后,执行目标Action
,返回一个结果视图,根据返回结果跳转不同界面。
struts2常见的配置
struts2的配置文件的加载顺序:(了解)
过滤器StrutsPrepareAndExecuteFilter
会在服务器启动时初始化。
在过滤器中会执行dispatcher = init.initDispatcher(config);
,然后在执行dispatcher.init();
,再然后会执行下面的配置文件
|
|
这几个值规定了加载配配置文件的顺序:
- default.properties
- struts-default.xml
- struts-plugin.xml
struts.xml
struts.properties
web.xml
主要用的后三个,顺序是由上到下
struts2的主要配置文件:
struts2中Action的配置(struts.xml)
包的配置(package)
Struts2为了更好的管理Action,将Action分包进行管理的。
- /< package />包中的顺序
- name :包名,一个配置文件中不要出现重复的包名
- extends:继承别的包,通常继承struts-default
- namespace:名称空间,跟下边的/
中的name属性共同决定访问路劲 - namespace=””; 最后在找这个,在/之后
- namespace=”/“; 没有指定的名称的执行这个,一般就会写这个
- namespace=”/aaa”; 首先找带名称空间的,这个是最大化
- abstract:是否可以被别的包继承,true表示可以应用于其他包的继承
- /< package />包中的顺序
Action的配置
- /< action /> 的配置
- name:与名称空间共同决定访问路劲
- class:Action类的全路径
- method:Action中要执行的方法的名称,默认值execute
- /< action /> 的配置
Structs2中常量的位置
Struct中常量有三个配置的位置:
struts.xml(推荐)
<constant name="struts.action.extension" value="action">
struts.properties
struts.actioin.extension=action
web.xml
|
|
这里的struts.actioin.extension常量,表示访问的时候,路径的后缀名要加什么,默认是action, ,
表示action跟空
改配置文件不用重启服务器
<constant name="struts.devMode" value="true" />
Struts2分模块开发的配置
在struts2.xml 配置文件中用<include file="要包含的子配置文件"/>
Action的编写
Action本身是一个POJO的类
POJO(plain ordinary java object)的类,简单的java类:没有继承任何类。
Action实现一个Action的接口
在action的接口中,提供了个常量(逻辑视图名称)
- SUCCESS :成功
- NONE :不跳转
- ERROR :跳转到错误的页面
- INPUT :表单校验
- LOGIN :跳转到登陆页面
Action继承一个ActionSupport的类
ActionSupport实现Action的接口,还有好多扩展的方法
在父类里面的execute里,直接返回的SUCCESS。
以后写的时候最好使用这种方法。
Action的访问
现在已经可以访问到Action,但是一次请求对应了一个Action的,需要一个模块的多次请求添加到一个Action中。
可以在struts.xml中配配置
|
|
通配符的方式
//第一个*代表的数就是传过来的那个参数的后部分,正好是method里的东西
|
|
更通配的写法:
动态方法访问
在struts2中默认是关闭的,需要开启,在default.porperties中,需要在配置文件中修改称true
<constant name="struts.enable.DynamicMethodInvocation" value="true">
|
|
跳转之后,如果result里边是success可以省略。