二、 Spring框架核心之代理模式+spring与Struts框架整合学习--实训 2019/10 / 12

本文介绍了Struts2框架的核心特性和优势,包括MVC架构、配置文件、Actions和拦截器。同时,详细阐述了Struts2与Spring框架的整合过程,强调了让Spring创建Struts2 Action对象的关键点。最后,探讨了Spring框架中的代理模式,包括静态代理、动态代理和Cglib代理,阐述了它们在权限控制和事务管理中的应用。
摘要由CSDN通过智能技术生成

介绍struts2框架

Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,**Struts2作为控制器(Controller)**来建立模型与视图的数据交互。Struts2在Struts1融合webwork。

ONGL表达式:就是对象图形化导航语言,在前端页面中,访问action的属性、方法;类似于认为就是对JSP的封装,是编程更加方便

为什么 我要用他

  1. POJO表单及POJO操作 - Struts2 去除掉了Struts框架中的Action Forms部分。在Struts2框架下,你可以用任何一POJO来接收表单输入,同样的,你可以把任一POJO视为一个Action类
  2. 标签支持 - Struts2 改进了标签表单,而新的标签可让开发人员减少代码编写量。
  3. AJAX支持 - Struts2 被认可接收进Web 2.0技术,并创建了功能非常类似于标准的Struts2 标签的AJAX标签,把AJAX支持整合进其结果中。
  4. 易于整合 - Struts有多种整合方式可使用,现在与其他类型的框架,如Spring、Tiles、SiteMesh之类的,整合更为容易了。
  5. 模板支持 - 支持使用模板生成视图
  6. 插件支持 - 有大量的插件可用于Struts2,而使用插件可以增强和扩大Struts2 核心行为。
  7. 性能分析 - Struts2 为调试和配置应用程序提供综合的性能分析,此外,Struts也以嵌入调试工具的形式提供集成调试。
  8. 易于修改标签 - 在Struts2 中,可使用Freemarker的模板对标签标记进行调整,而修改标签不需要JSP或是Java知识,基本的HTML、XML和CSS知识就足够了。
  9. 促进减少配置 - Struts2 使用各种设置的默认值促进减少配置,而你不需要再配置什么除非是偏离了Struts2 设定的默认设置。
  10. 视图技术 - Struts2 为多种视图选项(JSP、Freemarker、Velocity、XSLT等)提供支持。

Struts2 MVC架构

模型
模型主要负责管理应用程序的数据,它通过响应视图的请求和控制器的指令来更新自身的数据。
视图
通过控制器的指令触发所展现的一种特殊的数据格式。它们是基于像JSP、ASP、PHP之类模板系统的脚本,较易与AJAX技术进行整合。
控制器
控制器负责响应用户输入并执行数据模型对象的交互。控制器在接收、确认输入后执行修改数据模型状态的业务操作。

在这里插入图片描述

Struts2 配置文

  1. web.xml文件
    web.xml配置文件是一种J2EE配置文件,决定servlet容器的HTTP元素需求如何进行处理。它严格来说不是一个Struts2 配置文件,但它是Struts2 运作所需要进行配置的文件。
    正如前面所讨论的,这个文件为每个web应用程序提供接入点。在部署描述符(web.xml)中,Struts2 应用程序的接入点将会定义为一个过滤器。因此我们将在web.xml里定义一个FilterDispatcher类的接入点,而这个web.xml文件需要在WebContent/WEB-INF文件夹下创建。

注意:

自2.1.3版本开始,ActionContextCleanUp和FilterDispatcher都由StrutsPrepareAndExecuteFilter代替。

  1. struts.xml文件

struts.xml文件包含有随着Actions的开发你将要修改的配置信息。它可用于覆盖应用程序的默认设置,例如:struts.devMode=false 以及其他定义为属性文件的设置。这个文件可在WEB-INF/classes文件夹下创建。

  1. struts-config.xml文件
    struts-config.xml配置文件是Web Client中View和Model组件之间的链接,但在你99.99%的项目里你不必使用这些设置。 struts-config.xml配置文件包含以下主要元素:

拦截器和说明
1 struts-config
这是配置文件的根节点。

2 form-beans
这是你将ActionForm子类映射到name的位置,你可以在struts-config.xml文件的其余部分,甚至在JSP页面上,将这个name用作ActionForm的别名。

3 global forwards
此部分将你在webapp上的页面映射到name,你可以使用这个name来引用实际页面。这避免了对你网页上的URL进行硬编码。

4 action-mappings
这是你声明表单处理程序的地方,也被称为操作映射(action mappings)。

5 controller
这部分是配置Struts的内部,在实际情况中很少使用。

6 plug-in
这部分告诉Struts在哪里找到属性文件,它包含提示和错误消息。

  1. struts.properties文件

这个配置文件提供了一种机制来改变框架的默认行为。实际上,struts.properties配置文件中包含的所有属性也可以在web.xml中配置使用init-param,以及在struts.xml配置文件中使用constant标签。 但如果你想保持事件独立以及保留更多struts细节,那么你可以在WEB-INF/classes文件夹下创建这个文件。

struts.properties
文件中配置的值将覆盖

default.properties
中配置的默认值,这些值包含在struts2-core-x.y.z.jar分布中。有一些属性,你可以考虑改为使用

struts.properties

### When set to true, Struts will act much more friendly for developers
struts.devMode = true

### Enables reloading of internationalization files
struts.i18n.reload = true

### Enables reloading of XML configuration files
struts.configuration.xml.reload = true

### Sets the port that the server is run on
struts.url.http.port = 8080

Struts2 Actions动作

  1. 每个URL映射到特定的action,其提供处理来自用户的请求所需的处理逻辑。
  2. action在将数据从请求传递到视图(无论是JSP还是其他类型的结果)方面起着重要作用
  3. action必须协助框架确定哪个结果应该呈现在响应请求的视图中。

Struts2 拦截器

拦截器在概念上与servlet过滤器或JDK代理类相同。拦截器允许横切功能,把action以及框架分开实现。你可以使用拦截器实现以下操作:

1.在调用action之前提供预处理逻辑。

2.在调用action后提供后处理逻辑。

3.捕获异常,以便可以执行备用处理。

Struts2框架中提供的许多功能都是使用拦截器实现的,包括异常处理,文件上传,生命周期回调和验证等。事实上,由于Struts2将其大部分功能基于拦截器,因此不太可能为每个action分配7个或8个拦截器。

1 alias
允许参数在请求之间使用不同的别名。

2 checkbox
通过为未检查的复选框添加参数值false,以辅助管理复选框。

3 conversionError
将字符串转换为参数类型的错误信息放置到action的错误字段中。

4 createSession
自动创建HTTP会话(如果尚不存在)。

5 debugging
为开发人员提供一些不同的调试屏幕。

6 execAndWait
当action在后台执行时,将用户发送到中间的等待页面。

7 exception
映射从action到结果抛出的异常,允许通过重定向自动处理异常。

8 fileUpload
便于文件上传。

9 i18n

在用户会话期间跟踪选定的区域。

10 logger
通过输出正在执行的action的名称提供简单的日志记录。

11 params
设置action上的请求参数。

12 prepare
这通常用于执行预处理工作,例如设置数据库连接。

13 profile
允许记录action的简单分析信息。

14 scope
在会话或应用程序范围内存储和检索action的状态。

15 ServletConfig
提供可访问各种基于servlet信息的action。

16 timer
以action执行时间的形式提供简单的分析信息。

17 token
检查action的有效性,以防止重复提交表单。

18 validation
提供action的验证支持。

通过注解的方式,把对象加入ioc容器。

创建对象以及处理对象依赖关系,相关的注解:
@Component 指定把一个对象加入IOC容器

@Repository 作用同@Component; 在持久层使用
@Service 作用同@Component; 在业务逻辑层使用
@Controller 作用同@Component; 在控制层使用

@Resource 属性注入 byName 按名字找
@Autowired 属性注入 byType 按类型找(常用)
—>等价< property name=“userDao” ref=“userDao”>< /property >

spring与Struts框架整合-----关键点:让struts框架action对象的创建,交给spring完成!

第一步当然是导 包—在动态web项目下
1)引入struts .jar相关文件
commons-fileupload-1.2.2.jar
commons-io-2.0.1.jar
commons-lang3-3.1.jar
freemarker-2.3.19.jar
javassist-3.11.0.GA.jar
ognl-3.0.5.jar
struts2-core-2.3.4.1.jar
xwork-core-2.3.4.1.jar

2)spring-core 相关jar文件

  commons-logging-1.1.3.jar
  spring-beans-3.2.5.RELEASE.jar
  spring-context-3.2.5.RELEASE.jar
  spring-core-3.2.5.RELEASE.jar
  spring-expression-3.2.5.RELEASE.jar

3)spring-web 支持jar包
spring-web-3.2.5.RELEASE.jar 【Spring源码】
struts2-spring-plugin-2.3.4.1.jar 【Struts源码】

过程梳理(what)
创建web项目
导入spring, struts2 相关jar包

引入spring配置文件 和 struts2 配置文件

4配置XML

struts.xml

<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
	
    <package name="crm" namespace="/" extends="struts-default">
    	<!-- user模块 动态调用方法 -->
    	<action name="customer_*" class="userAction" method="{1}"></action>
    	 
      </package>
    
</struts>
 ----struts路径与action映射配置

bean.xml

 ----spring ioc容器配置:先dao,再service,最后action
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
	
	<!-- 开启注解扫描 -->
	<context:component-scan base-package="cn.atcast.e_anno"></context:component-scan>
</beans
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值