SpringMVC-课程项目案例

tech2025-11-01  11

需求

添加课程,成功则返回全部课程信息。查询课程,通过 id 查询对应的课程信息。修改课程,成功则返回修改之后的全部课程信息。删除课程,成功则返回删除之后的全部课程信息。

1、创建实体类

package com.southwind.entity; public class Course { private Integer id; private String name; private Double price; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Double getPrice() { return price; } public void setPrice(Double price) { this.price = price; } public Course(Integer id, String name, Double price) { this.id = id; this.name = name; this.price = price; } }

2、CourseRepository

package com.southwind.repository; import com.southwind.entity.Course; import org.springframework.stereotype.Repository; import java.util.Collection; import java.util.HashMap; import java.util.Map; @Repository public class CourseRepository { private static Map<Integer, Course> map; static { map = new HashMap(); map.put(1,new Course(1,"Java",6000d)); map.put(2,new Course(2,"C++",6000d)); map.put(3,new Course(3,"Python",6000d)); } public void saveOrUpdate(Course course){ map.put(course.getId(),course); } public Collection<Course> findAll(){ return map.values(); } public Course findById(Integer id){ return map.get(id); } public void deleteById(Integer id){ map.remove(id); } }

3、CourseHandler

package com.southwind.controller; import com.southwind.entity.Course; import com.southwind.repository.CourseRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; @Controller @RequestMapping("/course") public class CourseHandler { @Autowired private CourseRepository courseRepository; // @RequestMapping(value = "/findAll",method = RequestMethod.GET) @GetMapping("/findAll") public ModelAndView findAll(){ ModelAndView modelAndView = new ModelAndView("course"); modelAndView.addObject("list",courseRepository.findAll()); return modelAndView; } @DeleteMapping("/deleteById/{id}") public String deleteById(@PathVariable("id") Integer id){ courseRepository.deleteById(id); return "redirect:/course/findAll"; } @GetMapping("/findById/{id}") public ModelAndView findById(@PathVariable("id") Integer id){ ModelAndView modelAndView = new ModelAndView("update"); modelAndView.addObject("course",courseRepository.findById(id)); return modelAndView; } @PutMapping("/update") public String update(Course course){ courseRepository.saveOrUpdate(course); return "redirect:/course/findAll"; } @PostMapping("/add") public String add(Course course){ courseRepository.saveOrUpdate(course); return "redirect:/course/findAll"; } }

Spring MVC 文件上传下载

单文件上传

1、pom.xml

<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.6</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.3</version> </dependency>

2、JSP

input 的 type 设置为 fileform 表单的 method 设置为 postform 表单的 enctype 设置为 multipart/form-data <%-- Created by IntelliJ IDEA. User: southwind Date: 2019-08-22 Time: 21:25 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ page isELIgnored="false" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title>Title</title> </head> <body> <form action="/upload" method="post" enctype="multipart/form-data"> <input type="file" name="img"/> <input type="submit" value="上传"/> </form><br/> <c:if test="${filePath!=null}"> <h1>上传的图片</h1> <img width="300px" src="${filePath}"> </c:if> </body> </html>

3、UploadHandler

package com.southwind.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.IOException; @Controller public class UploadHandler { @RequestMapping("/upload") public String upload(@RequestParam("img") MultipartFile img, HttpServletRequest request){ if(img.getSize()>0){ String path = request.getSession().getServletContext().getRealPath("file"); String fileName = img.getOriginalFilename(); File file = new File(path,fileName); try { img.transferTo(file); } catch (IOException e) { e.printStackTrace(); } request.setAttribute("filePath","/file/"+fileName); } return "upload"; } }

4、springmvc.xml

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>

5、web.xml

<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.jpg</url-pattern> </servlet-mapping> 多文件上传

1、JSP

<%-- Created by IntelliJ IDEA. User: southwind Date: 2019-08-22 Time: 21:48 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ page isELIgnored="false" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title>Title</title> </head> <body> <form action="/uploads" method="post" enctype="multipart/form-data"> file1:<input type="file" name="imgs"/><br/> file2:<input type="file" name="imgs"/><br/> file3:<input type="file" name="imgs"/><br/> <input type="submit" value="上传"/> </form> <c:if test="${filePath!=null}"> <h1>上传的图片</h1> <c:forEach items="${filePath}" var="img"> <img width="300px" src="${img}"/> </c:forEach> </c:if> </body> </html>

2、Handler

package com.southwind.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; @Controller public class UploadsHandler { @RequestMapping("/uploads") public String uploads(@RequestParam("imgs") MultipartFile[] imgs, HttpServletRequest request){ List<String> filePath = new ArrayList<>(); for(MultipartFile img:imgs){ if(img.getSize()>0){ String path = request.getSession().getServletContext().getRealPath("file"); String fileName = img.getOriginalFilename(); File file = new File(path,fileName); try { img.transferTo(file); filePath.add("/file/"+fileName); } catch (IOException e) { e.printStackTrace(); } } } request.setAttribute("filePath",filePath); return "uploads"; } }

设置文件上传的大小

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 处理文件名中文乱码 --> <property name="defaultEncoding" value="utf-8"></property> <!-- 多文件上传总大小的上限 --> <property name="maxUploadSize" value="10485760"></property> <!-- 单文件大小的上限 --> <property name="maxUploadSizePerFile" value="1048576"></property> </bean>

备注:最近来手感,写了个类似Tomcat服务

github地址:https://github.com/cnamep001/my_tomcat.git

最新回复(0)