`
czpae86
  • 浏览: 720693 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

keel_jdbc1.0 (jdk1.5+Extjs4.0) web项目_包含前后台源码

    博客分类:
  • JAVA
阅读更多

最近发布

 [Extjs4.0] keel_jdbc2.0后台管理模块 (包含前后台源码)

地址如下:

 http://czpae86.iteye.com/blog/1058754

 

项目源码见附件!! 

 

安装方法:

1,导入jar包.用到的jar包如下,请自己在网上下载,都是比较常见的.


 

2,还原数据库(在附件"keel数据库备份.rar"上)数据库使用的是MS SERVER 2005,

如果更改数据库请添加相应的jar包,和修改db.properties文件.

 

3,部署到tomcat(本人使用的是tomcat5.0)

 

4,启动tomcat,浏览器输入,如http://localhost:8080/keel_jdbc1.0/  (端口自己按实际情况更改)

 

5,帐号,密码都为(admin)


 

 

 

版本 V1.0

1:前台界面暂时只有登录,后续版本会增加复杂的页面!(用Extjs已经3年)

2:后台主要如下

 

 

一,通过一个servlet作为前后台交互入口,代码如下:

 

 

package keel.util;

import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.InvalidPropertiesFormatException;
import java.util.Map;
import java.util.Properties;

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

import org.apache.log4j.Logger;

/**
 * 前后台交互入口
 * @author 蔡治平
 * @since 2011-04-23
 */
public class KeelServlet extends HttpServlet {
	private Logger logger = Logger.getLogger(KeelServlet.class);
	private final String doGetMethod = "doGet";
	private final String doPostMethod = "doPost";
	private final String classConfigPath = "classConfig.xml";
	
	/**
	 * 通过get方法提交将会调用该方法
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		dataOut(request, response, doGetMethod);
	}
	
	/**
	 * 通过post方法提交将会调用该方法
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		//response.setCharacterEncoding("UTF-8");
		request.setCharacterEncoding("UTF-8");
		
		dataOut(request, response, doPostMethod);
	}
	
	/**
	 * 打包提交的参数
	 * @param request
	 * @param method
	 * @return Map
	 */
	private Map<String,Object> dataInToMap(HttpServletRequest request,String method){
		Enumeration names = request.getParameterNames();
		Map<String,Object> map = new HashMap<String, Object>();
		while(names.hasMoreElements()){
			String name = names.nextElement().toString();
			String value = request.getParameter(name);
			if(method.equals(doGetMethod)){
				try {
					byte [] bytes = value.getBytes("ISO-8859-1");
					map.put(name, new String(bytes,"UTF-8"));
				} catch (UnsupportedEncodingException e) {
					logger.error("打包提交参数出现异常,原因:"+e);
				}
			}else{
				map.put(name, value);
			}		
		}
		return map;
	}
	/**
	 * 获得类名
	 * @param name
	 * @return String
	 */
	private String getClassName(String name){
		Properties prop = new Properties();
		String clsName = "";
		try {
			prop.loadFromXML(Thread.currentThread().getContextClassLoader().getResourceAsStream(classConfigPath));//this.getClass().getClassLoader().getResourceAsStream(classConfigPath)
			clsName = prop.getProperty(name);
			if(clsName==null){
				logger.error(classConfigPath+"配置中没有定义key="+name);
			}else if(clsName.trim().equals("")){
				logger.error(classConfigPath+"配置中key="+name+"的值为空");
			}else{
				logger.info("从"+classConfigPath+"中成功获取类配置key="+name+"-->"+clsName);
			}
		} catch (InvalidPropertiesFormatException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return clsName;
	}
	
	/**
	 * 该方法打包前台提交参数,通过映射调用方法,然后返回结果到前台
	 * @param request
	 * @param response
	 * @param method
	 */
	@SuppressWarnings("unchecked")
	private void dataOut(HttpServletRequest request, HttpServletResponse response, String method){
		Map dataIn = this.dataInToMap(request,method);
		dataIn.put("session", request.getSession());
		String clsName = getClassName(request.getParameter("clsName"));
		String methodName = request.getParameter("methodName");
		Map dataOut = CallMethod.callMethod(clsName, methodName, dataIn);
		String k = (String) dataOut.get("dataOut");
		
		PrintWriter out;
		try {
			out = response.getWriter();
			out.print(k);
			out.flush();
			out.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
	
}

 

 

二,前台传入类别名(classConfig.xml中配置),方法名,通过反射执行类方法

 

 

package keel.util;


import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Map;

/**
 * 通过反射执行类方法
 * @author 蔡治平
 * @since 2011-04-23
 */
public class CallMethod {
	public static Map callMethod(String clsName,String method, Map<String,Object> dataIn)
    {

        Class cls = null;
        try
        {
            cls = Class.forName(clsName);
        }
        catch (ClassNotFoundException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        Class partypes[] = new Class[1];
        partypes[0] = Map.class;
        Method meth = null;
        try
        {
            meth = cls.getMethod(method, partypes);
        }
        catch (SecurityException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        catch (NoSuchMethodException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        Object returnValue = null;
        try
        {
        	returnValue = meth.invoke(cls.newInstance(), dataIn);
        }
        catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
        catch (IllegalArgumentException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        catch (IllegalAccessException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        catch (InvocationTargetException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        Map dataOut = (Map) returnValue;

        return dataOut;
    }
}
 

 

三,一个数据库连接池和一些数据库操作的封装,代码请看附件项目.

 

希望有你想要的东西! 请多给意见!

注意:该项目没有用到hibernate,spring,struts,dwr等框架!!

 

  • 大小: 17.3 KB
  • 大小: 17.2 KB
分享到:
评论
8 楼 chen4w 2012-02-04  
楼主的开放,分享精神值得称道!
我在使用ext过程中遇到和你类似的问题,但是用jsonRPC可以完成本文类似的功能,
jsonRPC和楼主的思路差不多,后台也是通过反射机制动态调用相应方法。
但在参数传递方面更强。jsonRPC在前台处理了结构化的提交数据编码,在后台可以完整还原。较之本文的仅仅以map作为参数,更加强大。
7 楼 shouzhang1_2 2011-06-15  
Auto-generated catch
xiaokang1582830 写道
不好意思楼主,我没看出你的意图是什么
这是小学毕业就应该会的东东。。夸张点了,我的意思是j2ee第一节课结束,就应该有的东西

你怎么还扯上那些框架?那是中学的,小学当然用不上了

个人觉得你应该去理解下框架的利弊和jdbc的好处,真正nb的人是懂得去优化jdbc的性能,纯粹的jdbc执行效率比框架高N倍,但是这对开发人员要求相当高.不要认为你会点框架就是强人,真正的高手是要有自己的思想而不是只会照搬别人的东西

同意!楼主的意思 起一个抛砖引玉的作用,给个思路,或简单的方法,而不是让你去用到项目里!
6 楼 azheng270 2011-06-01  
鼓励一下,楼主继续加油做好
5 楼 xiaokang1582830 2011-05-14  
不好意思楼主,我没看出你的意图是什么
这是小学毕业就应该会的东东。。夸张点了,我的意思是j2ee第一节课结束,就应该有的东西

你怎么还扯上那些框架?那是中学的,小学当然用不上了

个人觉得你应该去理解下框架的利弊和jdbc的好处,真正nb的人是懂得去优化jdbc的性能,纯粹的jdbc执行效率比框架高N倍,但是这对开发人员要求相当高.不要认为你会点框架就是强人,真正的高手是要有自己的思想而不是只会照搬别人的东西
4 楼 czpae86 2011-05-06  
busing 写道
前台传递xml数据,后台直接通过解析xml执行方法? 想法不错!


前台传的是json数据
3 楼 busing 2011-05-05  
前台传递xml数据,后台直接通过解析xml执行方法? 想法不错!
2 楼 czpae86 2011-05-04  
dfbdfbdfb 写道
不好意思楼主,我没看出你的意图是什么
这是小学毕业就应该会的东东。。夸张点了,我的意思是j2ee第一节课结束,就应该有的东西

你怎么还扯上那些框架?那是中学的,小学当然用不上了


厉害
1 楼 dfbdfbdfb 2011-04-29  
不好意思楼主,我没看出你的意图是什么
这是小学毕业就应该会的东东。。夸张点了,我的意思是j2ee第一节课结束,就应该有的东西

你怎么还扯上那些框架?那是中学的,小学当然用不上了

相关推荐

    keel_jdbc2.0.rar_Jsp/Servlet_Java_

    本系统——"keel_jdbc2.0",正是一个利用ExtJS4.0前端框架与JSP/Servlet/Java后端技术构建的无框架后台管理系统。它摒弃了传统框架的繁复,通过精巧的设计实现了高度的灵活性和可扩展性。 首先,ExtJS4.0是Sencha...

    EXT4.0项目源码

    EXT4.0项目源码是Linux操作系统中EXT4文件系统的一个重要版本的源代码,它在文件系统的性能、稳定性和可靠性方面进行了优化。EXT4,全称“Fourth Extended File System”,是EXT3的后续,旨在解决EXT3在处理大量小...

    ExtJs4 进销存 源代码

    ExtJs4是一款强大的JavaScript框架,用于构建富客户端的Web应用程序,尤其在企业级应用中广泛使用。这个进销存源代码示例展示了如何利用ExtJs4实现库存管理、销售管理和采购管理的核心功能,帮助开发者更好地理解和...

    keel-core源代码包

    "keel-core源代码包"是一个专门为Java开发者提供的开源项目,其主要目的是提供一系列实用的工具类和功能,以帮助开发者在日常开发中提高效率。这个源代码包可能包含了各种通用的工具方法,如字符串处理、日期时间...

    KEEL类别不平衡数据集.rar

    KEEL数据集包含各种行业的真实数据,这些数据涵盖了各种领域的特征和类别分布,如生物信息学、遥感图像分析、工程系统故障检测等。数据集的不平衡率变化较大,从约1%到几百%,这使得它成为评估和比较不同不平衡学习...

    keeloq.rar_Keeloq加密算法_encryption of keeloq_keeloq_keeloq 加密_keel

    "keeloq.rar_Keeloq加密算法_encryption of keeloq_keeloq_keeloq 加密_keel"的标题暗示了该压缩包可能包含了关于KEELOQ加密算法的详细资料,包括可能的改进版本和在单片机中的实现技术。 KEELOQ加密算法基于动态码...

    Keel-2018-04-09.zip

    《Keel软件在处理不平衡数据中的机器学习应用》 在数据科学领域,机器学习是一种强大的工具,用于从数据中挖掘规律并进行预测。然而,实际应用中常常遇到一个挑战——不平衡数据问题。不平衡数据指的是分类任务中...

    action-k8s-keel::ninja_light_skin_tone:与Github Action for CI集成,以及Keel.sh + K8s for CD simple

    Keel是用于自动化部署更新的工具。 龙骨无状态,坚固且轻巧。 从构思到生产自动化您的工作流程 +------------+ | Status Test| |------------+ +---------------+ +----+ | |PUSH | build-push image | CI +--...

    keel

    Keel 是一个用 Go 语言编写的自动化部署工具,它旨在简化 Kubernetes 集群中的应用程序部署和版本管理流程。Go 语言是 Google 推出的一种静态类型、编译型的编程语言,以其简洁的语法、高效的性能以及跨平台支持而受...

    伊赛斯龙脊keel鼠标驱动 v1.1 官方版

    伊赛斯龙脊keel鼠标驱动在硬件辅助方面,内置配重模块、储存记忆体、dpi变速档位、7自定义键等功能,这些功能都需要鼠标驱动的支持,让你能快速熟悉你的鼠标性能和各种操作方法,而给入手此款鼠标的玩家提供官方最新...

    KeelKit 1.0.3290.4789

    KeelKit 1.0.3290.4789 是一款高效且智能的实体数据映射(Entity Data Mapping,简称EDM)工具,专为IT专业人士设计,尤其适用于那些需要处理数据库与应用程序之间数据交互的开发者。ORM(Object-Relational Mapping...

    keel-telegram-bot:https的电报机器人

    keel-telegram-bot是的电报机器人。 特征 接收通知(通过Webhook) 列出批准 批准待审批 拒绝待审批 删除存档的批准 如何使用 手动安装 安装 使用pip安装keel-telegram-bot : pip3 install keel-telegram-...

    Keel Meta Framework-开源

    Keel 是一个服务器端 Java 元框架。 使用 COP,Keel 的容器使用同类最佳的开源工具提供其核心接口的可切换性。 Keel 遵循严格的 MVC,支持 Struts、Cocoon、Velocity、Axis/SOAP 等等!

    KeelKit安装和基本操作演示

    1. **依赖环境**:首先确保你的开发环境已经安装了Java运行环境(JRE)和Java开发工具包(JDK),KeelKit通常与Java 8或更高版本兼容。 2. **获取库文件**:你可以通过Maven或Gradle来添加KeelKit依赖。在Maven的`...

    ext后台经典实例

    它提供了一套完整的组件模型,包括表格、面板、菜单、按钮等,以及强大的数据绑定和布局管理功能,使得开发者能够轻松创建出美观且功能丰富的Web界面。"EXT后台经典实例"指的是使用EXT与后端服务器进行交互的典型...

    ext4的MVC小例子

    Ext.define('keel.controller.GoodsCtrl', { extend: 'Ext.app.Controller', stores: ['GoodsStore'],//声明该控制层要用到的store models: ['GoodsModel'],//声明该控制层要用到的model views: ['goods....

    django-quilla-web:Python Barranquilla网站存储库

    SSH:git clone :PyBAQ / django-keel-web.git HTTPS:git clone 为了在本地运行项目,需要以下依赖项: 的Python 3 图像魔术 然后根据您的操作系统按照安装指南进行操作 视窗 对于Windows,您可以从以下链接...

    KeelKit的数据库基本操作和表单的利用

    在开始使用KeelKit之前,你需要将其添加到项目依赖中,这通常可以通过管理依赖的工具(如npm或pip)来完成。配置数据库连接信息,包括数据库类型、用户名、密码、主机地址和端口,这些信息会被KeelKit用来建立与...

    keelkit是一个很好的ORM工具

    keelkit是一个优秀的ORM工具,其主要功能包括但不限于以下几点: 1. **数据模型映射**:keelkit允许开发者定义数据模型类,这些类与数据库表进行映射,通过简单的对象操作即可实现对数据库的增删查改。 2. **自动 ...

    滚动码发射芯片烧写程序

    1. **准备固件**:固件是包含控制芯片运行的指令的代码,通常为二进制格式。开发者需要根据项目需求编写源代码,然后编译成可烧写的固件。 2. **连接设备**:使用专用的编程器或者适配器将HC301芯片与电脑相连。这...

Global site tag (gtag.js) - Google Analytics