webwork2.1.5使用spring的ioc容器方法

【数据集6】全球人工不透水面积GAIA(清华数据) 全球人工不透水面GAIA简介及其应用 阅读详情

webwork2.1.5使用spring的ioc容器方法:

首先创建几个类:
Application.java,Container.java,SpringContainer.java,DefaultApplicationSetupListener.java,ComponentNotFoundException.java
其中Container.java为接口,SpringContainer.java实现Container.java接口
代码如下:

Application:
package util;

/**
 * @author Davin
 * @since 2007-12-23
 * @version $Revision: 1.1 $
 */
public class Application {
    private Container container;
    private static Application instance;
   
    private Application(){
       
    }
   
    public static Application getInstance() {
        if (instance == null)
            instance = new Application();
        return instance;
    }
   
    public Container getContainer() {
        return container;
    }
    public void setContainer(Container container) {
        this.container = container;
    }
}


Container:
package util;

/**
 * @author Davin
 * @since 2007-12-23
 * @version $Revision: 1.1 $
 */
public interface Container {
    public Object getComponent(Object key) throws ComponentNotFoundException; 

    public void reload();
   
    public void autowireComponent(Object bean);
   
    public void close();
}

 

SpringContainer:

package util;

import java.util.Locale;

import javax.servlet.ServletContext;

import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

/**
 * @author Davin
 * @since 2007-12-23
 * @version $Revision: 1.2 $
 */
public class SpringContainer implements Container {
    private static ApplicationContext applicationContext;

    public SpringContainer(ServletContext servletContext) {
        this.applicationContext = WebApplicationContextUtils.getWebApplicationContext(servletContext);
    }

    public SpringContainer(ApplicationContext applicationContext) {
        this.applicationContext = applicationContext;
    }
   

    /**
     * @param key
     *            component class type or component name
     * @return @throws
     *         ComponentNotFoundException
     */
    public Object getComponent(Object key) throws ComponentNotFoundException {
        if (applicationContext == null)
            throw new IllegalStateException("Spring Application context has not been set");
        if (key == null)
            throw new ComponentNotFoundException("The component key can not be null");
        if (key instanceof Class) {
            String names[] = applicationContext.getBeanNamesForType((Class) key);
            if (names == null)
                throw new ComponentNotFoundException("The container is unable to resolve single instance of " + ((Class) key).getName()
                        + ", none instances found");
            if (names.length == 0 || names.length > 1)
                throw new ComponentNotFoundException("The container is unable to resolve single instance of " + ((Class) key).getName()
                        + ", number of instances found was: " + names.length);
            key = names[0];
        }
        return applicationContext.getBean(key.toString());
    }
    public static Object getBean(String beanName) {
        return applicationContext.getBean(beanName);
    }

    public static String getMessage(String messageName) {
        String msg = applicationContext.getMessage(messageName, null, Locale.CHINA);
        return msg;
    }
    public void reload() {
        close();
        ((AbstractApplicationContext) applicationContext).refresh();
    }

    public void autowireComponent(Object bean) {
        ((AbstractApplicationContext) applicationContext).getBeanFactory().autowireBeanProperties(bean, AutowireCapableBeanFactory.AUTOWIRE_BY_NAME, false);
    }

    public void close() {
        ((AbstractApplicationContext) applicationContext).close();
    }

}

ComponentNotFoundException:

package util;
/**
 * @author Davin
 * @since 2007-12-23
 * @version $Revision: 1.1 $
 */
public class ComponentNotFoundException extends RuntimeException {

    public ComponentNotFoundException(String message) {
        super(message);
    }

    public ComponentNotFoundException(String message, Throwable cause) {
        super(message, cause);
    }
}


DefaultApplicationSetupListener:
package listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import util.Application;
import util.SpringContainer;


/**
 * DefaultApplicationSetupListener that sets up the environment so that
 * XWork and Webwork can load data and information from Spring. Relies on
 * Spring's {@link org.springframework.web.context.ContextLoaderListener}having
 * been called first.
 *
 * @author Davin
 * @since 2007-12-22
 * @version $Revision: 1.1 $
 */
public class DefaultApplicationSetupListener implements ServletContextListener {

    public void contextInitialized(ServletContextEvent event) {
        SpringContainer container = new SpringContainer(event.getServletContext());
        Application.getInstance().setContainer(container);
    }

    public void contextDestroyed(ServletContextEvent arg0) {
        // do nothing
    }

}

但把代码写完了以后,就需要修改配置文件了
首先是web.xml添加:
 <listener>
  <listener-class>
   listener.DefaultApplicationSetupListener
  </listener-class>
 </listener>
必须再spring的监听下面。
其次是修改webwork-default.xml
<interceptor name="component-autowire" class="interceptor.ComponentAutowireInterceptor"/>
并将该监听器加入到默认监听范围。


以上配置好了以后,就可以写一个简单的service类
package service.impl;

import java.util.List;

import service.LoginService;
import dao.AbstractService;
import domain.Admin;

public class LoginServiceImpl extends AbstractService implements LoginService{
 public Admin findAdmin(String userName) {
  List<Admin> list=this.getHibernateTemplate().find("from Admin a where a.userName='"+userName+"'");
  if(list.size()>0)
   return list.get(0);
  else
   return null;
 } 
}
在spring配置文件中:
<bean id="loginService" parent="baseTxProxy" singleton="false">
  <property name="target">
   <bean class="service.impl.LoginServiceImpl" autowire="byName"/>
  </property>
 </bean> 

写一个action类:
package action;

 

import service.LoginService;
import com.opensymphony.xwork.ActionSupport;

public class BaseAction extends ActionSupport {

 private LoginService loginService;

 public LoginService getLoginService() {
  return loginService;
 }

 public void setLoginService(LoginService loginService) {
  this.loginService = loginService;
 }

 public String execute() throws Exception {
  return SUCCESS;
 }
}

xwork.xml文件
<action name="index" class="action.BaseAction">
   <result name="success"  type="freemarker">/login/login.ftl</result>
</action>
这样就可以使用了

如何成为一名高级数字 IC 设计工程师(6-7)数字 IC 验证篇:DEBUG 技巧 不懂验证的设计不是好的设计;UVM 验证思维是指导缜密的芯片设计的导师;推荐书籍《芯片验证漫游指南》。 阅读详情

相关推荐

别再只盯着GPS了!手把手教你用Python仿真UWB定位,30厘米精度是怎么算出来的?

本文详细解析了UWB(超宽带)室内定位技术的原理与实现,通过Python代码演示如何从三边测量法到实现30厘米精度的定位。文章涵盖了UWB的核心数学模型、Python仿真环境搭建、误差分析及优化策略,为开发者提供了实用的技术指南和应用场景。

weixin_26873711的博客 252

container java,Container

方法详细信息getComponentCount publicintgetComponentCount()获取此面板中的组件数。注意:此方法应在AWT树锁下调用。countComponents @DeprecatedpublicintcountComponents()Deprecated.As of JDK version 1.1, replaced by getComponentCount...

weixin_34375356的博客 384

基于Opencv+Mediapipe的头部姿态检测

在学生课堂专注度检测项目中,可以通过学生头部姿态来确定学生注意力方向,从而判断其是否专注于课堂。

weixin_67879842的博客 2336

关于getContext()、getApplication()、getApplicationContext()、getActivity()的区别

关于getContext()、getApplication()、getApplicationContext()、getActivity()的区别: (1).getContext():获取到当前对象的上下文。 (2).getApplication():获得Application的对象 (3).getApplicationContext():获得应用程序的上下文。有且仅有一个相同的对象。生命周期

wpj1119245135的博客 6798

某讯天御滑块验证码逆向实战:从参数解析到环境对抗

本文详细解析了某讯天御滑块验证码的逆向工程实战技巧,从关键参数解析到浏览器环境模拟对抗。重点介绍了collect、eks等参数的逆向思路,以及如何通过puppeteer等工具补全环境检测,帮助开发者有效突破验证码防护。文章还提供了常见错误解决方案和性能优化建议,是验证码逆向领域的实用指南。

weixin_29325007的博客 439

手把手调试Android 14 ShellTransitions:用Log追踪ActiveTransition与Handler匹配过程

本文详细介绍了在Android 14中调试ShellTransitions机制的方法,重点通过Log追踪ActiveTransition与Handler的匹配过程。文章提供了关键日志点植入策略、Handler匹配机制解析及实战调试案例,帮助开发者解决窗口转场动画中的卡顿和错乱问题,提升系统动画性能。

weixin_42652674的博客 430

基础复习——应用Application——Application的生命周期——利用Application操作全局变量——重点...

Application的生命周期 Application是Android的一大组件,在App运行过程中有且仅有一个Application对象贯穿整个生命周期。 在AndroidManifest.xml里面,activity节点的上级正是application节点。如果给application节点指定android:name属性,则表示App将运行自定义名称的Application代码。 需要注意...

小白龙白龙马的博客 810

XR Interaction Toolkit实战:为HTC Vive Cosmos打造抓取、投掷与UI交互(Unity 2023教程)

本文详细介绍了如何使用Unity 2023和XR Interaction Toolkit为HTC Vive Cosmos开发抓取、投掷与UI交互系统。通过实战案例'VR投掷训练室',从基础配置到高级功能实现,涵盖物理抓取、精准投掷机制和VR UI交互设计,帮助开发者提升VR交互开发技能。

weixin_30562507的博客 256

使用WebContainer中的Spring 常用方法

Spring 的初始化 一、Spring在web.xml的配置 context-param>       param-name>contextConfigLocationparam-name>       param-value>           classpath*:spring/*.xml       param-value>context-param>

jakemanse的专栏 2496

云安全技术——搭建VPN

VPN(Virtual Private Network)是一种可以在公共网络上建立安全连接的技术。VPN是实现保密通信的基本手段,在windows系统上,可以直接进行VPN服务的搭建。1.VPN的工作原理:通过使用加密协议和认证机制,将本地计算机和远程服务器之间的通信加密和保护。2.VPN的分类:根据不同的方式和用途,VPN可以分为不同类型,例如远程访问VPN、站点到站点VPN等。3.VPN的优势:VPN可以带来许多好处,如提高数据安全性、隐藏真实IP地址、突破地理限制等。4.

qq_53142796的博客 3万+

双相机坐标系标定

工业双相机对位标定

sinat_33762356的博客 8317

[原创]WebWork IoC 特性使用

      这两天感觉WebWork的IoC特性还是很有用的,记录下来,避免忘记。   WebWork相对于Struts支持部分IoC特性,可以减少各组件间的耦合,配合接口编程可以给系统带来更大的灵活性。另一方面,也方便了单元测试。 第一种、使用WebWork默认提供的对JSP隐含对象的注入支持,不用进行太多的设置就可以在Action中直接使用request,session,application...

那一键的风情 215

萤石云cs刷机解绑固件

萤石CS-C2C-32WFR刷机包,萤石CS-C6TC刷机包,萤石CS-C6H刷机包,萤石猫眼产品等等。萤石云摄像头固件修改,绑定手机号解绑,更换序列号教程。

海康威视技术支持 2万+

WebWork2.2 Released!

 WebWork2.2新版本于昨天发布,更新了很多特性及功能支持,这个版本非常值得我们期待,大家去WebWork中文站点下载吧...OpenSymphony 和 WebWork 团队自豪的公告 WebWork 2.2 的发布 (download now). 这次发布对WebWork来说是最重要的发布,这么说的理由如下(full release notes): 对Java 5标注和泛型的全面支持 丰

技术含量 1234

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Webwork 2.2的Spring结合问题

1、引子: 其实是ajoo的这篇“Nuts和Spring 1.2.6 效率对比”和“IoC容器的prototype性能测试 ”,他们在Javaeye上详细讨论了Spring的prototype的缺陷。 Spring的prototype指的就是singleton="false"的bean,具体可以看Spring参考手册“3.2.5. To singleton or not to singleto...

xiaoshevip的专栏 224

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Plexus——Spring之外的IoC容器

Plexus是什么?它是一个IoC容器,由codehaus在管理的一个开源项目。和Spring框架不同,它并不是一个完整的,拥有各种组件的大型框架,仅仅是一个纯粹的IoC容器。本文讲解Plexus的初步使用方法。 Plexus和Maven的开发者是同一群人,可以想见Plexus和Maven的紧密关系了。由于在Maven刚刚诞生的时候,Spring还不 成熟,所以Maven的开发者决定使用自己维护

星月菩提的专栏 4084

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

1.5 WebWork和Struts 2对比

1.5  WebWork和Struts 2对比<br />从某种程度上来看,Struts 2是WebWork的升级,而不是Struts 1的升级,甚至在Apache的Struts 2的官方文档都提到:WebWork到Struts 2是一次平滑的过渡。实际上,Struts 2.0其实是WebWork 2.3而已,从WebWork 2.2迁移到Struts 2.0不会比从WebWork 2.1到2.2更麻烦。<br />在很多方面,Struts 2仅仅是改变了WebWork下的名称,因此,如果开发者具有W

qingmumu1985的专栏 526

浅谈spring--AOP与IOC / DI

Spring 是一个开源框架,主要优势是其分层架构,分层架构允许选择使用哪一个组件。 七大模块组成包含Spring Core,AOP,ORM,DAO,Web,Context,Web MVC。 Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 对象的方式。组件都可以单独存在,或者与其他一个或多个模块联合实现。  Spring Core Core模块是Spring的核...

九之的博客 9728

浅谈Struts2与Webwork的不同和相同点

浅谈Struts2与Webwork的不同和相同点 2011-06-28 09:14 honeymoose OSS社区 字号:T | T 本文介绍的两大开发框架,Struts 2和WebWork。希望能够给你带来帮助,一起来看。 AD:51CTO网+ 首届中国APP创新评选大赛>> Struts 2是Struts的下一代产品。是在

autumn20080101的专栏 4326

spring MVC fromeWork与webwork2 mvc比较

http://www.blogjava.net/xxxzheng/articles/7614.html 在当今的MVC framework里,似乎Webwork2逐渐成为主流, Webwork2+SpringFramework的组合变得越来越流行。这似乎意味着Spring自带的MVC framework远比Webwork2差,所以大家纷纷用Webwork2来代替。确实,Spring的MVC

白乔专栏 1033

webwork-2.1.7与Spring2.0整合

这里使用随webwork2.2发布的ActionAutowiringInterceptor这个拦截器来实现Webwork与Spring之间的整合。 [b]1.[/b]由于ActionAutowiringInterceptor这个拦截器是随webwork2.2发布的,所以在webwork2.1.7中并不包含这个类。幸好网上可以下到地址如下: [url]https://xwork-optional...

To Be the OnE 205

java webwork_WebWork深入浅出

本文发表于《开源大本营》作者:钱安川前言本篇文章并没有太多WebWork 的实战代码细节。本人非常希望能充当一名导游的角色,带领读者逐步游览WebWork的功能特性和原理。在第一章,我们将提出基于三层架构的Web层需要解决的10个问题,这是本文的纵轴。围绕着纵轴,我们按照横轴的顺序逐步描述讲解:WebWork简介、WebWork入门、WebWork原理、WebWork实战和技巧、展望WebWork...

weixin_35355756的博客 410

spring框架IOC--2

1. Spring框架讲解(必会内容) 1.1 Spring介绍 Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。 Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等桌面

空城的博客 312

Webwork 2.2的Action是否使用Spring的prototype­获取的性能对比

本文在060216进行了修改,因为发现了测试中的错误!注意5.5和7的内容。1、引子:其实是ajoo的这篇“Nuts和Spring 1.2.6 效率对比”和“IoC容器的prototype性能测试 ”,他们在Javaeye上详细讨论了Spring的prototype的缺陷。Spring的prototype指的就是singleton="false"的bean,具体可以看Spring参考手册“3.2....

Tin 257

Webwork 学习之路【01】Webwork与 Struct 的前世今生

Struts 1是全世界第一个发布的MVC框架,它由Craig McClanahan在2001年发布,该框架一经推出,就得到了世界上Java Web开发者的拥护,经过长达6年时间的锤炼,Struts 1框架更加成熟、稳定,性能也有了很好的保证。 到目前为止,Struts 1依然是世界上使用最广泛的MVC框架。目前,基于Web的MVC框架非...

weixin_33853794的博客 122

WebWork 2.2: Released and ready for Struts!

 OpenSymphony 和 WebWork 团队自豪的公告 WebWork 2.2 的发布 (download now). 这次发布对WebWork来说是最重要的发布,这么说的理由如下(full release notes): 对Java 5标注和泛型的全面支持 丰富的AJAX 支持,使用了 DWR 和 Dojo 新的 QuickStart 工具让开发比以前更容易 大量的文档,超过...

netfishx's matrix 268
上一篇: hibernate所使用的jar文件以及作用
下一篇: 如何用phototype框架实现一个简单的ajax验证
eft21
博客等级 码龄19年 37粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值