该系统是基于MVC搭建的,最典型的MVC模式就是JSP + + 的模式。
- 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
通过表单的形式(见:)
4.运行servlet文件一定要配置访问路径
方法:(1)@WebServlet("/LoginServlet")(2)在web.xml中进行设置
不足:request、session、重定向、重定位、cookies。