DynamicMakeBean.java 这是一个servlet 用于动态产生网页

来源:互联网 发布:网络直播行业自律联盟 编辑:程序博客网 时间:2024/05/17 04:42

package com.huawei.common.action;

import java.io.IOException;
import java.io.PrintWriter;
import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

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

import com.huawei.common.util.T;

public class DynamicMakeBean extends HttpServlet {

    /**
     * Constructor of the object.
     */
    private Map<String, String> fieldmap = new HashMap<String, String>();
    private Map<String, List<String>> selectmap = new HashMap<String, List<String>>();
    String beanUrl ;
    String actionUrl;
    String fieldType;
    String attrVoname;
    String operType;
    public DynamicMakeBean() {
        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 {

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
       
        /*
        Enumeration e=request.getParameterNames();
        while(e.hasMoreElements()){
            String str=(String)e.nextElement();
            T.trace(str);
        }*/
       
       
        beanUrl = request.getParameter("beanUrl");
        actionUrl = request.getParameter("actionUrl");
        fieldType = request.getParameter("filedType");
        attrVoname = request.getParameter("attrVoName");
        operType=request.getParameter("operType");
        T.trace(beanUrl+operType);
        try {
            Class cl = Class.forName(beanUrl);
            Field[] fields = cl.getFields();
            for (int i = 0; i < fields.length; i++) {
                fieldmap.put(fields[i].getName(), fields[i].getType()
                        .getSimpleName());
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        // 处理 filedType 如下格式
        // EntityType.EntityDef:EntityType,EntityName;OperType.OperateDef:operType
        // 或者是EntityType:SQL语句的形式
        if (!fieldType.equalsIgnoreCase("null")) {
            String[] selects = fieldType.split(";");
            Map<String, String> sels = new HashMap<String, String>();// 先按;号分解出一个表有几个下拉框。
            for (int j = 0; j < selects.length; j++) {
                sels.put(selects[j].split(".")[0], selects[j].split(".")[1]);
            }
            for (Map.Entry<String, String> entry : sels.entrySet()) {
                String desField = entry.getKey();
                String srcEntityField = entry.getValue();
                List<String> srcFieldEntity = Arrays.asList(srcEntityField
                        .split(":")[1].split(","));
                srcFieldEntity.add(srcEntityField.split(":")[0]);
                selectmap.put(desField, srcFieldEntity);
            }
            T.trace(selectmap);
        }
       
        // 接下来可以有自己定义一个数据库连接池,然后在数据库中查处相应的表中的列。
        out.println("<!DOCTYPE HTML PUBLIC /"-//W3C//DTD HTML 4.01 Transitional//EN/">");
        out.println("<HTML>");
        out.println("  <HEAD><TITLE></TITLE></HEAD>");
        out.println("  <BODY>");
        out.println("<form action='"+actionUrl+"'>");
        for(Map.Entry<String, String> entry:fieldmap.entrySet()){
            out.println(entry.getKey()+": "+"<input type='text' value='' name='"+attrVoname+"."+entry.getKey()+"'>");
        }
        out.println("<form >");
        out.println("  </BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    }

    /**
     * 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 {

        doPost(request, response);
    }

    /**
     * Initialization of the servlet. <br>
     *
     * @throws ServletException
     *             if an error occurs
     */
    public void init() throws ServletException {
       
        // Put your code here
    }

}

原创粉丝点击