Struts2
第一天学习目标
1、了解Struts2的基本概念
2、掌握Struts2的开发步骤
3、了解Struts2的执行原理
4、掌握Struts2的常用配置
1、了解Struts2的基本概念
什么是Struts2?
----严格按照MVC的分层思想,把客户端和服务端响应按照流程编写的开发框架。
MVC分层思想。M:model 模型 V:view 视图 C:controller 控制器
总结:按照Controller,Service,Dao,Pojo编写代码,处理客户端和服务端之间交互的框架。
- 掌握Struts2的开发步骤
配置开发环境
切换工作空间 File-switch Workspace
配置工作空间的编码 Window-preference–搜索Workspace
修改jsp文件编码 Window-preference–搜索jsp
设定jdk,tomcat
设置字体大小
Struts2文件下载
隶属于Apache。www.apache.org
Apps 里面包含的Struts2的一些例子
Docs 里面包含Struts2的开发文档API
Lib Struts2的开发jar包
Src Struts2的源代码
Struts2运行需要jar包
Struts2-core.xxx.jar Struts2运行的核心jar包
Xwork-core.xxx.jar Struts2依赖的Xworkjar包
Ognl-xxx.jar 导航语言,类似el表达式
Freemarker-xxx.jar 包含的模板引擎
Common-logging.jar 日志jar包
Common-fileupload-xxx.jar 上传文件的jar包
Common-io-xxx.jar 跟上传有关
Common-lang3.xxx.jar 通用类
搭建Struts2环境
- 添加jar包
- 添加过滤器,在web.xml
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
struts2
/*
- 创建一个struts2的配置文件
/success.jsp
配置代码提示:默认没有联网的请求,我们需要手动配置DTD。如果连接,不用管。
Window-prefereces–搜索xml catelog ,添加dtd,关闭Struts2.xml文件,重新打开就可以了。 - 创建Action
public class HelloAction {
public String sayHello(){
System.out.println(“say Hello”);
return “success”;
}
} - 运行,测试
http://localhost:8080/项目名/action路径
Struts2执行原理
当我们发送一个请求,首先是经过了web.xml中的StrutsPreparedAndExcuteFilter,这个过滤器过滤所有的请求,然后,在Struts.xml中,根据请求的Action的名字找到对应的Action,
根据method找到对应的方法。当方法执行之后,根据返回值,找到struts.xml中的result名字,根据result名字找到对应的jsp路径。
- 掌握Struts2常用配置
Package标签:分模块开发
属性name,包的名称,必须有且唯一。
属性 extends=“struts-default”,继承的包名,这个是有且不变。
属性abstract=“true”,表示是抽象包,可以被继承
属性namespace,命名空间,设定包访问路径。
Namespace=“”默认命名空间
Namespace=“/”根命名空间
命名空间的运行原理
访问路径 http://localhost:8080/Struts2/p1/p2/p3/testShop
http://localhost:8080/Struts2/p1/p2/p3/myShop
步骤1,当访问p1/p2/p3/,如果这个namespace存在,就执行找对应Action。
但是没有对应的action,执行步骤4。找对应的Action,但是没有。执行步骤2。
步骤2,当访问p1/p2/,如果这个namespace存在,就执行找对应Action。
但是没有对应的action,执行步骤4。找对应的Action,但是没有。执行步骤3。
步骤3,当访问p1,如果这个namespace存在,就执行找对应Action。
执行步骤4。
步骤4,去默认namespace中找对应的action。
先找命名空间,在命名空间找对应Action。如果没有,去默认命名空间找,如果找不到。去下层命名空间找,。。。。如果,所有的命名空间的Action中都找不到,报错。。。。
Constant标签
<constant name="struts.action.extension" value="action,do"></constant>
Action标签
配置Action类,执行其中的方法。
Name属性,就是访问的路径,必须有且唯一
Class属性,Action的全路径
Method属性,Action需要执行的方法
Result标签
Name属性,返回的视图名称
视图路径