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 }

 

转载于:https://www.cnblogs.com/fffwhite/p/11463194.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值