您的位置:首页 > 编程语言 > Java开发

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

2009-10-18 19:25 267 查看
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

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: