Struts2

Struts2简介
1.什么是Struts2
.Struts2是轻量级的MVC框架,只要解决了请求分发的问题,重心在控制层和表现层

.轻量级
低侵入性,与业务代码的耦合度很低,即业务代码中基本不需要import它的包

.MVC框架
struts2实现了MVC,并提供了一系列API,采用模式化方式简化业务开发过程

什么是MVC
.M-Model模型
模型(model)的职责是负责业务逻辑(service).
包含两层:业务逻辑和业务处理逻辑.比如:实体类,DAO,service都属于模型层.

.V-view视图
视图(View)的职责是负责显示界面和用户交互(收集用户信息).属于视图的组件是应该包含
业务逻辑和控制逻辑的jsp

.C-Controller控制器
控制层是模型层M和视图层V之间的桥梁,用于控制流程.
比如:在Servlet项目中的单一控制器ActionServer

Struts与Servlet对比.
.优点:
.业务代码解耦,适合团队开发
将请求分发给不同的处理类,从而降低了业务代码的耦合度

-提升开发效率
提供了一系列的API,可以大大的提升项目的开发效率,比如:使用拦截器可以自动给请求参数
转型.

.缺点:
1.执行效率偏低
需要大量的反射,解析XML等技术手段会降低执行效率
2.结构复杂,有学习成本,需要花一定时间学习Struts2的API以及使用步骤

Struts2的发展历史

使用Struts2

Servlet如何实现MVC
浏览器--->request-->Servlet(controller)-->JavaBean(model)<--->DB--->转发-->浏览器

Struts2如何实现MVC
浏览器--request---Filter(web.xml)-->分发到指定Action(控制器)-->javaBean(model)<-->DB--Filter-->转发到指定页面

1.创建一个web项目
2.导入Struts2核心包
.导入Struts2最小范围核心包(7个)
.将这些包复制到新建项目/WEB-INF/lib目录下
3.配置前端控制器
.Struts2使用Filter来充当前端控制器,因此在web.xml配置一个Filter即可
.Struts2预置了该Filter的实现类:
名为:org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
.指定该Filter处理所有的请求
4.创建struts.xml
.在src下,创建名为struts.xml的配置文件
-Struts2配置文件默认要放在src下
-Struts2配置文件默认名称为struts.xml(不要轻易改名字)
.struts.xml的格式
-可以参考默认配置文件struts-default.xml(设置版本以及DTD引用)
-可以参考DTD文件
5.编写业务控制Action
.创建业务控制器组件,通常命名为XxxxAction,该组件是一个满足JavaBean规范的类
.在Action中定义业务方法,要满足下列条件
-方法是public的
-返回值一定要String类型
-参数列表为空
编写业务方法
-方法内部编写业务逻辑代码
-返回的字符串与struts.xml->action->result的name属性匹配,即根据此返回值找到对应
的result
6.创建JSP页面

7.配置struts.xml
.在struts.xml配置请求与Action的关系
.在action下,通过result设置转发的页面

8.参数传递
页面向action传参
基本属性注入
<input type="text" name="name"/> -->提交-->Filter--->Action--->String2 API--->
注入---Action中的成员变量中

--在action接收基本属性值
1.在action定义变量接收属性
2.Struts2会自动实例化该属性
3.Struts2会自动调用set方法为该属性设置值
4.上诉行为发生在action实例后,业务方法调用之前

--表单中文本指定表达式"属性名"
1.name中的表达式直接写action中的属性名
2.Struts2自动会根据名称调用action中对应的set方法为属性赋值


 

域模型注入:
1.在Action中定义实体对象属性,并提供set,get方法
2.表单中文本框指定表达式"对象名.属性名"
 

页面Action取值
使用EL表达式显示Action值
.取基本属性值
${属性名}
.取域模型对象值

取域模型对象值
${对象名.属性名}

结论:
取值时EL表达式的写法,与注入时表达式的写法一致
Struts2会自动将Action的数据传递给JSP,并且对传递方式进行了封装,
只要我们在Action中定义属性并为其提供get方法,那么从Action跳转到JSP时Struts2会
自动通过get方法将这些属性值传递给JSP

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值