j2ee学习项目总结
该次项目做的市一个模范天猫的网站,使用原生的java和jsp完成。
采用filter+servlet的模式来完成。思路:使用filter来对超链接href的地址进行解析,通过对字符串的操作识别我们要访问的Servlet以及Servlet中的方法。代码如下:
该filter是用于后台转跳的:
public class BackSetvletFilter implements Filter { public void destroy() { } public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException { HttpServletRequest request = (HttpServletRequest)req; HttpServletResponse response = (HttpServletResponse)resp; String application = request.getSession().getServletContext().getContextPath(); String uri = request.getRequestURI(); uri = StringUtils.remove(uri,application); if (uri.startsWith("/admin")){ String servlet = StringUtils.substringBetween(uri,"_","_"); String Method = StringUtils.substringAfterLast(uri,"_"); request.setAttribute("Method",Method); request.getRequestDispatcher("/"+servlet).forward(request,response); return; } chain.doFilter(request,response); }
例如我们页面点击链接href=“admin_category_list”,通过该filter我们会访问categoryServlet并通过反射调用categoryServlet的list()方法。
categoryServlet继承(所有的Servlet都继承于)一个父类backbaseServlet。该父类重写了servlce方法,该方法用于得到分页信息,以及根据filter的Method通过反射来调用该方法,并且根据调用方法返回的字符串来进行页面转跳。代码如下:
1 public abstract class BaseBackServlet extends HttpServlet { 2 public abstract String add(HttpServletRequest request,HttpServletResponse response,Page page); 3 public abstract String delete(HttpServletRequest request,HttpServletResponse response,Page page); 4 public abstract String edit(HttpServletRequest request , HttpServletResponse response ,Page page); 5 public abstract String update(HttpServletRequest request,HttpServletResponse response,Page page); 6 public abstract String list(HttpServletRequest request,HttpServletResponse response,Page page); 7 8 protected CategoryDAO categoryDAO = new CategoryDAO(); 9 protected OrderDAO orderDAO = new OrderDAO(); 10 protected OrderItemDAO orderItemDAO = new OrderItemDAO(); 11 protected ProductDAO productDAO = new ProductDAO(); 12 protected ProductImageDAO productImageDAO = new ProductImageDAO(); 13 protected PropertyDAO propertyDAO = new PropertyDAO(); 14 protected ReviewDAO reviewDAO = new ReviewDAO(); 15 protected UserDAO userDAO = new UserDAO(); 16 17 protected void service(HttpServletRequest request,HttpServletResponse response){ 18 try { 19 int start = 0; 20 int count=5; 21 try { 22 start = Integer.parseInt(request.getParameter("page.start")); 23 }catch (Exception e){ 24 25 }try { 26 count = Integer.parseInt(request.getParameter("page.count")); 27 }catch (Exception e){ 28 29 } 30 Page page = new Page(start,count); 31 String method =(String) request.getAttribute("Method"); 32 Method m = this.getClass().getDeclaredMethod(method,HttpServletRequest.class,HttpServletResponse.class,Page.class); 33 String redict=m.invoke(this,request,response,page).toString(); 34 if (redict.startsWith("@")){ 35 response.sendRedirect(redict.substring(1)); 36 } 37 else if (redict.startsWith("%")){ 38 System.out.println(redict.substring(1)); 39 } 40 else { 41 request.getRequestDispatcher(redict).forward(request,response); 42 } 43 }catch (Exception e){ 44 e.printStackTrace(); 45 } 46 } 47 public InputStream paseUpload(HttpServletRequest request, Map<String,String> params){ 48 49 InputStream inputStream = null; 50 try { 51 DiskFileItemFactory factory = new DiskFileItemFactory(); 52 factory.setSizeThreshold(1024*10240); 53 ServletFileUpload upload = new ServletFileUpload(factory); 54 List item = upload.parseRequest(request); 55 Iterator iterator = item.iterator(); 56 while (iterator.hasNext()){ 57 FileItem Item = (FileItem)iterator.next(); 58 if (!Item.isFormField()){ 59 inputStream = Item.getInputStream(); 60 } 61 else { 62 String name = Item.getFieldName(); 63 String value = Item.getString(); 64 value = new String(value.getBytes("ISO-8859-1"),"UTF-8"); 65 params.put(name,value); 66 } 67 } 68 }catch (Exception e){ 69 e.printStackTrace(); 70 } 71 return inputStream; 72 } 73 }
category继承于该抽象类,代码如下:
1 public class CategoryServlet extends BaseBackServlet { 2 public String add(HttpServletRequest request, HttpServletResponse response, Page page){ 3 Map<String,String> params = new HashMap<>(); 4 InputStream is = super.paseUpload(request,params); 5 6 String name = params.get("name"); 7 Category category = new Category(); 8 category.setName(name); 9 categoryDAO.add(category); 10 File imageFolder= new File(request.getSession().getServletContext().getRealPath("img/category")); 11 File file = new File(imageFolder,category.getId()+".jpg"); 12 try { 13 if(null!=is&&0!=is.available()){ 14 try{ 15 FileOutputStream fos = new FileOutputStream(file); 16 byte[] b = new byte[1024*1024]; 17 int len=0; 18 while ((-1!=(len= is.read(b)))){ 19 fos.write(b); 20 } 21 fos.flush(); 22 BufferedImage img = util.ImageUtil.change2jpg(file); 23 ImageIO.write(img,"jpg",file); 24 }catch (Exception e){ 25 e.printStackTrace(); 26 } 27 } 28 }catch (Exception e){ 29 e.printStackTrace(); 30 } 31 return "@admin_category_list"; 32 } 33 public String delete (HttpServletRequest request,HttpServletResponse response,Page page){ 34 int id = Integer.parseInt(request.getParameter("cid")); 35 System.out.println(id); 36 categoryDAO.delete(id); 37 return "@admin_category_list"; 38 } 39 public String edit(HttpServletRequest request,HttpServletResponse response,Page page){ 40 int id = Integer.parseInt(request.getParameter("cid")); 41 Category category = new CategoryDAO().get(id); 42 request.setAttribute("category",category); 43 return "web/admin/editCategory.jsp"; 44 } 45 public String update(HttpServletRequest request,HttpServletResponse response,Page page){ 46 Map<String,String> params = new HashMap<>(); 47 InputStream is = super.paseUpload(request,params); 48 49 String name = params.get("name"); 50 int id = Integer.parseInt(params.get("id")); 51 52 Category category = new Category(); 53 category.setId(id); 54 category.setName(name); 55 new CategoryDAO().update(category); 56 57 File imageFolder = new File(request.getSession().getServletContext().getRealPath("img/category")); 58 File file = new File(imageFolder,category.getId()+".jpg"); 59 file.getParentFile().mkdirs(); 60 try{ 61 if (null!=is&&0!=is.available()){ 62 try{ 63 FileOutputStream fos = new FileOutputStream(file); 64 byte[] b= new byte[1024*1024]; 65 int len=0; 66 while ((-1!=(len=is.read(b)))){ 67 fos.write(b); 68 } 69 fos.flush(); 70 fos.close(); 71 BufferedImage img = ImageUtil.change2jpg(file); 72 ImageIO.write(img,"jpg",file); 73 }catch (Exception e){ 74 e.printStackTrace(); 75 } 76 } 77 }catch (Exception e){ 78 e.printStackTrace(); 79 } 80 return "@admin_category_list"; 81 } 82 public String list(HttpServletRequest request,HttpServletResponse response,Page page){ 83 List<Category> cs = new CategoryDAO().list(page.getStart(),page.getCount()); 84 int total = new CategoryDAO().getTotal(); 85 page.setTotal(total); 86 request.setAttribute("thecs", cs); 87 request.setAttribute("page", page); 88 89 return "web/admin/listCategory.jsp"; 90 } 91 92 }