一、(代理servlet)
public class ServletToBeanProxy extends GenericServlet {
private static final long serialVersionUID = 1L;
private String targetBean;
private Servlet proxy;
public void init() throws ServletException {
//System.out.println("proxy init");
this.targetBean = getInitParameter("targetBean");
getServletBean();
proxy.init(getServletConfig());
}
@Override
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException {
proxy.service(req, res);
}
private void getServletBean() {
WebApplicationContext wac = WebApplicationContextUtils
.getRequiredWebApplicationContext(getServletContext());
this.proxy = (Servlet) wac.getBean(targetBean);
}
}
二、(处理的servlet)
public class DealInfoFromClient extends GenericServlet implements Servlet {
private static final long serialVersionUID = 1L;
private GrabHtmlInfoDao grabHtmlInfoDao;//需要spring管理注入
private GrabHtmlInfoDto info=new GrabHtmlInfoDto();
public DealInfoFromClient() {
super();
}
public void init() throws ServletException {
super.init();
}
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException {
//book.showInfo();
System.out.println("dealing......");
}
public GrabHtmlInfoDao getGrabHtmlInfoDao() {
return grabHtmlInfoDao;
}
public void setGrabHtmlInfoDao(GrabHtmlInfoDao grabHtmlInfoDao) {
this.grabHtmlInfoDao = grabHtmlInfoDao;
}
public GrabHtmlInfoDto getInfo() {
return info;
}
public void setInfo(GrabHtmlInfoDto info) {
this.info = info;
}
}
三、 web.xml配置
<servlet>
<servlet-name>proxyBean</servlet-name>
<servlet-class>com.grain.util.ServletToBeanProxy</servlet-class>
<init-param>
<param-name>targetBean</param-name>
<param-value>servletBean</param-value><!-- 注意这个值需要和spring的配置文件中的id对应 -->
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>proxyBean</servlet-name>
<url-pattern>/proxyBean</url-pattern>
</servlet-mapping>
四、spring的配置文件
<bean id="servletBean" class="com.grain.util.DealInfoFromClient"><!-- 注意此处的id -->
<property name="grabHtmlInfoDao" ref="grabHtmlInfoDao"></property><!-- 已注入的dao -->
</bean>
访问:
http://127.0.0.1:8080/grain/proxyBean