我正在尝试在我的servlet中实现applicationContextAware。我有来自客户端的数据来到我的servlet。从我的servlet我需要将它传递给具有getter和setter的bean。我有我的DAO,我有MYSQL操作。

我的applicationContext.xml有

<bean id="dataSource" destroy-method="close"
    class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url"
        value="jdbc:mysql://localhost:3306/bazaar_admin_portal" />
    <property name="username" value="usrnm" />
    <property name="password" value="pwd" />
</bean>

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <constructor-arg index="0">
        <ref bean="dataSource" />
    </constructor-arg>
</bean>

<bean
    class="org.dao.impl.TestDAOimpl"
    id="TestDAO">
    <property name="jdbcTemplate" ref="jdbcTemplate" />
</bean>

我的web.xml包含

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<servlet>
    <description></description>
    <display-name>TestServlet</display-name>
    <servlet-name>TestServlet</servlet-name>
    <servlet-class>com.controllers.TestServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>TestServlet</servlet-name>
    <url-pattern>/Test</url-pattern>
</servlet-mapping>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

并在我的TestServlet下的doPost方法

     private static ApplicationContext applicationContext = null;

public void setApplicationContext(ApplicationContext ctx)
        throws BeansException {
    applicationContext = ctx;

我有getter和setter类Test.Also接口TestDAO和TestDAOimpl类实现了接口。

我想知道如何将数据从我的servlet传递到spring端...即设置数据,这将使TestDAOimpl插入我的数据库。

谢谢

===============>>#1 票数:2 已采纳

您确定不想使用Spring WebMVC吗? 它会自动处理您的问题。

然后在你的POST方法中尝试这个(它很慢,懒得启动):

applicationContext = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());

===============>>#2 票数:1

ApplicationContextAware用于让bean知道它们的应用程序上下文。 请阅读此处了解更多信息。 您可以这样使用WebApplicationContextUtils WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContext sc),获取应用程序上下文,使用getBean方法并调用Dao。

===============>>#3 票数:-1

在你的servlet中

@Autowired
private ApplicationContext ctx;

@Autowired
private MyDao myDao;

@Override
public void init() throws ServletException {
        WebApplicationContextUtils.getWebApplicationContext(super.getServletContext()).getAutowireCapableBeanFactory().autowireBean(this);
}

  ask by enthusiastic translate from so

未解决问题?本站智能推荐:

1回复

Spring:为什么“root”应用程序上下文和“servlet”应用程序上下文是由不同的各方创建的?

据我所知,基于Spring的Web应用程序初始化如下: 第1步 : Servlet container (eg Tomcat)定位ServletContainerInitializer的实现,它是SpringServletContainerInitializer 。 第2步 : Sp
1回复

嵌入式Tomcat 7将Spring应用程序上下文传递给Servlet

我想向我的Java应用程序添加Web界面,以便可以使用HTTP来操纵它的状态。 我为启动嵌入式Tomcat的某些类添加了Spring bean。 此类当然可以访问创建它的上下文。 但是我想以某种方式将此上下文存储在Tomcat类( org.apache.catalina.startup
1回复

Servlet上下文和Spring应用程序上下文之间的本质区别

我正在阅读spring框架文档,现在我正处于应用程序范围概念中 。 文档中关于这个概念的内容是: 这有点类似于Spring单例bean,但在两个重要方面有所不同:它是每个ServletContext的单例,而不是每个Spring ApplicationContext 对我来说
2回复

在加载应用程序上下文之前启动Servlet

我有一个servlet,它捆绑在我的应用程序中。 我希望能够配置Tomcat或Spring以在最终初始化应用程序上下文之前在boostrap上加载此servlet。 我这样做是因为-我正在使用servlet在触发实际上下文之前执行一些初始环境检查和文件加载。 有人知道这样做的好处吗
1回复

Spring的应用程序上下文可防止其他应用程序在同一servlet容器中启动

我有两个Web应用程序在同一个Servlet容器( Tomcat )A和B中运行。这两个应用程序使用Spring Remoting相互连接。 在启动时,B需要调用A来自动打开连接,这基本上是一个非常简单的身份验证调用。 但是,由于( 在我的情况下 )B在A之前加载,因此B的应用程序上下文
1回复

Spring MVC Web应用程序中的根上下文和分派器servlet上下文到底如何?

我正在学习Spring MVC ,所以我有一些疑问 因此,我有一个配置类,用于配置处理用户请求的DispatcherServlet : 我很清楚DispatcherServlet的工作方式。 我的怀疑与上下文概念有关。 1)确切地表示上下文 ? 我认为这就像一组具有特定用
1回复

如何为具有不同映射的一个servlet配置不同的Web应用程序上下文

首先,我有一个通用的http servlet,我想根据URL映射在特定的上下文中运行(因此我切换到HttpRequestHandler实现)。 请考虑简化的示例。 在web.xml中,我有以下配置: 我的servlet是HttpRequestHandler的实现,如下所示:
2回复

Spring引导在servlet上下文之外获取应用程序基本URL

设置如下 - 我有一个定时任务,将发送验证电子邮件,以便用户: 在那些电子邮件中,我需要包含一个返回同一webapp的链接。 但是我找不到任何关于如何在没有servlet上下文的情况下获取应用程序基本URL的引用。 奖金 如果我可以在这里设置百万富翁模板解析器来处理这些链接
1回复

Spring网络应用。 一个战争多应用程序上下文

我搜索了一段时间但无法找到解决问题的正确方法。 我有一个WAR Web应用程序,我想在其中运行2个Spring应用程序,一个用于Web部件,一个运行计划任务。 两个应用程序共享很多bean,所以我希望这两个应用程序共享一些bean实例。 我想把我的背景分开: -shared-的
4回复

有没有办法获取在JVM中运行的所有Spring应用程序上下文的列表?

我希望能够从我的servlet容器中运行的Web应用程序获取所有Spring应用程序上下文的列表。 这样一来,我可以重新初始化上下文,而无需重新启动或重新加载我的容器或Web应用程序。 这可能吗? 如果是这样,怎么办? 无论如何,是否有通过Servlet API获取运行在servle