过程:
1.新建一个web项目
2.在项目右键选择如图所示
3.导入struts后会自动生成两个xml文件和一个jar包,web.xml和struts.xml
MyEclipse2017创建Struts2项目
什么是框架
框架是一个软件的半成品.
JavaEE的三层架构
Struts2概述
Apache Struts 2是一个用于开发Java EE网络应用程序的开放源代码网页应用程序架构。它利用并延伸了Java Servlet API,鼓励开发者采用MVC架构。
缘起于Apache Struts的WebWork框架,旨在提供相对于Struts框架的增强和改进,同时保留与Struts框架类似的结构。2005年12月,WebWork宣布WebWork 2.2以Apache Struts 2的名义合并至Struts。2007年2月第一个全发布(full release)版本释出。–WIKI百科
从前面的JAVAEE三层架构上面我们可以了解到,Struts2是属于Web层的框架,Web层的框架都有一个特点,那就是基于前端控制器模式实现的.
前端控制器模式
传统开发中,每个请求都需要对应一个Servlet,而Struts2框架将所有的请求都先经过Struts2的前端控制器,也就是Struts2中的过滤器.
创建一个Struts2项目
下载Struts2
下载地址:Welcome to the Apache Struts project
Struts2目录介绍
Struts2核心Jar包
找到Struts2示例程序
Struts2安装目录->apps->apps->Struts-blank.war
解压Struts-blank.war
得到示例程序文件夹,进入到WEB-INF里面的lib查看Struts2基本开发包
基本开发包一共有13个(这里我用的是Struts2.3版本)各个版本的基本开发包数量不一样.
创建一个Web项目
导入Struts2核心Jar包
编写Jsp页面
编写Action类
Action类中必须有一个名字是execute方法,而且这个方法必须是公有(public),返回值必须是String,且该方法没有任何参数.
将Action类配置到Struts.xml
在src目录下新建struts.xml
梳理
配置前端过滤器
编写跳转成功页面
部署并访问项目
Struts2执行流程
当用户访问某一个Action的时候,先经过核心过滤器,在核心过滤器中执行一组拦截,执行目标Action,根据Action的返回值,进行页面跳转。
Struts2常见配置
配置XML提示
Action的配置
package标签配置
package标签是包,他的作用是为了更好的管理Action.
package标签的常用属性
- name:包的名称,在一个Struts2项目中可以随便定义,只要不重名即可
- extends:继承的包,一般继承struts-default
- namespace:名称空间,与action标签中的name属性共同决定了访问路径
- 名称空间的三种不同的写法
- 带名称的名称空间:namespace="/test"
- 根名称空间:namespace="/"
- 默认名称空间:namespace=""
- 名称空间的三种不同的写法
- abstract:声明包是抽象包
Action标签的配置
Action标签将标识符映射到处理程序类。当请求与操作名称匹配时,框架使用映射来确定如何处理请求。
action标签的常用属性
- name:与namespace共同决定浏览器访问路径
- 假如请求http://www.planetstruts.org/struts2-mailreader/Welcome.action将映射到Welcome类去操作
- class:Action类的全路径
- method:用于确定执行Action类中的某个方法,默认执行的是Action类中的execute方法
- converter:Struts2框架中的类型转换
常量配置
Struts常量配置
查看Struts常量
/org/apache/struts2/default.properties
- struts.i18n.encoding=UTF-8:Struts2框架默认编码格式是UTF-8
- struts.action.extension=action:Struts2请求的默认扩展名
修改常量的值的方法
- 在struts.xml中修改常量**(常用方法)**
- 直接修改default.properties
- 通过web.xml修改常量
多个Struts.xml配置文件的配置
当我们有多个包的时候,不能将所有的struts配置都写在一个struts.xml文件中,这样的做法会给我们后期维护带来阻碍.对于大型应用程序,最好使用多个配置文件,以便管理应用程序
可以创建许多配置文件,但需要在struts.xml文件中定义它。struts的include子元素用于定义支持的配置文件。
Action的写法
Action类是一个POJO
维基百科对POJO的描述:
在软件工程中,普通旧Java对象(POJO)是一个普通的Java 对象,不受任何特殊限制的约束,也不需要任何类路径。该术语由Martin Fowler,Rebecca Parsons和Josh MacKenzie于2000年9月创造:[1]
“我们想知道为什么人们如此反对在他们的系统中使用常规物体,并得出结论认为这是因为简单的物体缺乏一个奇特的名字。所以我们给了他们一个,它很好地被捕获了。” [1]
术语“POJO”最初表示Java对象,它不遵循任何主要的Java对象模型,约定或框架; 现在,“POJO”也可以用作“Plain Old JavaScript Object” 的首字母缩写词,在这种情况下,该术语表示类似谱系的JavaScript对象。[2]
术语继续旧的条款对于不使用花哨的新功能,如POTS(技术型普通老式电话服务的)电话波德(普通旧文档中)的Perl。与.NET框架上的POJO相当的是Plain Old CLR Object(POCO)。[3]对于PHP,它是Plain Old PHP Object(POPO)。[4] [5]
POJO现象最有可能获得广泛接受,因为需要一个与复杂对象框架形成对比的通用且易于理解的术语
Action类实现Action接口
访问Action的不同方式
通过action标签的method属性访问
Action类中有四个不同的方法,当我们访问某个方法的时候执行某个action
在struts.xml中的使用action标签的method属性访问action
通过通配符的方式进行action的访问
动态访问
通过使用struts.xml的方法修改Struts配置开启动态方法访问
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
- 1
书写action标签
<action name="customer" class="test.demo3.CustomerAction"></action>
- 1
然后再JSP页面配置访问路径
<!--前面写上Actionname的名称中间写个!,后面是方法的名称 -->
<a href="${ pageContext.request.contextPath }/customer!find.action">查询客户</a>
<br />
<a href="${ pageContext.request.contextPath }/customer!update.action">修改客户</a>
<br />
<a href="${ pageContext.request.contextPath }/customer!delete.action">删除客户</a>
<br />
<a href="${ pageContext.request.contextPath }/customer!save.action">保存客户</a>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
JSP页面书写方法:前面写上Actionname的名称中间写个!,后面是方法的名称