免费预览已结束,剩余9页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
参加工作已经有1年了,同时,也整理出了一些快速开发网站的经验,第一次发技术贴,别见怪啊公司接的一些网站也都不大,刚来的时候,是采用ASP.NET开发的,后来用的不顺手(我个人比较倾向于java的),后来便换上java开发,可能有的人认为,用java开发这种中小型网站纯粹是找虐。我却不不认同这个。首先,我觉得用java写这种不大的网站,没必要上SSH这种框架(我自身不太喜欢在配置文件里面狂操作)。更喜欢在服务端采用Servlet,连接池采用的是:proxool。在客户端体验方面,都有很多ajax应用,而ajax采用json数据传输,可直接让URL指向服务端的Servlet,故决定在客户端采用纯HTML的形式,增删改查,一切都通过ajax形式提交到servet处理。考虑到页面多了,需要建立的servlet就会更多,在连续开发了2个网站之后,终于总结了一规律,让整个项目只有一个servlet,也只有一个Dao类。我的思想就是,网站开发,无非就是增删改查,只要服务端提供给我json格式的字符串,然后在客户端由JavaScript完成各种用户体验废话不多说了,马上进入重点-DBAcces.javaview plaincopy to clipboardprint?1. packagecom.util;2. 3. importjava.sql.CallableStatement;4. importjava.sql.Connection;5. importjava.sql.DriverManager;6. importjava.sql.PreparedStatement;7. importjava.sql.ResultSet;8. importjava.sql.ResultSetMetaData;9. importjava.sql.SQLException;10. importjava.util.ArrayList;11. importjava.util.HashMap;12. importjava.util.List;13. importjava.util.Map;14. 15. importcom.ipublic.IDao;16. 17. publicclassDBAccess18. /连接jdbc19. publicstaticConnectiongetConn()20. Connectionconn=null;21. try22. Class.forName(xool.ProxoolDriver);23. conn=DriverManager.getConnection(proxool.default);24. catch(Exceptione1)25. e1.printStackTrace();26. 27. returnconn;28. 29. 30. 31. /*32. *普通SQL查询33. *paramsql34. *paramobj35. *paramdao36. *return37. */38. publicstaticStringgetQueyData(Stringsql,Objectobj,IDaodao)39. Connectionconn=null;40. PreparedStatementps=null;41. ResultSetrs=null;42. StringjsonResult=;43. try44. conn=getConn();45. ps=conn.prepareStatement(sql);46. 47. if(obj!=null)48. 49. for(inti=1;i=obj.length;i+)50. ps.setObject(i,obji-1);51. 52. 53. 54. rs=ps.executeQuery();55. jsonResult=dao.execSelect(rs);56. 57. catch(SQLExceptione)58. e.printStackTrace();59. finally60. closeAll(ps,null,rs,conn);61. 62. returnjsonResult;63. 64. /*65. *返回Table数据66. *paramsql67. *paramobj68. *paramdao69. *return70. */71. publicstaticListMapgetQueyDataOnTable72. (Stringsql,Objectobj)73. ListMaplist=newArrayListMap();74. Connectionconn=null;75. PreparedStatementps=null;76. ResultSetrs=null;77. try78. conn=getConn();79. ps=conn.prepareStatement(sql);80. if(obj!=null)81. 82. for(inti=1;i=obj.length;i+)83. ps.setObject(i,obji-1);84. 85. 86. rs=ps.executeQuery();87. ResultSetMetaDatarsmd=rs.getMetaData();88. while(rs.next()89. Mapmp=newHashMap();90. for(inti=0;irsmd.getColumnCount();i+)91. mp.put(rsmd.getColumnLabel(i+1),92. rs.getString(rsmd.getColumnLabel(i+1);93. 94. list.add(mp);95. 96. 97. catch(SQLExceptione)98. e.printStackTrace();99. finally100. closeAll(ps,null,rs,conn);101. 102. returnlist;103. 104. 105. /*106. *将查询出来的数据以map集合的方式返回107. *paramsql108. *paramobj109. *paramdao110. *return111. */112. publicstaticMapgetQueyDataOnMap(Stringsql,Objectobj)113. Connectionconn=null;114. PreparedStatementps=null;115. ResultSetrs=null;116. Mapmp=newHashMap();117. try118. conn=getConn();119. ps=conn.prepareStatement(sql);120. if(obj!=null)121. 122. for(inti=1;i=obj.length;i+)123. ps.setObject(i,obji-1);124. 125. 126. rs=ps.executeQuery();127. ResultSetMetaDatarsmd=rs.getMetaData();128. if(rs.next()129. for(inti=0;irsmd.getColumnCount();i+)130. mp.put(rsmd.getColumnLabel(i+1),131. rs.getString(rsmd.getColumnLabel(i+1);132. 133. 134. 135. catch(SQLExceptione)136. e.printStackTrace();137. finally138. closeAll(ps,null,rs,conn);139. 140. returnmp;141. 142. 143. /*144. *查询,返回json格式145. *paramsql146. *paramparameters147. *return148. */149. publicstaticStringgetJsonString(Stringsql,Objectparameters)150. Stringrs=getQueyData(sql,parameters,newIDao()151. publicStringexecSelect(ResultSetrs)152. returngetResultToJson(rs);153. 154. );155. returnrs;156. 157. /*158. *更新语句通用方法159. *paramsql160. *paramobj161. *return162. */163. publicstaticintgetUpdateData(Stringsql,Objectobj)164. intresult=0;165. Connectionconn=getConn();166. PreparedStatementps=null;167. try168. ps=conn.prepareStatement(sql);169. if(obj!=null)170. for(inti=1;i=obj.length;i+)171. ps.setObject(i,obji-1);172. 173. 174. result=ps.executeUpdate();175. catch(SQLExceptione)176. e.printStackTrace();177. finally178. closeAll(ps,null,null,conn);179. 180. 181. returnresult;182. 183. publicstaticintgetOneResult(Stringsql,Objectobj)184. Stringresult=getQueyData(sql,obj,newIDao()185. publicStringexecSelect(ResultSetrs)throwsSQLException186. Stringresult=null;187. if(rs.next()188. result=rs.getString(0);189. 190. returnresult;191. 192. 193. );194. returnInteger.parseInt(result);195. 196. /关闭所有打开连接197. privatestaticvoidcloseAll(PreparedStatementp_stmt,198. CallableStatementc_stmt,ResultSetrset,Connectionconn)199. try200. if(p_stmt!=null)201. p_stmt.close();202. 203. if(c_stmt!=null)204. c_stmt.close();205. 206. if(rset!=null)207. rset.close();208. 209. if(!conn.isClosed()|conn!=null)210. conn.close();211. 212. catch(SQLExceptione)213. e.printStackTrace();214. 215. 216. 217. /转换为json数据218. privatestaticStringgetResultToJson(ResultSetrs)219. StringBufferjsonString=newStringBuffer();220. try221. if(rs!=null)222. jsonString.append();223. ResultSetMetaDatarsmd=rs.getMetaData();224. intcolumnsCount=rsmd.getColumnCount();225. StringColumnNames=newStringcolumnsCount;226. for(inti=0;icolumnsCount;i+)227. ColumnNamesi=rsmd.getColumnLabel(i+1);228. 229. while(rs.next()230. jsonString.append();231. for(inti=0;i1)246. jsonString.247. replace(jsonString.length()-1,jsonString.length(),);248. 249. jsonString.append();250. 251. catch(SQLExceptione)252. e.printStackTrace();253. 254. 255. returnjsonString.toString();256. 257. 258. -测试实体类Studen.javaview plaincopy to clipboardprint?1. publicclassStudent2. privateintid;3. privateStringstuName;4. privateintage;5. publicintgetId()6. returnthis.id;7. 8. publicvoidsetId(intid)9. this.id=id10. 11. /以下省略.12. -通用数据访问层类Dao.javaview plaincopy to clipboardprint?1. packagecom.util;2. 3. importjava.io.File;4. importjava.io.IOException;5. importjava.util.List;6. 7. importorg.jdom.Document;8. importorg.jdom.Element;9. importorg.jdom.JDOMException;10. importorg.jdom.input.SAXBuilder;11. 12. publicclassDao13. /*14. *自定义SQL增删改15. *paramnewInstans16. *paramc17. *paramid18. *return19. */20. publicintupdateToAll(Stringparm,Objectobj)21. try22. Stringsql=getSql(parm);23. returnDBAccess.getUpdateData(sql,obj);24. catch(IllegalArgumentExceptione)25. e.printStackTrace();26. catch(SecurityExceptione)27. e.printStackTrace();28. 29. return-1;30. 31. /*32. *查询33. *return34. */35. publicStringget(Stringsearch,Objectobj)36. Stringsql=getSql(search);/获取SQL37. returnDBAccess.getJsonString(sql,obj);38. 39. /*40. *获取SQL41. */42. publicStringgetSql(Stringsearch)43. Stringsql=;44. Documentdoc=null;45. try46. SAXBuilderbuilder=newSAXBuilder();47. doc=builder.build(./webapps/项目名/WEB-INF/dao.xml);48. 49. Elementelt=doc.getRootElement();50. Listlist=elt.getChildren();51. for(Elemente:list)52. if(e.getAttributeValue(name).equals(search)53. sql=e.getAttributeValue(sql);54. 55. 56. catch(JDOMExceptione)57. e.printStackTrace();58. catch(IOExceptione)59. e.printStackTrace();60. 61. returnsql;62. 63. publicStringgetParm(Stringsearch)64. Stringparm=;65. Documentdoc=null;66. try67. SAXBuilderbuilder=newSAXBuilder();68. doc=builder.build(./webapps/项目名/WEB-INF/dao.xml);69. Elementelt=doc.getRootElement();70. Listlist=elt.getChildren();71. for(Elemente:list)72. if(e.getAttributeValue(name).equals(search)73. parm=e.getAttributeValue(parm);74. 75. 76. catch(JDOMExceptione)77. e.printStackTrace();78. catch(IOExceptione)79. e.printStackTrace();80. 81. if(parm.indexOf(,)=0)82. returnparm.split(,);83. else84. returnnewStringparm;85. 86. 87. -Servlet通用类view plaincopy to clipboardprint?1. packagecom.manager.servlet;2. 3. importjava.io.IOException;4. importjava.io.PrintWriter;5. importjava.util.ArrayList;6. importjava.util.List;7. 8. importjavax.servlet.ServletException;9. importjavax.servlet.http.HttpServletRequest;10. importjavax.servlet.http.HttpServletResponse;11. 12. importcom.util.Dao;13. importcom.util.ServletMain;14. 15. publicclassServletManagerextendsHttpServlet16. Daodao=newDao();17. publicvoidservice(HttpServletRequestrequest,18. HttpServletResponseresponse)19. throwsServletException,IOException20. response.setContentType(text/html;charset=UTF-8);21. Stringopt=request.getParameter(opt);22. PrintWriterout=response.getWriter();23. if(opt!=null)24. switch(Integer.parseInt(opt)25. case1:26. update(request,response,out);27. break;28. case2:29. select(request,response,out);30. break;31. 32. 33. 34. /*35. *增删改通用方法36. *paramrequest37. *paramresponse38. *paramout39. *throwsServletException40. *throwsIOException41. */42. publicvoidupdate(HttpServletRequestrequest,43. HttpServletResponseresponse,PrintWriterout)44. throwsServletException,IOException45. Stringparm=request.getParameter(parameter);46. intresult=0;47. try48. if(parm!=null)/如果参数不为空,则使用自定义SQL形式49. Objectobj=getObjs(request,parm);50. result=dao.updateToAll(parm,obj);51. 52. out.println(result);53. catch(ClassNotFoundExceptione)54. e.printStackTrace();55. 56. 57. /*58. *查询通用方法59. *paramrequest60. *paramresponse61. *paramout62. *throwsServletException63. *throwsIOException64. */65. publicvoidselect(HttpServletRequestrequest,66. HttpServletResponseresponse,PrintWriterout)67. throwsServletException,IOException68. Stringparm=request.getParameter(parameter);69. if(parm!=null)70. Objectobj=getObjs(request,parm);71. out.println(dao.get(parm,obj);72. 73. 74. 75. /*76. *获取参数列表77. *paramrequest78. *paramparm79. *return80. */81. privateObjectgetObjs(HttpServletRequestrequest,Stringparm)82. Listlist=newAr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年内蒙古化工职业学院单招职业适应性考试必刷测试卷及答案解析(名师系列)
- 2026年浙江邮电职业技术学院单招职业技能考试必刷测试卷及答案解析(夺冠系列)
- 2026年云南省临沧地区单招职业适应性测试必刷测试卷附答案解析
- 2026年宣城职业技术学院单招职业适应性考试题库及答案解析(夺冠系列)
- 2026年扬州市职业大学单招职业适应性测试题库及答案解析(名师系列)
- 房屋撤出协议书模板
- 房屋框架保护协议书
- 房屋竣工验收协议书
- 房屋翻修承包协议书
- 房屋认可协议书范本
- 2025标准合同格式范本:个人住宅外墙装修合同样本
- 项目经理安全管理培训课件
- 2025年社区网格员招录考试真题库完整参考答案
- 土料填筑单元工程施工质量验收表填写示例(表1.10 )
- 电能质量测试施工方案
- 大学生国家安全教育(复旦大学版)学习通网课章节测试答案
- 冀教版七年级上学期道德与法治半期测试卷
- 人教版(2024)八年级上册数学全册教案
- 2025至2030年中国功能糖行业市场调研及未来发展趋势预测报告
- 医疗病例信息记录模板病历摘要生成版
- 2025年北京住院医师规范化培训考试(外科)历年参考题库含答案详解(5卷)
评论
0/150
提交评论