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
}
}
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
}
}
相关文章推荐
- JavaWeb --Servlet编写一个动态网页
- 为网页背景添加一个跟随鼠标的动态变幻线条
- 在网页中动态的生成一个图片
- 在网页中动态的生成一个gif图片
- 网页打字机效果,用于新闻标题.数据库动态.
- Firefox添加web浏览端口 "此地址访问受限 此地址使用了一个通常应该用于其他网页浏览的端口。由于安全原因,Firefox 取消了该请求。"
- 一个网页动态框的实现
- Web之间跳转和信息共享、Servlet的三大作用域对象、动态网页JSP
- 一个用于清除loadrunner产生log文件的批处理
- 在Web.Config文件中使用configSource,避免动态修改web.config导致asp.net重启(另添加一个Config文件用于管理用户数据)
- 一个用于.NET下动态添加Web引用的简单class
- 在c#中如何动态改变iframe的src值,动态指向一个网页
- 在网页中动态的生成一个gif图片
- 一个简易的网页爬虫,可用于下载在线API文档
- 在一个jsp页面使用include动态包含servlet
- Raphael一个用于在网页中绘制矢量图形的Javascript库
- 网页自动刷新,不产生嗒嗒声的一个解决方法
- 开源一个用于查看搬瓦工 VPS 流量使用情况的小网页(PHP)
- webview加载网页的视频,不动了,可能产生的一个原因
- PHP动态网页转换HTML的一个简单办法