Spring整合Struts详解

组合泛化能力量化评估:复合发散度与CFQ基准数据集解析 组合泛化是人工智能与自然语言处理中的核心挑战,指模型从有限已知组件中理解和生成无限新组合的能力。其原理在于模型能否内化原子(如词汇、句法模板)的含义与组合规则,而非仅记忆训练数据中的表面模式。这一能力的技术价值在于,它直接关系到模型能否实现系统性泛化,从而在真实、开放场景中可靠应用。当前主流序列模型(如Transformer、LSTM)在此能力上存在显著局限,往往沦为“模式匹配器”。为科学评估该能力,研究者提出了复合发散度这一量化指标,并构建了CFQ(组合自由库问答)基准数据集。复合发散度在严格约束训练与测 阅读详情

虽然现在J2EE开发中,对于struts2(webwork)框架 

已经出现有一段时间了,但是对于struts1.0系列,在当前java 开源框架组合中依然可能是首选。在项目中采用ssh的组合(ssh2还有一段路要走),可是说是当前的一种主流,对于spring与struts或者是 hibernate的整合,对于我们来说,还是要有必要搞清楚,这样,对于整合框架提高开发效率来说,我们会少走很多弯路!下面请随阿堂一起来学习!

     Spring虽然也提供了自已的mvc组件,但一来spring的mvc组件过于繁琐,二来是Struts的用户众多,,因此,很多项目还是选择使用 spring整合struts框架,而且spring可以无缝的整合strtus框架,二者结合成一个更实际的j2ee开发平台
     使用spring的web应用时,不用手动创建spring容器,而是通过配置文件声明式地创建spring容器,因此,在web应用中创建spring容器有如下两种方式
1.直接在web.xml文件中配置spring容器
2.利用第三方MVC框架的扩展点,创建spring容器

一.直接在web.xml文件中配置spring容器
   这种创建spring容器的方式更加常见。为了让spring容器随web的应用的启动而自动启动,有如下两种方法
    1.利用ServletContextListener实现
    2.采用load-on-startup Servlet实现

 

对于利用ServletContextListener实现方式,操作及说明如下
    spring提供ServletContextListener的一个实现类ContextLoadListener,该类可以作为Listener使 用,会在创建时自动查找web-inf/applicationContext.xml文件,因此,如果只有一个配置文件,并且名为 applicationContext.xml,只需要在web.xml文件中加入如下配置即可
 <listener>
  <listener-class>
   org.springframework.web.context.ContextLoaderLister
  </listener-class>
 </listener>

     如果有多个配置文件需要载入,则考虑 用<context-param>元素来确定配置文件的文件名。ContextLoadListenter加载时,会查找名为 contextConfigLocation的参数。因此,配置context-param时,参数名应该是contextConfigLocation

 

带多个配置文件的web.xml文件如下
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
 xmlns="http://java.sun.com/xml/ns/j2ee "
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance "
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd ">

 
 <context-param>
  <!-- 参数名为contextConfigLocation -->
  <param-name>contextConfigLocation</param-name>
  <!-- 配置多个文件之间,以","隔开 -->
  <param-value>/WEB-INF/actionContext.xml,/WEB-INF/appContext.xml,/WEB-INF/daoContext.xml</param-value>
 </context-param>
 
 <!-- 采用listener创建ApplicationContext实例 -->
 <listener>
  <listener-class>
   org.springframework.web.context.ContextLoaderLister
  </listener-class>
 </listener>
</web-app>

    如是没有通过contextConfigLocation指定配置文件,spring会自动查找applicationContext.xml文件;如果 有contextConfigLocation,则利用该参数确定的配置文件,如果无法找到合适的配置文件,spring将无法正常初始化
    spring根据bean定义创建WebApplicationContext对象,并将其保存在web应用的ServletContext中。大部分情 况下,应用的Bean无须感受到ApplicationContext的存在,只要利用ApplicationContext的IOC容器
如果需要在应用中获取ApplicationContext实例,可以通过如下代码获取
//获取当前web应用的spring的容器
WebApplicationContext ctx=WebApplicationContextUtils.getWebApplicationContext(ServletContext);

 

补充一点(对于上述方式,在strus-config.xml文件事还要做如下处理)

  在struts-config.xml文件中,对于Action对应的type类型应加上type=“org.springframework.web.struts.DelegatingActionProxy”  

<action path="/loginout" scope="request" validate="false" type="org.springframework.web.struts.DelegatingActionProxy">  
      <forward name="logout" path="/login.jsp" />
  </action>


对于利用load-on-startup Servlet实现方式,操作及说明如下
    spring提供了load-on-startup Servlet的一个特殊Servlet类ContextLoadServlet该Servlet在启动时,会在创建时自动查找web-inf/applicationContext.xml文件
    当然,为了让ContextLoadServlet随应用的启动而启动,应将Servlet配置成load-on-startup的Servlet,load-on-startup的值小一点比较合适,这样可以保证ApplicationContext更快的初始化
    如果只有一个配置文件,并且名为ApplictionContext.xml文件,在web.xml文件中增加如下一段即可
 <servlet>
  <servlet-name>context</servlet-name>
  <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet
     该Servlet用于提供“后台”服务,主要用于创建spring容器,无须响应客户请求,因此无须配置servlet-mapping
 如果有多个配置文件,一样使用<context-poaram>

 <context-param>
  <!-- 参数名为contextConfigLocation -->
  <param-name>contextConfigLocation</param-name>
  <!-- 配置多个文件之间,以","隔开 -->
  <param-value>/WEB-INF/actionContext.xml,/WEB-INF/appContext.xml,/WEB-INF/daoContext.xml</param-value>
 </context-param>
 <servlet>
  <servlet-name>context</servlet-name>
  <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet

      事实上,不管是ContextLoaderServlet还是ContextLoadListener,都依赖于ContextLoader创建 ApplicationContext.之间的区别不是它们本身引起的,而是由于Servlet规范,Listener比Servlet优先加载。因 此,Listener比Servlet创建 ContextLoadListener的时机更早

      到底需要使用 Listener,还是使用load-on-startup Servlet来创建Spring容器呢?通常推荐使用Listener来创建spring容器。但Listener是Servlet2.3以上才支持的 标准,因此必须web容器支持Listener才可使用Listener

 

 

二.利用第三方MVC框架的扩展点,创建spring容器
      Struts有一个扩展点PlugIn,spring正是利用了PlugIn这个扩展点,从而提供了与Struts的整合。。spring提供了 PlugIn的实现类org.springframework.web.struts.ContextLoadPlugIn,这个实现类可作为 struts的PlugIn配置,Struts框架启动时,将自动创建Spring容器
     为了利用struts的PlugIn创建Spring容器,只需要在struts配置文件struts-config.xml中增加如下片段即可
 <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
   <set-property property="contextConfigLocation" value="/WEB-INF/actionContext.xml,/WEB-INF/appContext.xml,/WEB-INF/daoContext.xml" />
 </plug-in>
      其中,指定contextConfigLocation属性值时,即可以指定一个spring配置文件的位置,可以指定多个spring配置文件的位置

 

YF-S401水流量传感器在STM32上的精准计量实现 本文详细介绍了YF-S401水流量传感器与STM32微控制器的集成应用,实现精准水流计量。通过外部中断和外部时钟两种脉冲计数方案,结合硬件配置、软件滤波和校准技巧,确保高精度流量测量。适用于智能家居和工业自动化中的水控系统,提升系统稳定性和测量准确性。 阅读详情

相关推荐

QT+Halcon实现螺纹检测

工业上要检测螺丝的内外直径、内外牙距、内外角度,现在比较好用的图像处理库,开源的opencv,收费的有halcon。为了实现螺纹检测,和对比螺纹检测拿个库比较好。分别用opencv和halcon实现了螺纹检测,通过对比发现用halcon实现的效果比较。现在用博客把实现过程记录下来: 1、需要检测的螺纹数据如下: 2、为了实现检测螺丝以上数据,螺纹内径、螺纹外径、螺纹外牙距、螺纹...

专注现代C++实战,从核心语法到高性能编程,助力开发者深入掌握系统级编程精髓。 7033

八、框架整合(一) - SpringStruts整合

一、springstruts整合 Spring,负责对象对象创建 Struts, 用Action处理请求 SpringStruts框架整合, 关键点:让struts框架action对象的创建,交给spring完成! 配置struts的核心过滤器,拦截请求资源。 配置spring的监听器,初始化IOC容器。 1.1 引入jar文件 1. 引入struts.jar 相关jar文件 2. 引入spring-core 相关jar文件

weixin_45602227的博客 537

Struts2与Spring2框架整合实战详解

Struts2是一个基于MVC设计模式的Java Web应用框架,其核心通过拦截器(Interceptor)实现请求处理流程的解耦。Action类作为控制器组件,负责业务逻辑调度,配合Result映射实现视图跳转,具备良好的扩展性。Spring2引入了完善的依赖注入(DI)和面向切面编程(AOP)机制。DI通过配置管理对象依赖关系,降低组件耦合;AOP支持横切关注点(如日志、事务)的模块化封装,提升系统可维护性。

weixin_42593130的博客 1137

spring+struts整合

一、整合中遇到的问题 1.strutsspring整合要用到struts2-spring-plugin包,它作用就是不让struts自己创建Action,而是让spring创建管理Action对象。 但是我在加了这个Jar包后,发现它自带了低版本的spring包,使用exclusion标签排除了问题Jar包,下面链接是具体操作: https://blog.csdn.net/weix...

金豆呀的博客 1711

StrutsSpring的区别?

        基于Web的MVC framework在Java EE的世界内已是空前繁荣。TTS网站上几乎每隔一两个星期就会有新的MVC框架发布。目前比较好的MVC,老牌的Struts(这里指的是Struts1.X)、Webwork。新兴的MVC框架Spring MVC、Tapestry、JSF等。这些大多是著名团队的作品,另外还有一些边缘团队的作品,也相当出色,如Dinamica、VRapt

Eastyell的专栏 1万+

SpringStruts2

一、Spring 1、Spring概述 Spring是一个轻量级的DI和AOP容器框架Spring是非侵入式的,基于spring开发的应用一般不依赖于spring的类。 DI:称作依赖注入(Dependency Injection),和控制反转的一个概念,具体的讲,当一个角色需要另外一个角色协助的时候,在传统的程序设计中,通常有调用者来创建被调用者的实例。但是在spring中创建被调用...

weixin_42078450的博客 3507

springstruts2整合详解

首先,我们要了解,web.xml中的各种元素在web容器中的加载顺序:listener(监听器)>filter(过滤器)>servlet. 在web.xml中配置如下: <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-

Jston的专栏 1316

Spring+mybatis+struts框架整合的配置详解

学了很久的spring+mybatis+struts.一直都是单个的用他们,或者是两两组合用过,今天总算整合到一起了,配置起来有点麻烦,但是配置完一次之后,就轻松多了,那么框架整合配置详解如下。1、导入相应的jar包因为我们建造的是maven的web项目,所有我们在pom.xml中需要导入这些包。pom.xml 详细注释<?xml version="1.0" encoding="UTF-8"?>

Wion Wan 9583

struts2与spring整合详解

      package org.lmxzz.struts2.service;public interface LoginService{ public boolean doLogin(String userName, String password) ;} 再编写实现类LoginServiceImpl,具体代码如下:   package org.lmxzz.struts2.service.

java,linux,jboss,myeclipse,eclipse的专栏 749

Spring 整合struts 详解

原文:http://www.javaeedev.com/blog/article.jspx?articleId=ff8080811ec61704011ece9640f10003 虽然现在J2EE开发中,对于struts2(webwork)框架已经出现有一段时间了,但是对于struts1.0系列,在当前java开源框架组合中依然可能是首选。在项目中采用ssh的组合(ssh2还有一段路要走),可...

ruilin521314 83

Struts2+Spring+Hibernate整合过程详解

Struts作为MVC 2的Web框架,自推出以来不断受到开发者的追捧,得到广泛的应用。作为最成功的Web框架Struts拥有众多的优点:MVC 2模型的使用、功能齐全的标志库(Tag Library)、开放源代码。而Spring的出现,在某些方面极大的方面了Struts的发展。同时,Hibernate作为对象持久化的框架,能迅速的提高软件开发的效率与生产力。这三种流行框架整合应用,可以发挥它

809

java struts spring_springstruts2整合示例详解|spring教程

struts2框架springmvc框架差不多,springstruts2整合并不难,spring struts2整合需要做如下操作:1:创建struts2项目,引入struts2与spring整合jar包,ssh框架整合jar包如下:http://www.tpyyes.com/a/javaweb/2016/1006/20.html。2:在web.xml文件中定义ContextLoaderL...

weixin_39753674的博客 217

spring框架struts2框架整合

springstruts2的整合 1:单独配置struts 一:导入struts包 二:编写Action public class JboaEmployeeAction extends ActionSupport { public String login(){ System.out.println(“login…”); return SUCCESS; } } 三:配置struts.xml <?xml version="1.0" encoding="UTF-8" ?> i

weixin_43474701的博客 2223

Spring学习之整合struts框架

spring整合框架原理: 一个项目从上到下可以分为基本的三层,分别是web层,service层,dao层(逻辑层),如图所示: 因为框架各自发挥作用的层不同,所以我们就可以把框架互相组合起来,更好的完成项目 因此学习一下框架的组合,先来介绍下spring框架搭配struts框架, 组合流程如下: 一:建立一个web项目,我这里建立的名字叫 然后我们需要把Spring框架所需的包和struts所需的包都导入lib中 当然包是十分多,如果你把搞混了,可以采用上面新建一个分类直接在本地导入,就像这样 建立过

一千零二夜的博客 801

Spring与第三方MVC框架集成(Struts详解

 一、集成时需要考虑的问题:        Spring与第三方MVC框架集成时,需要考虑的问题是如何在第三方MVC框架中访问Spring IOC容器管理的Bean,或者说,如何获取Spring IOC容器的实例。我们还要保证在第三方MVC框架开始处理用户请求之前,Spring的IOC容器必须初始化完毕。二、自动加载Spring的IOC容器的两种方式1、利用第三方框

爱喝浓咖啡 2259

spring学习笔记(七):springstruts 整合

spring:负责对象的创建; struts:负责用 action 处理用户的请求; 那么,springstruts 整合的关键点就是: 让 struts 中 action 对象的创建,交给 spring 完成。 springstruts 整合步骤: 1、引入相关 jar 包: struts 相关 jar 包; spring-core:spring 核心 包; s...

秋忆夏伤的博客 264

Java:SpringStruts——两个Java web框架的比较

当我们说Java Web框架时,最流行的两个名字是SpringStruts。由于Java语言缺乏内部组织,SpringStruts都提供了一个Web开发框架,允许用户专注于开发可靠的Web应用程序。

yueqian_edu的博客 338

简述SSH

当一个持久化对象,脱离开Hibernate的缓存管理后,它就处于游离状态,游离对象和自由对象的最大区别在于,游离对象在数据库中可能还存在一条与它对应的记录,只是现在这个游离对象脱离了Hibernate的缓存管理,而自由对象不会在数据库中出现与它对应的数据记录。使用Struts作为系统的整体基础架构,负责MVC的分离,将页面从业务逻辑分离出来,使用页面更加灵活多变,不会影响业务逻辑,简化了基于MVC的web应用程序的开发,因而使得开发更加高效。与持久对象关联的 Session 被关闭后,对象就变为脱管对象。

556

含氢气氨气综合能源系统优化调度研究附Matlab代码.rar

含氢气氨气综合能源系统优化调度研究附Matlab代码.rar

上一篇: Spring事务配置的五种方式
下一篇: java上传文件到oracle数据库
生活真美好
博客等级 码龄26年 227粉丝 124原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值