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

开发者社区> 爱吃鱼的程序员> 正文

spring mvc里, jsp中怎么获取bean?报错

2020-06-14 19:55:44 110 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>

JSP里报错说:org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'systemService' is defined

或者说,

使用注解的时候,jsp如何获得bean对象

取消 提交回答
全部回答(1)
  • 爱吃鱼的程序员
    2020-06-15 10:55:20

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

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

    packagecom.jsits.core;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springframework.beans.BeansException;importorg.springframework.beans.factory.config.BeanFactoryPostProcessor;importorg.springframework.beans.factory.config.BeanPostProcessor;importorg.springframework.beans.factory.config.ConfigurableListableBeanFactory;importorg.springframework.beans.factory.support.BeanDefinitionRegistry;importorg.springframework.beans.factory.xml.ResourceEntityResolver;importorg.springframework.beans.factory.xml.XmlBeanDefinitionReader;importorg.springframework.context.ApplicationContext;importorg.springframework.context.ApplicationContextAware;importorg.springframework.context.ConfigurableApplicationContext;importorg.springframework.core.io.FileSystemResource;importorg.springframework.stereotype.Component;@ComponentpublicclassSpringUtilsimplementsBeanFactoryPostProcessor,BeanPostProcessor,ApplicationContextAware{protectedstaticLoggerlogger=LoggerFactory.getLogger(SpringUtils.class);privatestaticConfigurableApplicationContextapplicationContext=null;privatestaticConfigurableListableBeanFactorybeanFactory=null;@OverridepublicvoidsetApplicationContext(ApplicationContextapplicationContext)throwsBeansException{SpringUtils.applicationContext=(ConfigurableApplicationContext)applicationContext;}publicstaticConfigurableApplicationContextgetApplicationContext(){returnapplicationContext;}publicstaticConfigurableListableBeanFactorygetConfigurableListableBeanFactory(){returnbeanFactory;}@OverridepublicvoidpostProcessBeanFactory(ConfigurableListableBeanFactorybeanFactory)throwsBeansException{SpringUtils.beanFactory=beanFactory;}@OverridepublicObjectpostProcessBeforeInitialization(Objectbean,StringbeanName)throwsBeansException{returnbean;}@OverridepublicObjectpostProcessAfterInitialization(Objectbean,StringbeanName)throwsBeansException{returnbean;}publicstaticvoidregisterBean(Stringresource){BeanDefinitionRegistrybeanDefinitionRegistry=((BeanDefinitionRegistry)getConfigurableListableBeanFactory());XmlBeanDefinitionReaderdefinitionReader=newXmlBeanDefinitionReader(beanDefinitionRegistry);definitionReader.setResourceLoader(getApplicationContext());definitionReader.setEntityResolver(newResourceEntityResolver(getApplicationContext()));definitionReader.setValidating(false);definitionReader.setValidationMode(XmlBeanDefinitionReader.VALIDATION_NONE);definitionReader.loadBeanDefinitions(newFileSystemResource(resource));}publicstaticvoidunregisterBean(StringbeanName){if(containsBean(beanName)){BeanDefinitionRegistrybeanDefinitionRegistry=((BeanDefinitionRegistry)getConfigurableListableBeanFactory());beanDefinitionRegistry.removeBeanDefinition(beanName);}}publicstaticbooleancontainsBean(StringbeanName){returngetConfigurableListableBeanFactory().containsBeanDefinition(beanName);}}



    回复 @ForEleven:加上了还是不行,我修改了问题,麻烦再帮我看看回复 @正厅级二奶:你的web.xml中有没有这个Listener<listener><listener-class>org.springframework.web.context.request.RequestContextListener</listener-class></listener>回复 @ForEleven:我后来@Service("sysservice")这么写了还是获取不到回复 @正厅级二奶:比如有一个Bean的类名是DemoService,使用注解他的默认名是demoService回复 @正厅级二奶:用了注解不是说没有名字了,比如你@Service注解里面可以定义这个bean的名字,如果不定义,默认是Bean的首字母小写@Autowired啊

    引用来自“CrazyHarry”的评论

    @Autowired啊 @正厅级二奶噢回复 @CrazyHarry:JSP里不能有注解的jsp里难道就不可以吗,同样的是在写Javacode啊Web.xml中加上这个Listener <listener><listener-class>org.springframework.web.context.request.RequestContextListener</listener-class></listener>

    <listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>



    或者下面这个,额,忘记具体是哪个了,你都加上吧

    回复 @ForEleven:改了下代码,解决了回复 @正厅级二奶:用我给你的那个SpringUtils试试看回复 @ForEleven:都加过了回复 @正厅级二奶:两个都加上呢?ContextLoaderListener我默认就有的WebApplicationContextUtils.getWebApplicationContext(application).getBean("studentService");还是没搞出来郁闷你的结构上正在走入歧途~~

    引用来自“平安北京”的评论

    WebApplicationContextUtils.getWebApplicationContext(application).getBean("studentService");

    引用来自“sxgkwei”的评论

    你的结构上正在走入歧途~~我只能呵呵的祝福你旅途愉快了。

    看到jsp里这么多坑爹的代码真是醉倒了

    你正在走向歧途~祝您旅途愉快~

    试试:ctx.getBean(SystemService.class);
    公共数据可以考虑用过滤器获取后放入request
    0 0
相关问答

17

回答

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

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

162

回答

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

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

145

回答

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

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

8

回答

OceanBase 使用动画(持续更新)

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

110

回答

OSS存储服务-客户端工具

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

18

回答

阿里云开放端口权限

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

38

回答

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

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

21

回答

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

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

249

回答

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

云代维 2014-02-14 15:26:06 302599浏览量 回答数 249

24

回答

【精品问答】python技术1000问(1)

问问小秘 2019-11-15 13:25:00 471393浏览量 回答数 24
+关注
爱吃鱼的程序员
https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
2
文章
21569
问答
推荐问答
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载