spring mvc里, jsp中怎么获取bean-问答-阿里云开发者社区-阿里云

开发者社区> a123456678> 正文

spring mvc里, jsp中怎么获取bean

2016-03-17 14:48:20 2631 1

spring mvc里, jsp中怎么调用service,service是使用注解的方式注入的,用WebApplicationContext弄不出来

service里的代码

@Service("systemService")
public class SystemService extends BaseService
 {
//数据库操作
}
JSP代码

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page import="com.bada.service.system.SystemService,java.util.*,
com.bada.model.system.SystemParam,org.springframework.web.context.WebApplicationContext
,org.springframework.web.context.support.WebApplicationContextUtils
,org.springframework.context.ApplicationContext,com.bada.service.SpringUtils" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:set var="path" value="${pageContext.request.contextPath }" />
<%
ServletContext context = request.getSession().getServletContext();
ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(context);
WebApplicationContextUtils.getWebApplicationContext(application).getBean("systemService");
//SystemService sysservice=(SystemService)ctx.getBean("systemService"); 
SystemService sysservice=(SystemService)SpringUtils.getApplicationContext().getBean("systemService");
%>
web.xml里配置了监听器

listener> 
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
取消 提交回答
全部回答(1)
  • a123456678
    2019-07-17 19:05:23

    SprintUtils , 在你的jsp页面上面import 这个类。然后通过

    SpringUtils.getApplicationContext().getBean("dataSource")
    获取指定的bean

    package com.jsits.core;
     
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.BeansException;
    import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
    import org.springframework.beans.factory.config.BeanPostProcessor;
    import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
    import org.springframework.beans.factory.support.BeanDefinitionRegistry;
    import org.springframework.beans.factory.xml.ResourceEntityResolver;
    import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.ApplicationContextAware;
    import org.springframework.context.ConfigurableApplicationContext;
    import org.springframework.core.io.FileSystemResource;
    import org.springframework.stereotype.Component;
     
    @Component
    public class SpringUtils implements BeanFactoryPostProcessor,
            BeanPostProcessor, ApplicationContextAware {
     
        protected static Logger logger = LoggerFactory.getLogger(SpringUtils.class);
     
        private static ConfigurableApplicationContext applicationContext = null;
     
        private static ConfigurableListableBeanFactory beanFactory = null;
     
        @Override
        public void setApplicationContext(ApplicationContext applicationContext)
                throws BeansException {
            SpringUtils.applicationContext = (ConfigurableApplicationContext) applicationContext;
        }
     
        public static ConfigurableApplicationContext getApplicationContext() {
            return applicationContext;
        }
         
        public static ConfigurableListableBeanFactory getConfigurableListableBeanFactory() {
            return beanFactory;
        }
     
        @Override
        public void postProcessBeanFactory(
                ConfigurableListableBeanFactory beanFactory) throws BeansException {
            SpringUtils.beanFactory = beanFactory;
        }
     
        @Override
        public Object postProcessBeforeInitialization(Object bean, String beanName)
                throws BeansException {
            return bean;
        }
     
        @Override
        public Object postProcessAfterInitialization(Object bean, String beanName)
                throws BeansException {
            return bean;
        }
     
     
        public static void registerBean(String resource) {
            BeanDefinitionRegistry beanDefinitionRegistry = ((BeanDefinitionRegistry)getConfigurableListableBeanFactory());
     
            XmlBeanDefinitionReader definitionReader = new XmlBeanDefinitionReader(
                    beanDefinitionRegistry);
     
            definitionReader.setResourceLoader(getApplicationContext());
            definitionReader.setEntityResolver(new ResourceEntityResolver(
                    getApplicationContext()));
     
            definitionReader.setValidating(false);
            definitionReader.setValidationMode(XmlBeanDefinitionReader.VALIDATION_NONE);
             
            definitionReader.loadBeanDefinitions(new FileSystemResource(resource));
        }
     
        public static void unregisterBean(String beanName) {
            if (containsBean(beanName)) {
                BeanDefinitionRegistry beanDefinitionRegistry = ((BeanDefinitionRegistry)getConfigurableListableBeanFactory());
                beanDefinitionRegistry.removeBeanDefinition(beanName);
            }
        }
     
        public static boolean containsBean(String beanName) {
            return getConfigurableListableBeanFactory().containsBeanDefinition(beanName);
        }
    }
    0 0
相关问答

17

回答

【大咖问答】对话PostgreSQL 中国社区发起人之一,阿里云数据库高级专家 德哥

阿里ACE 彭飞 2019-07-10 09:36:10 964285浏览量 回答数 17

162

回答

惊喜翻倍:免费ECS+免费环境配置~!(ECS免费体验6个月活动3月31日结束)

豆妹 2014-10-29 17:52:21 222952浏览量 回答数 162

145

回答

【新手入门】云服务器linux使用手册

fanyue88888 2012-11-26 17:14:18 157054浏览量 回答数 145

8

回答

OceanBase 使用动画(持续更新)

mq4096 2019-02-20 17:16:36 333815浏览量 回答数 8

110

回答

OSS存储服务-客户端工具

newegg11 2012-05-17 15:37:18 292249浏览量 回答数 110

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 146757浏览量 回答数 22

18

回答

阿里云开放端口权限

xcxx 2016-07-20 15:03:33 643047浏览量 回答数 18

38

回答

安全组详解,新手必看教程

我的中国 2017-11-30 15:23:46 256845浏览量 回答数 38

21

回答

请教一下数据量有100万条左右要什么配置?

易网网络 2013-03-27 15:18:02 192317浏览量 回答数 21

249

回答

阿里云LNAMP(Linux + Nginx + Apache + MySQL + PHP)环境一键安装脚本

云代维 2014-02-14 15:26:06 302572浏览量 回答数 249
+关注
0
文章
14879
问答
推荐问答
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载