浏览 5739 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (17) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-04-29
最后修改:2011-05-29
地址如下:
项目源码见附件!!
安装方法: 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等框架!!
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-04-29
不好意思楼主,我没看出你的意图是什么
这是小学毕业就应该会的东东。。夸张点了,我的意思是j2ee第一节课结束,就应该有的东西 你怎么还扯上那些框架?那是中学的,小学当然用不上了 |
|
返回顶楼 | |
发表时间:2011-05-04
dfbdfbdfb 写道 不好意思楼主,我没看出你的意图是什么
这是小学毕业就应该会的东东。。夸张点了,我的意思是j2ee第一节课结束,就应该有的东西 你怎么还扯上那些框架?那是中学的,小学当然用不上了 厉害 |
|
返回顶楼 | |
发表时间:2011-05-05
前台传递xml数据,后台直接通过解析xml执行方法? 想法不错!
|
|
返回顶楼 | |
发表时间:2011-05-06
busing 写道 前台传递xml数据,后台直接通过解析xml执行方法? 想法不错! 前台传的是json数据 |
|
返回顶楼 | |
发表时间:2011-05-14
不好意思楼主,我没看出你的意图是什么
这是小学毕业就应该会的东东。。夸张点了,我的意思是j2ee第一节课结束,就应该有的东西 你怎么还扯上那些框架?那是中学的,小学当然用不上了 个人觉得你应该去理解下框架的利弊和jdbc的好处,真正nb的人是懂得去优化jdbc的性能,纯粹的jdbc执行效率比框架高N倍,但是这对开发人员要求相当高.不要认为你会点框架就是强人,真正的高手是要有自己的思想而不是只会照搬别人的东西 |
|
返回顶楼 | |
发表时间:2011-06-01
鼓励一下,楼主继续加油做好
|
|
返回顶楼 | |
发表时间:2011-06-15
Auto-generated catch
xiaokang1582830 写道 不好意思楼主,我没看出你的意图是什么
这是小学毕业就应该会的东东。。夸张点了,我的意思是j2ee第一节课结束,就应该有的东西 你怎么还扯上那些框架?那是中学的,小学当然用不上了 个人觉得你应该去理解下框架的利弊和jdbc的好处,真正nb的人是懂得去优化jdbc的性能,纯粹的jdbc执行效率比框架高N倍,但是这对开发人员要求相当高.不要认为你会点框架就是强人,真正的高手是要有自己的思想而不是只会照搬别人的东西 同意!楼主的意思 起一个抛砖引玉的作用,给个思路,或简单的方法,而不是让你去用到项目里! |
|
返回顶楼 | |