servlet中取到Spring配置

          准备用servlet来初始化流程树,主要要解决的问题是如何在servlet中调用web.xml文件中spring的配置。刚开始一直连ServletContext都得不到。下班前最后几分钟发现一直是在servlet的构造函数中调,应该在init()中调用,这下能得到了spring的配置。读到了applicationContext.xml中配置的bean。

   代码如下,注意要在init中初始化配置,init()比servlet的构造方法执行的早

/*
 *创建日期:Oct 24, 2006 2:52:27 PM
 *创建作者:李长有
 *作者blog:
http://blog.csdn.net/sd_lichangyou
 
*/

package  lcy.servlet;


import  java.io.IOException;
import  java.io.PrintWriter;
import  java.util.Iterator;
import  java.util.List;

import  javax.servlet.ServletContext;
import  javax.servlet.ServletException;
import  javax.servlet.http.HttpServlet;
import  javax.servlet.http.HttpServletRequest;
import  javax.servlet.http.HttpServletResponse;
import  javax.servlet.http.HttpSession;

import  lcy.common.IXmlKits;
import  lcy.common.XmlUtil;

import  org.jdom.Attribute;
import  org.jdom.Document;
import  org.jdom.Element;
import  org.jdom.output.Format;
import  org.jdom.output.XMLOutputter;
import  org.springframework.web.context.WebApplicationContext;
import  org.springframework.web.context.support.WebApplicationContextUtils;
import  com.data.dao.impl.WorkflowLcdyDaoImpl;
import  com.web.bo.WorkflowLcdy;
import  com.web.vo.WorkflowLcdyBean;
public   class  LoadFlowTree  extends  HttpServlet  {

    
/**
     * 
     
*/

    
private List allLc;
    
private static final long serialVersionUID = 1L;
    
private XmlUtil xmlfactory;
    
private ServletContext application;
    
private WebApplicationContext wac;
    
private WorkflowLcdyDaoImpl lcdydd;
    
/**
     * Constructor of the object.
     
*/


    
public LoadFlowTree() throws ServletException{        

    }


    
/**
     * Destruction of the servlet. <br>
     
*/

    
public void destroy() {
        
super.destroy(); // Just puts "destroy" string in log
        
// Put your code here
    }


    
public void doGet(HttpServletRequest request, HttpServletResponse response)
            
throws ServletException, IOException {

        
//System.out.println(allLc.size());        
        response.setContentType("text/xml; charset=GBK");
        lcdydd
=(WorkflowLcdyDaoImpl)wac.getBean("workflowLcdyDao");
        allLc
=lcdydd.getAllWorkflowLcdy();
        System.out.println(allLc.size());
        
        
        java.io.PrintWriter out 
= response.getWriter();
        xmlfactory 
= new XmlUtil(IXmlKits.FLOW_CFG_XML);
         
        Document doc 
= xmlfactory.getDoc();
        Element root 
= doc.getRootElement();
        Element flow
=null, flowurl, step=null, stepurl;
    
        String flowurlData 
= "flow.faces";
        String stepurlData 
= "step.faces";
        Iterator iLcTree 
= allLc.iterator();
        
if(!allLc.isEmpty()){
            
while (iLcTree.hasNext()) {
                WorkflowLcdy flowTree 
= (WorkflowLcdy) iLcTree.next();            
            
                
try {            
                    
                    flow 
= new Element("item");
                    Attribute flowText 
= new Attribute("text", flowTree.getMc());
                    Attribute flowOpen 
= new Attribute("open""1");
                    Attribute flowId 
= new Attribute("id", flowTree.getId());
                    flow.setAttribute(flowText);
                    flow.setAttribute(flowId);
                    flow.setAttribute(flowOpen);
                    
                    
// 流程的url属性
                    flowurl = new Element("userdata");
                    Attribute nameFlowurl 
= new Attribute("name""file");
                    flowurl.setAttribute(nameFlowurl);
                    flowurl.setText(flowurlData);
                    flow.addContent(flowurl);
                    
// 根据流程的步骤个数添加step
                    int steps = Integer.parseInt(flowTree.getBzgs());        
                   
                    
for (int j = 0; j < steps; j++{
                        
//myGUID=new RandomGUID();
                        
                        String stepMc 
= String.valueOf(j + 1);
                        step 
= new Element("item");
                        Attribute stepText 
= new Attribute("text", stepMc + " ");
                        Attribute stepOpen 
= new Attribute("open""1");
                        Attribute stepId 
= new Attribute("id", flowTree.getId()+stepMc);
                        step.setAttribute(stepText);
                        step.setAttribute(stepOpen);
                        step.setAttribute(stepId);
                        
// 环节的url属性
                        stepurl = new Element("userdata");
                        Attribute nameStepurl 
= new Attribute("name""file");
                        stepurl.setAttribute(nameStepurl);
                        stepurl.setText(stepurlData);
                        step.addContent(stepurl);
                        flow.addContent(step);
                    }
    
                    
                }
 catch (Exception e) {
                    System.err.println(e 
+ "error");

                }
 finally {
                
                }

                root.addContent(flow);
            }

        }

        
        System.out.println(doc.getContentSize());
        Format format 
= Format.getCompactFormat();
        format.setEncoding(
"GBK");
        format.setIndent(
"   ");
        XMLOutputter outp 
= new XMLOutputter();                
        outp.output(doc, out);
        System.out.println(
"success");
    }
    
    
    
public void testSess(HttpServletRequest req,HttpServletResponse res){
    
        HttpSession session 
= req.getSession(true);
        WorkflowLcdyBean myMap 
= (WorkflowLcdyBean) session.getAttribute("LCDY_BEAN");
        System.out.println(myMap.getClass().getName());
    }


    
public void doPost(HttpServletRequest request, HttpServletResponse response)
            
throws ServletException, IOException {

        response.setContentType(
"text/html");
        PrintWriter out 
= response.getWriter();
        out.println(
"<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">");
        out.println(
"<HTML>");
        out.println(
"  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
        out.println(
"  <BODY>");
        out.print(
"    This is ");
        out.print(
this.getClass());
        out.println(
", using the POST method");
        out.println(
"  </BODY>");
        out.println(
"</HTML>");
        out.flush();
        out.close();
    }


    
    
public void init() throws ServletException {
        application 
= getServletContext();
        wac 
= WebApplicationContextUtils.getWebApplicationContext(application);       
    }


}

web.xml配置文件如下

 

<? xml version="1.0" encoding="UTF-8" ?>
< web-app  xmlns ="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"  version ="2.4"
    xsi:schemaLocation
="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
    
<!-- config spring  -->
    
< description > Empty web.xml file for Web Application </ description >     
    
< servlet >
        
< description > lcy config flowTree </ description >
        
< display-name >
            This is the display name of my J2EE component
        
</ display-name >
        
< servlet-name > Dispatchermy </ servlet-name >
        
< servlet-class > org.springframework.web.servlet.DispatcherServlet </ servlet-class >
        
< init-param >
            
< param-name > contextConfigLocation </ param-name >
            
< param-value > /WEB-INF/applicationContext.xml </ param-value >
        
</ init-param >
        
< load-on-startup > 1 </ load-on-startup >
    
</ servlet >
    
< listener >  
        
< listener-class > org.springframework.web.context.ContextLoaderListener </ listener-class >  
    
</ listener >  
    
<!--  config pring log4j 
        <context-param>
        <param-name>webAppRootKey</param-name>
        <param-value>mvc.WebRoot</param-value>
        </context-param>
        <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/log4j.properties</param-value>
        </context-param>
        <context-param>
        <param-name>log4jRefreshInterval</param-name>
        <param-value>60000</param-value>
        </context-param>    
        <listener>
        <listener-class>
        org.springframework.web.util.Log4jConfigListener
        </listener-class>
        </listener> 
-->
    
<!--  config dwr  -->
    
< servlet >
        
< servlet-name > dwr </ servlet-name >
        
< servlet-class > uk.ltd.getahead.dwr.DWRServlet </ servlet-class >
        
< init-param >
            
< param-name > debug </ param-name >
            
< param-value > true </ param-value >
        
</ init-param >
    
</ servlet >
    
< servlet >
        
< servlet-name > Faces Servlet_tmp </ servlet-name >
        
< servlet-class > javax.faces.webapp.FacesServlet </ servlet-class >
        
< load-on-startup > 3 </ load-on-startup >
    
</ servlet >
    
< servlet-mapping >
        
< servlet-name > dwr </ servlet-name >
        
< url-pattern > /dwr/* </ url-pattern >
    
</ servlet-mapping >


    
<!--  config dwr and jsf  -->
    
< filter >
        
< filter-name > DwrFacesFilter </ filter-name >
        
< filter-class > uk.ltd.getahead.dwr.servlet.FacesExtensionFilter </ filter-class >
    
</ filter >
    
< filter-mapping >
        
< filter-name > DwrFacesFilter </ filter-name >
        
< url-pattern > /dwr/* </ url-pattern >
    
</ filter-mapping >
    
<!-- config jsf and jdf  -->
    
< listener >
        
< listener-class > org.apache.myfaces.webapp.StartupServletContextListener </ listener-class >
    
</ listener >
    
< context-param >
        
< param-name > javax.faces.CONFIG_FILES </ param-name >
        
< param-value > /WEB-INF/faces-config.xml </ param-value >
    
</ context-param >
    
< filter >
        
< filter-name > adfFaces </ filter-name >
        
< filter-class > oracle.adf.view.faces.webapp.AdfFacesFilter </ filter-class >
    
</ filter >
    
< filter-mapping >
        
< filter-name > adfFaces </ filter-name >
        
< servlet-name > Faces Servlet </ servlet-name >
    
</ filter-mapping >
    
< servlet >
        
< servlet-name > Faces Servlet </ servlet-name >
        
< servlet-class > javax.faces.webapp.FacesServlet </ servlet-class >
        
< load-on-startup > 4 </ load-on-startup >
    
</ servlet >
    
< servlet >
        
< servlet-name > resources </ servlet-name >
        
< servlet-class > oracle.adf.view.faces.webapp.ResourceServlet </ servlet-class >
    
</ servlet >
    
<!--  lcy load flowTree from db servlet  -->
    
< servlet >
        
< description > lcy config flowTree </ description >
        
< display-name > lcy Servlet </ display-name >
        
< servlet-name > LoadFlowTree </ servlet-name >
        
< servlet-class > lcy.servlet.LoadFlowTree </ servlet-class >
        
< load-on-startup > 5 </ load-on-startup >
    
</ servlet >
    
< servlet-mapping >
        
< servlet-name > Faces Servlet </ servlet-name >
        
< url-pattern > /faces/* </ url-pattern >
    
</ servlet-mapping >
    
< servlet-mapping >
        
< servlet-name > Faces Servlet </ servlet-name >
        
< url-pattern > *.faces </ url-pattern >
    
</ servlet-mapping >
    
< servlet-mapping >
        
< servlet-name > resources </ servlet-name >
        
< url-pattern > /adf/* </ url-pattern >
    
</ servlet-mapping >
    
< servlet-mapping >
        
< servlet-name > LoadFlowTree </ servlet-name >
        
< url-pattern > /servlet/LoadFlowTree </ url-pattern >
    
</ servlet-mapping >

    
< servlet-mapping >
        
< servlet-name > Dispatchermy </ servlet-name >
        
< url-pattern > /servlet/Dispatchermy </ url-pattern >
    
</ servlet-mapping >
    
< welcome-file-list >
        
< welcome-file > index.jsp </ welcome-file >
    
</ welcome-file-list >
    
< filter >
        
< filter-name > MyFacesExtensionsFilter </ filter-name >
        
< filter-class >
            org.apache.myfaces.component.html.util.ExtensionsFilter
        
</ filter-class >
        
< init-param >
            
< param-name > maxFileSize </ param-name >
            
< param-value > 20m </ param-value >
        
</ init-param >
    
</ filter >
    
< filter-mapping >
        
< filter-name > MyFacesExtensionsFilter </ filter-name >
        
< url-pattern > *.faces </ url-pattern >
    
</ filter-mapping >
      
< listener >
        
< listener-class > com.web.vo.AppContextListener </ listener-class >
  
</ listener >
</ web-app >

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值