Struts2笔记一

Struts2笔记:旨在介绍Struts2有什么,怎么使用Struts2暂时不关注原理、核心

 

学习Struts2的使用应该从以下三个方面

①如何跳转 、<result>标签 、<package>标签 、DMI

②VS(ValueStack) 与ognl表达式、Struts2标签

③拦截器

 

本文摘要:前置内容(MVC开发模式、Struts2开发环境的搭建)、跳转 、<result>标签<package>标签的用法、DMI

 

 

一:MVC的开发模式

I. 概念:MVC是一种设计思想,将流程控制、业务操作、数据展示分为三个层级(模块),独立存在、各司其职,彼此间是一种组合、调用。

II. MVC的组成:

M

Model

模型

对客观世界的一种代表或模拟(业务模拟、对象模拟)

Service+DAO+Entity

V

View

视图

负责页面展示、数据采集

HTML(JSP)+JS

C

Controller

控制器

负责流程控制、程序走向

Servlet(Action)

III. MVC的特点:

1). 低耦合性:模块与模块之间的关联性不强,不与某一种具体的实现产生密不可分的关联。

2). 高维护性:基于低耦合性,不同模块之间更容易修改或替换,热插拔。

3). 高重用性:相同的数据操作,可以服务与不同的业务功能,提高重用性。

二、Struts2框架:

1. 概念:充当了MVC中的Controller(控制器),可替换原有的Servlet(Action)。

2. 使用Servlet充当控制器的问题:

 

3. 使用Struts充当控制器:

 

 

三: Struts2开发环境的搭建

https://blog.csdn.net/sugar_map/article/details/80171920

 

 

四:Struts2编码  (暂不通过值栈取值、通过原生作用域取值)

1:实现Action接口  import com.opensymphony.xwork2.Action;

实现execute()方法

 

 

①:通过ServletActionContext对象获取作用域对象。

获取到request可以收集客户端传来的值、将值绑定到request作用域中,通过转发传值。

②:方法的返回值类型为 String

 

 

返回null值:响应空白页面。

<result>标签的name属性与返回值匹配:响应对应的Action或JSP页面。

若方法的返回值  与<result>标签的name属性值不匹配,则报错。

 

细节: Action对象的创建:

a. 多次请求同一个Servlet只创建一个Servlet对象。

b. 多次请求同一个Action对象会创建多个Action对象(每次请求都会创建一个)。

 

 

 

五、<package>包标签:

1. 作用:

I. 按功能完成模块的划分,管理不同<action>标签。

II. 功能的复用。

 

 

 

六:Struts2跳转详情  

分为两大类:

Action->JSP,Action->Action

 

①首先讨论 同包package的情况

 

1. Action ~ JSP:

I.	dispatcher(默认):URL不变

<!-- Action->JSP 默认方式为dispatcher(可以省略)-->

<action name="showAll" class="action.EmployeeListAction">

<result name="success" type="dispatcher">emplist.jsp</result>

</action>
	II.	redirect:URL改变
<!--Action->JSP    type="redirect"(不可省略)-->
<action name="login" class="action.ControlLoginAction">
	<result name="success" type="chain">showAll</result>
	<result name="none" type="redirect">login.jsp</result>
</action>


2. Action ~ Action:

I.	chain:URL不变

<!--Action->JSP    type="chain"(不可省略)-->

<action name="login" class="action.ControlLoginAction">

<result name="success" type="chain">showAll</result>

<result name="none" type="redirect">login.jsp</result>

</action>

 

<!--Action->JSP    type="redirectAction"(不可省略)-->

II.	redirectAction:URL改变

<action name="showAll" class="action.EmployeeListAction">

<result name="success" type="dispatcher">emplist.jsp</result>

</action>

<action name="delete" class="action.ControlDeleteAction">

<result name="success" type="redirectAction">showAll</result>

</action>


②:不同包的情况

 

Action->JSP跟同包情况一致。

 

Action到Action的重定向(不讨论转发,因为Action为多例,不方便共享作用域。)

 

 

 

七:DMI(动态方法的调用)

 

1. 将对同一张表操作的多个请求操作,书写在一个Action中,从而减少系统Action的数量,便于后续的项目管理与维护。

 

 

3. 逻辑代码:

 

建议:继承ActionSupport,由父类提供默认实现。 //因实现Action接口必须覆盖execute()方法(稍显多余)

 

4. struts.xml配置文件:

 

 

根据method属性区分Action请求的到底是哪个方法。

猜你喜欢

转载自blog.csdn.net/sugar_map/article/details/80207270
今日推荐