解决方法有两种(推荐使用第二种)
方法一:
直接重写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