使用应用程序上下文感知将数据从servlet传递到spring

时间:2011-12-12 12:29:04

标签: java spring servlets

我正在尝试在我的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能够插入到我的数据库中。

由于

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

ApplicationContextAware是让bean知道他们的应用程序上下文。请阅读here了解详情。您可以使用WebApplicationContextUtils WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContext sc),获取应用程序上下文,使用getBean方法并调用Dao。

答案 2 :(得分:-1)

在你的servlet中

@Autowired
private ApplicationContext ctx;

@Autowired
private MyDao myDao;

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