ajax、jsp、dom4j

3872 단어 jspAjaxxmldom4j
이 글 은 이전 편 을 따라 큰 변경 을 했 습 니 다. 주로 xml 로 dom4j 를 만 들 고 반사 지식 으로 더 많은 자바 빈 을 지원 합 니 다.
ok, 더 이상 쓸데없는 소리 하지 말고 코드 를 올 려 라.
 
  • 1. js 코드 차이 점:
  •  
    원본 코드: var stuList = stuDom. getElementsByTagName ("student");
     
    수정 후: var stuList = stuDom. getElementsByTagName ("childNode");
     
  •  2. servlet 코드:
  • public class InfoServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		//------------------      dom4j  --------------------------------------
    		response.setCharacterEncoding("utf-8");
    		response.setContentType("application/xml");
    		PrintWriter out = response.getWriter();
    		List<Student>list = new QueryStu().getStu();
    		WriteXmlUtil.write(out,list,"bean.Student");
    	}
    
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		doGet(request, response);
    	}
    
    }
    
     
  • 3. WriteXmlUtil 류, 이것 이 수정의 관건 입 니 다
  • package xmlUtil;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.dom4j.Document;
    import org.dom4j.DocumentHelper;
    import org.dom4j.Element;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.XMLWriter;
    
    public class WriteXmlUtil {
    
    	public static <T> void write(PrintWriter out, List<T> list, String beanName) {
    		// -----------  beanName get  --------------------------
    		Class<?> clazz = null;
    		try {
    			clazz = Class.forName(beanName);
    		} catch (ClassNotFoundException e1) {
    			e1.printStackTrace();
    		}
    		Method methods[] = clazz.getMethods();
    		List<Method> mGetList = new ArrayList<Method>();// javaBean    get  
    		for (int i = 0; i < methods.length; i++) {
    			int flag = methods[i].getName().indexOf("get");
    			if (flag != -1) {
    				mGetList.add(methods[i]);
    			}
    		}
    		mGetList.remove(mGetList.size() - 1);//   getClass()  
    		// ---------------------------------------------
    
    		Document document = DocumentHelper.createDocument();
    		Element root = DocumentHelper.createElement("root");
    		document.setRootElement(root);//      
    		for (int i = 0; i < list.size(); i++) {
    			Element ele = root.addElement("childNode");//    
    			for (int j = 0; j < mGetList.size(); j++) {
    				Object obj = list.get(i);
    				Element id = ele.addElement(mGetList.get(j).getName());
    				try {
    					Object value = mGetList.get(j).invoke(obj);//        value  
    					id.setText(value.toString());//    
    				} catch (IllegalArgumentException e) {
    					e.printStackTrace();
    				} catch (IllegalAccessException e) {
    					e.printStackTrace();
    				} catch (InvocationTargetException e) {
    					e.printStackTrace();
    				}
    			}
    		}
    		OutputFormat format = new OutputFormat();
    		format.setEncoding("UTF-8");
    		XMLWriter writer = new XMLWriter(out, format);
    		try {
    			writer.write(document);
    			writer.close();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    }
    
     ok, 지식 을 사용 하면 매우 깨 지지 만 이러한 유 니 버 설 성 이 높 습 니 다. 데이터 베이스 에서 list 데 이 터 를 얻 고 해당 하 는 자바 빈 류 를 얻 으 면 해당 하 는 xml 파일 을 생 성하 고 out 대상 에 게 클 라 이언 트
  • 에 피드백 할 수 있 습 니 다.

    좋은 웹페이지 즐겨찾기