• 菜品管理系统小结


    该系统是基于MVC搭建的,最典型的MVC模式就是JSP + servlet + javabean的模式。

    • Model(模型)表示应用程序核心(比如数据库记录列表)。
    • View(视图)显示数据(数据库记录)。
    • Controller(控制器)处理输入(写入数据库记录)

    主要用到的知识有:

    1.文件上传类的操作(添加几个jar包)PS:主要这里要显示菜单照片、需要用到文件上传

    /*******************新建一个文件上传工厂****************************************/
                Map<String,String> map = new HashMap<String,String>();
                //1.创建一个磁盘文件项工厂对象
                DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
                //2.创建一个核心解析类
                ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory);
                //3.解析request请求,返回的是List请求,List集合中存放的是FileItem对象
                List<FileItem> list1 = servletFileUpload.parseRequest(request);
                //定义一个List集合    
                String url = null;
                for (FileItem fileItem : list1) {
                    // 判断是表单项还是文件上传项
                    if(fileItem.isFormField()){
                        //普通表单项;
                        //接收表单参数的值:
                        String name = fileItem.getFieldName();//获得表单项的name属性的值
                        String value = fileItem.getString("UTF-8");//获得表单项的值
                        System.out.println(name+"  "+value);
                        // 将数据存入map集合中
                        map.put(name, value);
                                                                }                  
                else{
                    // 文件上传项
                    //文件上传功能
                    // 获得文件上传的名称
                    String fileName = fileItem.getName();
                    if(fileName !=null && !"".equals(fileName)){
                        // 通过工具类获得唯一文件名
                        String uuidFileName = UploadUtils.getUUIDFileName(fileName);
                        //获得文件上传数据
                        InputStream is = fileItem.getInputStream();
                        // 获得文件上传路径
                        String path = this.getServletContext().getRealPath("/upload");
                        //将输入流对接到输出流就可以了
                        url = path+"\"+uuidFileName;
                        OutputStream os = new FileOutputStream(url);
                        int len = 0;
                        byte[] b = new byte[1024];
                        while((len = is.read(b))!=-1){
                            os.write(b, 0, len);
                        }
                        is.close();
                        os.close();
                    }
                }

    2.jsp中设置基本的路径

    <%
        String basePath = request.getScheme()+":"+"//"+request.getServerName()+":"+request.getServerPort()
        +request.getServletContext().getContextPath()+"/";
    %>

      主程序:      <form action="<%=basePath%>FoodDeleteServlet" method="post">

    3.servlet和jsp之间的数据交互

    servlet到jsp

    a.重定向(PS:session的数据用完不会立刻丢失)

            List<Food> list = (List<Food>) this.getServletContext().getAttribute("list");
            for(Food food:list){
                if(foodName.equals(food.getFoodName()))
                {
                    //跳转到菜品查询
                        request.getSession().setAttribute("id", food.getFoodId());
                        request.getSession().setAttribute("foodName", food.getFoodName());
                        request.getSession().setAttribute("taste", food.getFoodTaste());
                        request.getSession().setAttribute("price", food.getFoodPrice());
                        request.getSession().setAttribute("description", food.getFoodDescrip());
                        request.getSession().setAttribute("url", food.getFoodPath());
                        food.getFoodDescrip();
                    flag=1;
                    break;
                }
            }
            request.getSession().setAttribute("flag", flag);

             response.sendRedirect(request.getContextPath()+"/showFoodList.jsp");

    b.转发(PS:request中的数据用完立刻丢失)

                for(Food u :foodList){
                    if(u.getFoodId().equals(map.get("id"))||u.getFoodName().equals(map.get("foodName"))){
                        request.setAttribute("msg", "用户已经存在!");
                        request.getRequestDispatcher("/showFoodList.jsp").forward(request, response);
                        return ;
                    }

    c.jsp传数据到servlet

    通过表单的形式(见:jsp和servlet之间传数据

     4.运行servlet文件一定要配置访问路径

    方法:(1)@WebServlet("/LoginServlet")(2)在web.xml中进行设置

    不足:request、session、重定向、重定位、cookies。

  • 相关阅读:
    演示使用string对象(续)
    P2216 [HAOI2007]理想的正方形 单调队列
    SP1805 HISTOGRA
    P4556 [Vani有约会]雨天的尾巴 树链剖分 线段树合并
    codeforces 600E 线段树合并
    HDU2197 本原串
    P3806 【模板】点分治1
    牛客10 Popping Balloons
    P3261 [JLOI2015]城池攻占 左偏树
    P4549 【模板】裴蜀定理
  • 原文地址:https://www.cnblogs.com/nickup/p/9003680.html
Copyright © 2020-2023  润新知