标签:等于 阅读 查询 java except inter 提取 get 字符串
没有学习MVC之前我只写了一个Servlet类(Note_List.java),分层之后,我将这个类分成了5个类(NoteDao.java,,NoteDaoImpl.java,,NoteService.java,,NoteServiceImpl.java,,Note_List.java),MVC的基础知识我就不在此赘述,这里只是写一个MVC分层思想的示例,便于了解这种编程思想。
分层之前的Note_List.java
1 public class Note_List extends HttpServlet { 2 3 @Override 4 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 5 doPost(req,resp); 6 } 7 8 @Override 9 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 10 req.setCharacterEncoding("UTF-8"); 11 resp.setCharacterEncoding("UTF-8"); 12 DBHelp db = new DBHelp(); 13 String sql = "select * from note"; 14 List<Map<String, String>> lmap = new ArrayList<Map<String, String>>(); 15 lmap = db.query(sql, null); 16 List<Note> list = new ArrayList<Note>(); 17 if (lmap.size() > 0) { 18 for (Map<String, String> map : lmap) { 19 Note note = new Note(); 20 note.setTitle(map.get("title")); 21 note.setTags(map.get("tags")); 22 note.setAuthor(map.get("author")); 23 note.setContent(map.get("content")); 24 note.setCreatetime(map.get("createtime")); 25 list.add(note); 26 } 27 28 List<String> imgSrc = new ArrayList<String>();// 提取每个文档内容中的图片地址集合 29 List<String> imgSrcFirst = new ArrayList<String>();// 提取每个文档内容中的第一个图片地址 30 List<String> contentTxt = new ArrayList<String>();// 提取每个文档内容中的纯文本内容的前101字节 31 32 for (int i = 0; i < lmap.size(); i++) { 33 String ct = lmap.get(i).get("content"); 34 35 if (ct == null || ct.equals("")) {// 判断文档内容是否为空或者为空串 36 contentTxt.add(null); 37 imgSrcFirst.add(null); 38 } else { 39 String ctTxt = Get_ContentTxt_FormHTML.getContentTxt(ct); 40 if (ctTxt == null) { 41 contentTxt.add(null); 42 } else { 43 int l = ctTxt.getBytes().length; 44 if (l <= 100) {// 字符串不等于NULL,字节数肯定大于0 45 contentTxt.add(ctTxt); 46 } else { 47 contentTxt.add(ctTxt.substring(0, 100) + "..."); 48 } 49 contentTxt.add(null); 50 } 51 52 imgSrc = Get_Image_FormHTML.getImageSrc(ct); 53 if (imgSrc.size() == 0) { 54 imgSrcFirst.add(null); 55 } else { 56 imgSrcFirst.add(imgSrc.get(0)); 57 } 58 } 59 } 60 61 HttpSession sesImg = req.getSession(); 62 sesImg.setAttribute("img", imgSrcFirst); 63 64 HttpSession sesConTxt = req.getSession(); 65 sesConTxt.setAttribute("txt", contentTxt); 66 67 req.setAttribute("list", list); 68 req.getRequestDispatcher("note_list_user.jsp").forward(req, resp); 69 } 70 } 71 }
可见,没有分层的代码杂乱无章,复杂难懂,老师说这样的代码在企业里,是会被做前台的同事砍的。所以我乖乖地把自己的项目分了层:
分层后的5个类:(按顺序阅读)
第1个类:NoteDao.java 接口:
1 public interface NoteDao { 2 public List<NoteBean> queryAll();// 查询所有文档所有字段内容 3 public List<String>contentAll();//提取所有文档中content字段内容 4 public List<List<String>>contentImg();// 提取所有文档内容中的每一个文档的图片地址集合 5 public List<String>contentImgFirst();// 提取每一个文档内容中的图片地址集合中第一个图片地址的集合 6 public List<String>contentTxt(); //提取每个文档内容中纯文本内容 7 public List<String>contentTxtHundred();//提取每个文档内容中纯文本内容的前101字节 8 }
第2个类:NoteDaoImpl.java 实现类:
1 public class NoteDaoImpl implements NoteDao { 2 DBUtil db = new DBUtil(); 3 4 // 查询所有文档所有字段内容 5 @Override 6 public List<NoteBean> queryAll() { 7 String sql = "select * from note"; 8 List<Map<String, String>> lmap = new ArrayList<Map<String, String>>(); 9 lmap = db.query(sql, null); 10 List<NoteBean> list = new ArrayList<NoteBean>(); 11 for (Map<String, String> map : lmap) { 12 NoteBean nb = new NoteBean(); 13 nb.setAuthor(map.get("author")); 14 nb.setContent(map.get("content")); 15 nb.setCreatetime(map.get("createtime")); 16 nb.setId(Integer.parseInt(map.get("id"))); 17 nb.setTags(map.get("tags")); 18 nb.setTitle(map.get("title")); 19 list.add(nb); 20 } 21 return list; 22 } 23 24 // 提取所有文档中content字段内容 25 @Override 26 public List<String> contentAll() { 27 NoteDao nd = new NoteDaoImpl(); 28 List<NoteBean> lnb = nd.queryAll(); 29 30 List<String> content = new ArrayList<String>(); 31 if (lnb!=null&&lnb.size() > 0) { 32 for (int i = 0; i < lnb.size(); i++) { 33 content.add(lnb.get(i).getContent()); 34 } 35 } 36 return content; 37 } 38 39 // 提取所有文档内容中的每一个文档的图片地址集合 40 @Override 41 public List<List<String>> contentImg() { 42 NoteDao nd = new NoteDaoImpl(); 43 List<String> lnb = nd.contentAll(); 44 45 List<List<String>> imgSrc = new ArrayList<List<String>>(); 46 if (lnb!=null&&lnb.size() > 0) {// 判断所有文档总内容的集合是否为null 47 for (int i = 0; i < lnb.size(); i++) { 48 String ct = lnb.get(i); 49 if (ct == null || ct.equals("")) {// 判断每一个文档的内容是否为空 50 imgSrc.add(null); 51 } else { 52 imgSrc.add(Get_ContentImg_FormHTML.getImageSrc(ct));//此处调用了公共类 53 } 54 } 55 } 56 return imgSrc; 57 } 58 59 // 提取每一个文档内容中的图片地址集合中第一个图片地址的集合 60 @Override 61 public List<String> contentImgFirst() { 62 NoteDao nd = new NoteDaoImpl(); 63 List<List<String>> lnb = nd.contentImg(); 64 65 List<String> imgSrcFirst = new ArrayList<String>(); 66 if (lnb!=null&&lnb.size() > 0) {// 判断所有文档图片地址集合是否为空 67 for (int i = 0; i < lnb.size(); i++) { 68 if (lnb.get(i)!=null&&lnb.get(i).size() > 0) {// 判断每一个文档中图片地址集合是否为空 69 imgSrcFirst.add(lnb.get(i).get(0));// 提取每一个文档中的图片地址集合中第一个图片 70 } else { 71 imgSrcFirst.add(null); 72 } 73 } 74 } 75 return imgSrcFirst; 76 } 77 78 // 提取每个文档内容中纯文本内容 79 @Override 80 public List<String> contentTxt() { 81 NoteDao nd = new NoteDaoImpl(); 82 List<String> lnb = nd.contentAll(); 83 84 List<String> ctTxt = new ArrayList<String>();// 提取每个文档内容中的纯文本内容 85 if (lnb!=null&&lnb.size() > 0) {// 判断所有文档内容的集合是否为空 86 for (int i = 0; i < lnb.size(); i++) { 87 String ctText = Get_ContentTxt_FormHTML.getContentTxt(lnb.get(i));//此处调用了公共类 88 if (ctText == null || ctText.equals("")) {// 判断每一个文档的内容是否为空 89 ctTxt.add(null); 90 } else { 91 ctTxt.add(ctText); 92 } 93 } 94 } 95 return ctTxt; 96 } 97 98 // 提取每个文档内容中纯文本内容的前101字节 99 @Override 100 public List<String> contentTxtHundred() { 101 NoteDao nd = new NoteDaoImpl(); 102 List<String> ctTxt = nd.contentTxt(); 103 104 List<String> ctTxtHundred = nd.contentTxt(); 105 if (ctTxt!=null&&ctTxt.size() > 0) {// 判断所有文档的纯内容的集合是否为空 106 for (int i = 0; i < ctTxt.size(); i++) { 107 if (ctTxt.get(i) == null || ctTxt.get(i).equals("")) {// 判断每一个文档的内容是否为空 108 ctTxtHundred.add(null); 109 } else { 110 int l = ctTxt.get(i).getBytes().length; 111 if (l <= 100) {// 字符串不等于NULL,字节数肯定大于0,判断总字节数是否大于100 112 ctTxtHundred.add(ctTxt.get(i)); 113 } else { 114 ctTxtHundred.add(ctTxt.get(i).substring(0, 100) + "..."); 115 } 116 } 117 } 118 } 119 return ctTxtHundred; 120 } 121 122 }
第3个类:NoteService.java 接口:
1 public interface NoteService { 2 public List<NoteBean> queryAll();// 查询所有文档所有字段内容 3 public List<String>contentAll();//提取所有文档中content字段内容 4 public List<List<String>>contentImg();// 提取所有文档内容中的每一个文档的图片地址集合 5 public List<String>contentImgFirst();// 提取每一个文档内容中的图片地址集合中第一个图片地址的集合 6 public List<String>contentTxt(); //提取每个文档内容中纯文本内容 7 public List<String>contentTxtHundred();//提取每个文档内容中纯文本内容的前101字节 8 }
第4个类:NoteServiceImpl.java 实现类:
1 public class NoteServiceImpl implements NoteService{ 2 NoteDao nd=new NoteDaoImpl(); 3 @Override 4 public List<NoteBean> queryAll() { 5 List<NoteBean> nb=nd.queryAll(); 6 return nb; 7 } 8 @Override 9 public List<String> contentAll() { 10 List<String> ls=nd.contentAll(); 11 return ls; 12 } 13 @Override 14 public List<List<String>> contentImg() { 15 List<List<String>>lts=nd.contentImg(); 16 return lts; 17 } 18 @Override 19 public List<String> contentImgFirst() { 20 List<String>ls=nd.contentImgFirst(); 21 return ls; 22 } 23 @Override 24 public List<String> contentTxt() { 25 List<String>ls=nd.contentTxt(); 26 return ls; 27 } 28 @Override 29 public List<String> contentTxtHundred() { 30 List<String>ls=nd.contentTxtHundred(); 31 return ls; 32 } 33 }
第5个类:Note_List.java (Servlet类)
1 public class Note_List extends HttpServlet { 2 3 @Override 4 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 5 doPost(req, resp); 6 } 7 8 @Override 9 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 10 req.setCharacterEncoding("UTF-8"); 11 resp.setCharacterEncoding("UTF-8"); 12 13 NoteService nd = new NoteServiceImpl(); 14 List<NoteBean> lnb = nd.queryAll();// 查询所有文档所有字段内容 15 List<String> imgSrcFirst = nd.contentImgFirst();// 提取每个文档内容中的第一个图片地址的集合 16 List<String> ctTxtHundred = nd.contentTxtHundred();// 提取每个文档内容中的纯文本内容的前101字节 17 18 HttpSession sesImg = req.getSession(); 19 sesImg.setAttribute("img", imgSrcFirst); 20 21 HttpSession sesConTxt = req.getSession(); 22 sesConTxt.setAttribute("txt", ctTxtHundred); 23 24 req.setAttribute("list", lnb); 25 req.getRequestDispatcher("note_list_user.jsp").forward(req, resp); 26 27 } 28 }
可见,分层后的代码,简明易懂,易于维护和代码复用,但是代码量增加了不少,对于程序的运行效率我觉得会有一定程度的损失。
标签:等于 阅读 查询 java except inter 提取 get 字符串
原文地址:https://www.cnblogs.com/nreg/p/9769892.html