zoukankan      html  css  js  c++  java
  • 菜品管理系统小结

    该系统是基于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。

  • 相关阅读:
    .NET Core开发实战(第10课:环境变量配置提供程序)--学习笔记
    .NET Core开发实战(第9课:命令行配置提供程序)--学习笔记
    .NET Core开发实战(第8课:配置框架:让服务无缝适应各种环境)--学习笔记
    .NET Core开发实战(第7课:用Autofac增强容器能力)--学习笔记(下)
    .NET Core开发实战(第7课:用Autofac增强容器能力)--学习笔记(上)
    .NET Core开发实战(第6课:作用域与对象释放行为)--学习笔记(下)
    .NET Core开发实战(第6课:作用域与对象释放行为)--学习笔记(上)
    .NET Core开发实战(第5课:依赖注入:良好架构的起点)--学习笔记(下)
    .NET Core开发实战(第5课:依赖注入:良好架构的起点)--学习笔记(中)
    .NET Core开发实战(第5课:依赖注入:良好架构的起点)--学习笔记(上)
  • 原文地址:https://www.cnblogs.com/nickup/p/9003680.html
Copyright © 2011-2022 走看看