Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。
1.struts2是一个基于MVC设计模式的WEB层框架。
2.struts2的内核相对于struts1来讲已经发生巨大变化。
1-2.常见的wed层框架
1.struts2,
2.struts1,
3.webwork
4.springMVC
2-1.下载Struts2的开发环境
http://struts.apache.org/
2-2.解压Struts2开发包
2-3.创建wed项目,引入jar包
struts-biank可以找到jar的包
2-4.创建一个JSP页面
<h1>Struts2的入门</h1>
<h3<ahref="${pageContrxt.request.contextPath}/hello.action">Struts2的入门</a></h3>
2-5.编写Action的类
/** * Struts2的入门的Action类 * @author jt * / public class HelloAction { public String execute(){ System.out.println("HelloAction执行了..."); retuen null; } }
2-6.对Action进行配置
在src下创建(提供)名称叫做struts.xml的配置文件
2-7.改写Acton中的方法的返回值
public String execute(){
System.out.println("HelloAction执行了。。。。");
return "success";
2-8.改写struts.xml
2-9.编写success.jsp
<body>
<h1>跳转成功页面!!!</h1>
</body>
2-10.Struts2的执行流程
当用户访问某一个Action的时候,先经过核心过滤器,在核心过滤器中 执行一组拦截器(这组拦截器实现部分功能),执行目标Action,Action的返回值,进行页面跳转。
3-2.加载顺序
1.default.properties
2.struts-default.xml
3.struts-plugin.xml
4.struts.xml
5.struts.properties
6.web.xml
注意:后配置的常量的值会覆盖先配置的常量的值。
3-3.package相关配置
1.package标签称为包,这个包与Java中的包的概念不一致。包为了更好管理action的配置。
2.package标签的属性
name :包的名称,只有在一个项目中不重名即可。
extends :继承哪个包,通常值为struts-default。
namespace :名称空间,与标签中的name属性共同决定访问路径。
3.名称空间有三种写法:
带名称的名称空间 :namespace=”/aaa”
跟名称空间 :namespance=”/”
默认名称空间 :namespace=””
4.abstract :抽象的,用于其他包的继承。
3-4.action相关配置
action标签配置Action类。
action标签的属性
name :与namespace共同决定访问路径
class :Action类的全路径
method :执行Action中的哪个方法的方法名,默认值execute
converter :用于设置类型转换器
3-5.Struts2的常量配置
在Struts2的框架中,提供了非常多的常量:(在default.properties)
1.struts.i18n.encoding=UTF-8,Struts2中所有的post请求的中文乱码不用处理。
2.struts.action.extension=action, Struts2请求的默认的扩展名。默认扩展名是.action或者什么都不写。
在Struts2中修改一些常量的值:
修改常量的值,可以有三个位置进行修正:
1.struts.xml中进行修改:
<!-- 配置Struts2的常量-->
<constant name="struts.action.extension" value="action"/>
2.struts.properties中进行修改:
struts.action.extension=action
3.web.xml中进行修改:
<!--修改常量-->
<init-param>
<param-name>struts.action.extensin</param-name>
<param-value>xyz</param-value>
</init-param>
</filter>
4-1.Action类是POJO的类
public class ActionDemo1{
public String execute(){
System.out.printtln("ActionDemo1执行了....");
return null;
}
}
4-2.Action类实现一个Action的接口
public class ActionDemo2 implements Action{
@Override
public String execute() throws Exception
System.out.println("ActionDemo2执行了...);
return NONE;
}
}
4-3.通过method设置
<!---配置Struts2的包 =========== -->
<package name="demo3" extends="struts-default" namespace="/">
<actionname="userFind"classs="com.itheima.struts.demo3.UserAction" method="find"></action>
<actionname="userUpdate"classs="com.itheima.struts.demo3.UserAction" method="update"></action>
<actionname="userDelete"classs="com.itheima.struts.demo3.UserAction" method="delete"></action>
<actionname="userSave"classs="com.itheima.struts.demo3.UserAction" method="save"></action>
</package>