菜品管理系统小结 jsp和servlet之间传数据

该系统是基于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之间传数据

猜你喜欢

转载自www.cnblogs.com/nickup/p/9003680.html

相关文章