解决方法有两种(推荐使用第二种)
方法一:
直接重写Servlet的Init()方法,代码如下:
public void init(ServletConfig servletConfig) throws ServletException {
ServletContext servletContext = servletConfig.getServletContext();
WebApplicationContext webApplicationContext = WebApplicationContextUtils
.getWebApplicationContext(servletContext);
AutowireCapableBeanFactory autowireCapableBeanFactory = webApplicationContext
.getAutowireCapableBeanFactory();
autowireCapableBeanFactory.configureBean(this, BEAN_NAME);
}package com.telek.pba.base.util;
import java.io.IOException;
import javax.servlet.GenericServlet;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
/**
* 以下是类似org.springframework.web.struts.DelegatingRequestProcessor的一个委托
* 用于通过配置的方法,在Servlet中注入Service
* @author liyinwei
*
*/
public class DelegatingServletProxy extends GenericServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
private String targetBean;
private Servlet proxy;
@Override
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException {
proxy.service(req, res);
}
/**
* 初始化
*/
public void init() throws ServletException {
this.targetBean = getServletName();
getServletBean();
proxy.init(getServletConfig());
}
/**
* 获取Bean
*/
private void getServletBean() {
WebApplicationContext wac = WebApplicationContextUtils
.getRequiredWebApplicationContext(getServletContext());
this.proxy = (Servlet) wac.getBean(targetBean);
}
}<servlet> <description>活动发起模块活动查询分页Servlet</description> <display-name>launchActivityQueryServlet</display> <servlet-name>LaunchActivityQueryServlet</servlet-name> <servlet-class>com.telek.pba.launch.servlet.LaunchActivityQueryServlet</servlet-class> <servlet> <servlet-mapping> <servlet-name>LaunchActivityQueryServlet</servlet-name> <url-pattern>/servlet/launch/LaunchActivityQueryServlet</url-pattern> </servlet-mapping> </servlet>
<servlet> <description>活动发起模块活动查询分页Servlet</description> <display-name>launchActivityQueryServlet</display> <servlet-name>launchActivityQueryServlet</servlet-name> <servlet-class>com.telek.pba.base.util.DelegatingServletProxy</servlet-class> <servlet> <servlet-mapping> <servlet-name>launchActivityQueryServlet</servlet-name> <url-pattern>/servlet/launch/LaunchActivityQueryServlet</url-pattern> </servlet-mapping> </servlet>
package com.telek.pba.launch.servlet;
import java.io.IOException;
import javax.annotation.Resource;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import com.telek.pba.base.model.PbaUserInfo;
import com.telek.pba.launch.dao.IPbaActivityInfoCurrentDAO;
@Component
public class LaunchActivityQueryServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
//注入IPbaActivityInfoCurrentDAO
@Resource
private IPbaActivityInfoCurrentDAO pbaActivityInfoCurrentDAO;
/**
* Constructor of the object.
*/
public LaunchActivityQueryServlet() {
super();
}
/**
* Destruction of the servlet. <br />
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
* The doGet method of the servlet. <br />
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//sth to do
}
/**
* The doPost method of the servlet. <br />
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//sth to do
}
/**
* Initialization of the servlet. <br />
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}
}<context:component -scan base-package="com.telek.pba.*.dao.impl, com.telek.pba.*.service.impl, com.telek.pba.*.servlet"></context:component>
原文地址:http://blog.csdn.net/l1028386804/article/details/45696707