
{"id":2963,"date":"2021-01-26T08:37:13","date_gmt":"2021-01-26T00:37:13","guid":{"rendered":"http:\/\/127.0.0.2\/?p=2963"},"modified":"2021-01-26T08:37:13","modified_gmt":"2021-01-26T00:37:13","slug":"2020javaweb%e6%95%99%e7%a8%8b%e4%b9%8b%e9%ab%98%e7%ba%a7%e6%a1%86%e6%9e%b6springmvc","status":"publish","type":"post","link":"https:\/\/www.9713job.com\/?p=2963","title":{"rendered":"2020javaweb\u6559\u7a0b\u4e4b\u9ad8\u7ea7\u6846\u67b6SpringMVC"},"content":{"rendered":"<h2>2020javaweb\u6559\u7a0b\u4e4b\u9ad8\u7ea7\u6846\u67b6SpringMVC<\/h2>\n<h3>\u4e00.\u5f00\u53d1\u6d41\u7a0b<\/h3>\n<p><strong>1.\u5bfc\u5165\u4f9d\u8d56:spring-webmvc<\/strong><\/p>\n<pre>&lt;dependency&gt;\r\n  &lt;groupId&gt;org.springframework&lt;\/groupId&gt;\r\n  &lt;artifactId&gt;spring-webmvc&lt;\/artifactId&gt;\r\n  &lt;version&gt;4.3.6.RELEASE&lt;\/version&gt;\r\n&lt;\/dependency&gt;<\/pre>\n<p><strong>2.\u914d\u7f6e\u6838\u5fc3(\u524d\u7aef)\u63a7\u5236\u5668<\/strong><\/p>\n<p><!--more--><\/p>\n<pre>&lt;!--\u524d\u7aef\u63a7\u5236\u5668--&gt;\r\n&lt;servlet&gt;\r\n  &lt;servlet-name&gt;mvc&lt;\/servlet-name&gt;\r\n  &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;\/servlet-class&gt;\r\n  &lt;!--\u58f0\u660e\u914d\u7f6e\u6587\u4ef6\uff0c\u4ee5\u652f\u6301\u524d\u7aef\u63a7\u5236\u5668\uff0c\u542f\u52a8\u5de5\u5382--&gt;\r\n  &lt;init-param&gt;\r\n    &lt;param-name&gt;contextConfigLocation&lt;\/param-name&gt;\r\n    &lt;param-value&gt;classpath:mvc.xml&lt;\/param-value&gt;\r\n  &lt;\/init-param&gt;\r\n&lt;\/servlet&gt;\r\n&lt;servlet-mapping&gt;\r\n  &lt;servlet-name&gt;mvc&lt;\/servlet-name&gt;\r\n  &lt;url-pattern&gt;\/&lt;\/url-pattern&gt;\r\n&lt;\/servlet-mapping&gt;<\/pre>\n<p><strong>3.\u914d\u7f6e\u540e\u7aef\u63a7\u5236\u5668<\/strong><\/p>\n<pre>@Controller\r\n@RequestMapping(\"\/hello\")\r\npublic class HelloController {\r\n\r\n    @RequestMapping(\"\/test\")\r\n    public String test1(){\r\n        System.out.println(\"hello world\");\r\n        return \"\";\r\n    }\r\n}<\/pre>\n<p><strong>4.\u914d\u7f6e\u6587\u4ef6<\/strong><\/p>\n<pre>&lt;!--\u540e\u7aef\u63a7\u5236\u5668--&gt;\r\n&lt;!--\u626b\u63cf\u6ce8\u89e3\u7684\u5305--&gt;\r\n&lt;context:component-scan base-package=\"com.evshou.admin\"\/&gt;\r\n&lt;!--\u6ce8\u518c\u6ce8\u89e3\u9a71\u52a8--&gt;\r\n&lt;mvc:annotation-driven\/&gt;\r\n&lt;!--\u89c6\u56fe\u89e3\u6790\u5668--&gt;\r\n&lt;bean class=\"org.springframework.web.servlet.view.InternalResourceViewResolver\"&gt;\r\n    &lt;property name=\"prefix\" value=\"\/\"\/&gt;\r\n    &lt;property name=\"suffix\" value=\".jsp\"\/&gt;\r\n&lt;\/bean&gt;<\/pre>\n<p><strong>5.\u8bbf\u95ee<\/strong><\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-2254\" src=\"\/wp-content\/uploads\/2021\/01\/19\/1.png\" alt=\"\" width=\"680\" \/><\/p>\n<h3>\u4e8c\u3001\u63a5\u6536\u53c2\u6570\u4ee5\u53ca\u89e3\u51b3\u4e71\u7801<\/h3>\n<p><strong>1.\u96f6\u6563\u6536\u53c2<\/strong><\/p>\n<pre>@RequestMapping(\"\/test\")\r\npublic String test1(Integer id, String username, Date birth){\r\n    System.out.println(\"id:\"+id+\",username:\"+username);\r\n    System.out.println(\"birth:\"+birth);\r\n    return \"index\";\r\n}<\/pre>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-2254\" src=\"\/wp-content\/uploads\/2021\/01\/19\/2.png\" alt=\"\" width=\"680\" \/><\/p>\n<p><strong>\u65e5\u671f\u683c\u5f0f\u8f6c\u6362<\/strong><\/p>\n<pre>@RequestMapping(\"\/test\")\r\npublic String test1(Integer id, String username,\r\n                    @DateTimeFormat(pattern = \"yyyy-MM-dd HH:mm:ss\") Date birth){\r\n    System.out.println(\"id:\"+id+\",username:\"+username);\r\n    System.out.println(\"birth:\"+birth);\r\n    return \"index\";\r\n}<\/pre>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-2254\" src=\"\/wp-content\/uploads\/2021\/01\/19\/3.png\" alt=\"\" width=\"680\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><strong>2.\u5b9e\u4f53\u6536\u53c2<\/strong><\/p>\n<p>1.\u5bfc\u5165\u4f9d\u8d56:lombok<\/p>\n<pre>&lt;dependency&gt;\r\n  &lt;groupId&gt;org.projectlombok&lt;\/groupId&gt;\r\n  &lt;artifactId&gt;lombok&lt;\/artifactId&gt;\r\n  &lt;version&gt;1.18.4&lt;\/version&gt;\r\n  &lt;scope&gt;provided&lt;\/scope&gt;\r\n&lt;\/dependency&gt;<\/pre>\n<p>2.\u521b\u5efa\u5b9e\u4f53\u7c7b<\/p>\n<pre>@Data\/\/get\u548cset\u65b9\u6cd5\uff0ctoString\u3001hashcode\u7b49\u65b9\u6cd5\r\n@AllArgsConstructor\/\/\u6709\u53c2\u6784\u9020\r\n@NoArgsConstructor\/\/\u65e0\u53c2\u6784\u9020\r\npublic class Users {\r\n    private Integer id;\r\n    private String username;\r\n    private String password;\r\n    @DateTimeFormat(pattern = \"yyyy-MM-dd\")\r\n    private Date birthday;\r\n}<\/pre>\n<p>3.\u63a7\u5236\u5668<\/p>\n<pre>@RequestMapping(\"\/users\")\r\npublic String testUsers(Users users){\r\n    System.out.println(users);\r\n    return \"index\";\r\n}<\/pre>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-2254\" src=\"\/wp-content\/uploads\/2021\/01\/19\/4.png\" alt=\"\" width=\"680\" \/><\/p>\n<p><strong>3.\u6570\u7ec4\u6536\u53c2<\/strong><\/p>\n<pre>\/*\u6570\u7ec4\u6536\u53c2*\/\r\n@RequestMapping(\"\/arrList\")\r\npublic String testArr(String[] feed){\r\n    for (String str : feed) {\r\n        System.out.println(str);\r\n    }\r\n    return \"index\";\r\n}\r\n\/*\u8868\u5355\u9875\u9762*\/\r\n@RequestMapping(\"\/arrListForm\")\r\npublic String testArrListForm(){\r\n    return \"arrList\";\r\n}<\/pre>\n<pre>&lt;form action=\"${pageContext.request.contextPath}\/hello\/arrList\"&gt;\r\n    &lt;input type=\"checkbox\" name=\"feed\" value=\"apple\"&gt;\u82f9\u679c &lt;br&gt;\r\n    &lt;input type=\"checkbox\" name=\"feed\" value=\"pear\"&gt;\u68a8\u5b50 &lt;br&gt;\r\n    &lt;input type=\"checkbox\" name=\"feed\" value=\"orange\"&gt;\u6a58\u5b50 &lt;br&gt;\r\n    &lt;input type=\"submit\" value=\"\u63d0\u4ea4\"&gt;\r\n    &lt;input type=\"reset\" value=\"\u91cd\u7f6e\"&gt;\r\n&lt;\/form&gt;<\/pre>\n<p>&nbsp;<\/p>\n<p><b>\u4e09\u3001\u8df3\u8f6c<\/b><\/p>\n<p>1.C&#8211;&gt;V<\/p>\n<pre>@RequestMapping(\"\/test2\")\r\npublic String test2(){\r\n    System.out.println(\"test2\");\r\n    return \"forward:test\";\r\n}<\/pre>\n<p>2.C&#8211;&gt;C<\/p>\n<pre>@RequestMapping(\"\/test\")\r\npublic String test(){\r\n    System.out.println(\"test\");\r\n    return \"redirect:\/hello\/arrListForm\";\r\n}<\/pre>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-2254\" src=\"\/wp-content\/uploads\/2021\/01\/19\/5.png\" alt=\"\" width=\"680\" \/><\/p>\n<p><strong>\u8df3\u8f6c\u7ec6\u8282<\/strong><\/p>\n<p>1.\u5728\u589e\u5220\u6539\u4e4b\u540e\uff0c\u4e3a\u4e86\u9632\u6b62\u8bf7\u6c42\u91cd\u590d\u63d0\u4ea4\uff0c\u91cd\u5b9a\u5411\u8df3\u8f6c<\/p>\n<p>2.\u5728\u67e5\u8be2\u4e4b\u540e\uff0c\u53ef\u4ee5\u505a\u8f6c\u53d1\u8df3\u8f6c<\/p>\n<p><strong>jsp\u7ec6\u8282<\/strong><\/p>\n<p>1.\u4e0d\u5e94\u8be5\u76f4\u63a5\u8bbf\u95eejsp\uff0c\u5e94\u8be5\u5148\u8fc7C\uff0c\u67e5\u5230\u6570\u636e\u540e\uff0c\u5728\u8f6c\u53d1jsp<\/p>\n<p>2.\u53ef\u4ee5\u5c06\u6240\u6709jsp\u90fd\u653e\u5165 WEB-INF \u76ee\u5f55\u4e0b\uff0c\u5373\u53ef\u9650\u5236\u4e0d\u63a5\u53d7\u5916\u754c\u76f4\u63a5\u8bbf\u95ee\uff0c\u53ea\u80fd\u7531C\u8f6c\u53d1<\/p>\n<p><strong>\u4f20\u503c<\/strong><\/p>\n<p>C\u5f97\u5230\u6570\u636e\u540e\uff0c\u8f6c\u53d1V\uff0c\u5e76\u5411V\u4f20\u9012\u6570\u636e\u3002\u8fdb\u800cV\u4e2d\u53ef\u4ee5\u6e32\u67d3\u6570\u636e\uff0c\u8ba9\u7528\u6237\u770b\u5230\u542b\u6709\u6570\u636e\u7684\u9875\u9762\u3002<\/p>\n<p>\u8f6c\u53d1\u8df3\u8f6c\uff1arequest\u4f5c\u7528\u57df<\/p>\n<p>\u91cd\u5b9a\u5411\u8df3\u8f6c\uff1asession\u4f5c\u7528\u57df<\/p>\n<h3><\/h3>\n<h3>\u83b7\u5f97Request\u548cSession<\/h3>\n<p>1.\u5bfc\u5165\u4f9d\u8d56<\/p>\n<pre>&lt;dependency&gt;\r\n  &lt;groupId&gt;javax.servlet&lt;\/groupId&gt;\r\n  &lt;artifactId&gt;javax.servlet-api&lt;\/artifactId&gt;\r\n  &lt;version&gt;3.1.0&lt;\/version&gt;\r\n  &lt;scope&gt;provided&lt;\/scope&gt;\r\n&lt;\/dependency&gt;\r\n&lt;dependency&gt;\r\n  &lt;groupId&gt;javax.servlet&lt;\/groupId&gt;\r\n  &lt;artifactId&gt;jstl&lt;\/artifactId&gt;\r\n  &lt;version&gt;1.2&lt;\/version&gt;\r\n&lt;\/dependency&gt;\r\n&lt;dependency&gt;\r\n  &lt;groupId&gt;javax.servlet&lt;\/groupId&gt;\r\n  &lt;artifactId&gt;jsp-api&lt;\/artifactId&gt;\r\n  &lt;version&gt;2.0&lt;\/version&gt;\r\n  &lt;scope&gt;provided&lt;\/scope&gt;\r\n&lt;\/dependency&gt;<\/pre>\n<p>2.\u521b\u5efa\u63a7\u5236\u5c42<\/p>\n<pre>@RequestMapping(\"\/test1\")\r\npublic String test1(HttpServletRequest request, HttpSession session){\r\n    request.setAttribute(\"username\",\"admin\");\r\n    session.setAttribute(\"age\",15);\r\n    return \"data\";\r\n}<\/pre>\n<p>3.\u521b\u5efajsp<\/p>\n<pre>username:${requestScope.username} &lt;br&gt;\r\nage:${sessionScope.age}<\/pre>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-2254\" src=\"\/wp-content\/uploads\/2021\/01\/19\/6.png\" alt=\"\" width=\"680\" \/><\/p>\n<h3>\u9759\u6001\u8d44\u6e90<\/h3>\n<p>\u5728mvc.xml\u914d\u7f6e\u6587\u4ef6\u6dfb\u52a0<\/p>\n<pre>&lt;mvc:default-servlet-handler\/&gt;<\/pre>\n<h3>\u56db\u3001json\u5904\u7406<\/h3>\n<p><strong>SpringMVC\u9ed8\u8ba4\u7684json\u89e3\u51b3\u65b9\u6848\u9009\u62e9\u662fJackson\uff0c\u5bfc\u5165Jackson\u4f9d\u8d56<\/strong><\/p>\n<p><strong>1.Jackson<\/strong><\/p>\n<pre>&lt;dependency&gt;\r\n  &lt;groupId&gt;com.fasterxml.jackson.core&lt;\/groupId&gt;\r\n  &lt;artifactId&gt;jackson-databind&lt;\/artifactId&gt;\r\n  &lt;version&gt;2.12.0&lt;\/version&gt;\r\n&lt;\/dependency&gt;<\/pre>\n<p><strong>@ResponseBody<\/strong><\/p>\n<pre>@Controller\r\n@RequestMapping(\"\/json\")\r\npublic class JsonController {\r\n    @RequestMapping(\"\/test1\")\r\n    <strong>@ResponseBody<\/strong>\r\n    public Users test1(){\r\n        return new Users(1,\"admin\",\"admin888\",new Date());\r\n    }\r\n}<\/pre>\n<p><strong>2.FastJson<\/strong><\/p>\n<pre>&lt;dependency&gt;\r\n  &lt;groupId&gt;com.alibaba&lt;\/groupId&gt;\r\n  &lt;artifactId&gt;fastjson&lt;\/artifactId&gt;\r\n  &lt;version&gt;1.2.54&lt;\/version&gt;\r\n&lt;\/dependency&gt;<\/pre>\n<p><strong>\u914d\u7f6e\u6587\u4ef6mvc.xml<\/strong><\/p>\n<pre>&lt;!--\u6ce8\u518c\u6ce8\u89e3\u9a71\u52a8--&gt;\r\n&lt;mvc:annotation-driven&gt;\r\n    &lt;mvc:message-converters&gt;\r\n        &lt;bean class=\"com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter\"&gt;\r\n            &lt;!--\u58f0\u660e\u8f6c\u6362\u7c7b\u578b json--&gt;\r\n            &lt;property name=\"supportedMediaTypes\"&gt;\r\n                &lt;list&gt;\r\n                    &lt;value&gt;application\/json&lt;\/value&gt;\r\n                &lt;\/list&gt;\r\n            &lt;\/property&gt;\r\n        &lt;\/bean&gt;\r\n    &lt;\/mvc:message-converters&gt;\r\n&lt;\/mvc:annotation-driven&gt;<\/pre>\n<pre>@RequestMapping(\"\/test2\")\r\n@ResponseBody\r\npublic List&lt;Users&gt; test2(){\r\n    return Arrays.asList(\r\n            new Users(1,\"admin\",\"admin888\",new Date()),\r\n            new Users(2,\"admin2\",\"admin888\",new Date())\r\n    );\r\n}<\/pre>\n<p><strong>@RestController<\/strong><br \/>\n\u53ef\u4ee5\u53d6\u4ee3 @Controller \u548c@ResponseBody<\/p>\n<h3>\u4e94\u3001\u5f02\u5e38\u89e3\u6790\u5668<\/h3>\n<p>1.\u521b\u5efaexresolver\u5f02\u5e38\u89e3\u6790\u5668\u5305<\/p>\n<p>2.\u521b\u5efa\u5f02\u5e38\u89e3\u6790\u5668<\/p>\n<pre>public class MyExceptionResolver implements HandlerExceptionResolver {\r\n    public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception ex) {\r\n        ModelAndView mv=new ModelAndView();\r\n        ex.printStackTrace();\r\n        \/*\u8bc6\u522b\u5f02\u5e38*\/\r\n        if(ex instanceof NullPointerException){\r\n            mv.setViewName(\"redirect:xxx\");\r\n        }else if(ex instanceof IndexOutOfBoundsException){\r\n            mv.setViewName(\"redirect:xxx\");\r\n        }else mv.setViewName(\"redirect:xxx\");\r\n        return mv;\r\n    }\r\n}<\/pre>\n<p>3.\u521b\u5efa\u81ea\u5b9a\u4e49\u5f02\u5e38\u7c7b\u5e76\u7ee7\u627f\u5f02\u5e38<\/p>\n<p>4.\u626b\u63cf\u6ce8\u89e3<\/p>\n<pre>&lt;bean class=\"com.evshou.admin.exresolver.MyExceptionResolver\"\/&gt;<\/pre>\n<p>5.\u63a7\u5236\u5c42<\/p>\n<pre>@Controller\r\n@RequestMapping(\"\/user\")\r\npublic class UserController {\r\n    @RequestMapping(\"\/test1\")\r\n    public String test1()  {\r\n        if(1==1) throw new NullPointerException(\"test1\");\r\n        return \"index\";\r\n    }\r\n}<\/pre>\n<h3>\u516d\u3001\u62e6\u622a\u5668<\/h3>\n<p><strong>1.\u521b\u5efa\u5305interceptor<\/strong><\/p>\n<p><strong>2.\u521b\u5efa\u7c7b\u5e76\u5b9e\u73b0HandlerInterceptor<\/strong><\/p>\n<pre>public class MyInterceptor implements HandlerInterceptor {\r\n    @Override\r\n    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {\r\n        System.out.println(\"\u767b\u5f55\u5224\u65ad\");\r\n        if (httpServletRequest.getSession().getAttribute(\"users\") == null) {\r\n            return true;\/\/\u653e\u884c\r\n        }\r\n        httpServletResponse.sendRedirect(\"\/user\/login\");\/\/\u62e6\u622a\u524d\u9700\u8981\u5904\u7406\u54cd\u5e94\r\n        return false;\/\/\u62e6\u622a\r\n    }\r\n\r\n    @Override\r\n    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {\r\n        System.out.println(\"postHandle\");\r\n    }\r\n\r\n    @Override\r\n    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {\r\n        System.out.println(\"afterCompletion\");\r\n    }\r\n}<\/pre>\n<p><strong>3.\u914d\u7f6e\u6587\u4ef6<\/strong><\/p>\n<pre>&lt;!--\u62e6\u622a\u5668--&gt;\r\n&lt;mvc:interceptors&gt;\r\n    &lt;mvc:interceptor&gt;\r\n        &lt;mvc:mapping path=\"\/inter\/test1\"\/&gt;&lt;!--\u62e6\u622a\u5355\u4e2ahandler--&gt;\r\n        &lt;mvc:mapping path=\"\/inter\/**\"\/&gt;&lt;!--\u62e6\u622a\u8def\u5f84\u4e0b\u7684\u6240\u6709handler--&gt;\r\n        &lt;bean class=\"com.evshou.admin.interceptor.MyInterceptor\"\/&gt;\r\n    &lt;\/mvc:interceptor&gt;\r\n&lt;\/mvc:interceptors&gt;<\/pre>\n<p><strong>4.\u63a7\u5236\u5c42<\/strong><\/p>\n<pre>@Controller\r\n@RequestMapping(\"\/inter\")\r\npublic class InterController {\r\n    @RequestMapping(\"\/test1\/a\/b\")\r\n    public String test1(){\r\n        System.out.println(\"test1\");\r\n        return \"index\";\r\n    }\r\n    @RequestMapping(\"\/test2\")\r\n    public String test2(){\r\n        System.out.println(\"test2\");\r\n        return \"index\";\r\n    }\r\n}<\/pre>\n<h3>\u4e03\u3001\u6587\u4ef6\u4e0a\u4f20<\/h3>\n<p><strong>1.\u5bfc\u5165\u4f9d\u8d56<\/strong><\/p>\n<pre>&lt;!--\u6587\u4ef6\u4e0a\u4f20--&gt;\r\n&lt;dependency&gt;\r\n  &lt;groupId&gt;commons-io&lt;\/groupId&gt;\r\n  &lt;artifactId&gt;commons-io&lt;\/artifactId&gt;\r\n  &lt;version&gt;2.4&lt;\/version&gt;\r\n&lt;\/dependency&gt;\r\n&lt;dependency&gt;\r\n  &lt;groupId&gt;commons-fileupload&lt;\/groupId&gt;\r\n  &lt;artifactId&gt;commons-fileupload&lt;\/artifactId&gt;\r\n  &lt;version&gt;1.3.3&lt;\/version&gt;\r\n  &lt;exclusions&gt;\r\n    &lt;exclusion&gt;\r\n      &lt;groupId&gt;javax.servlet&lt;\/groupId&gt;\r\n      &lt;artifactId&gt;servlet-api&lt;\/artifactId&gt;\r\n    &lt;\/exclusion&gt;\r\n  &lt;\/exclusions&gt;\r\n&lt;\/dependency&gt;<\/pre>\n<p><strong>2.\u521b\u5efa\u8868\u5355<\/strong><\/p>\n<pre>&lt;form action=\"\" enctype=\"multipart\/form-data\" method=\"post\"&gt;\r\n    file : &lt;input type=\"file\" name=\"source\"&gt; &lt;br&gt;\r\n    &lt;input type=\"submit\" value=\"up\"&gt;\r\n&lt;\/form&gt;<\/pre>\n<p><strong>3.\u914d\u7f6e\u6587\u4ef6<\/strong><\/p>\n<pre>&lt;!--\u4e0a\u4f20\u89e3\u6790\u5668--&gt;\r\n&lt;bean id=\"multipartResolver\" class=\"org.springframework.web.multipart.commons.CommonsMultipartResolver\"&gt;\r\n    &lt;property name=\"maxUploadSize\" value=\"10485760\"\/&gt;\r\n&lt;\/bean&gt;<\/pre>\n<p><strong>4.\u521b\u5efa\u63a7\u5236\u5c42<\/strong><\/p>\n<pre>\/\/\u6587\u4ef6\u4e0a\u4f20\r\n@RequestMapping(\"\/upload\")\r\npublic String upload(MultipartFile[] filename, HttpServletRequest request) throws IOException {\r\n    if (filename != null) {\r\n        for (MultipartFile multipartFile : filename) {\r\n            String fileName = multipartFile.getOriginalFilename();\r\n            System.out.println(\"fileName:\"+fileName);\/\/fileName:3.png\r\n            \/\/\u83b7\u53d6\u6587\u4ef6\u4e0a\u4f20\u7684\u8def\u5f84\r\n            String realPath = request.getServletContext().getRealPath(\"\/WEB-INF\/uploads\");\r\n            String path = uploadDispath(realPath);\/\/\u8fd4\u56de\u5e26\u6709\u5e74\u6708\u65e5\u7684\u6587\u4ef6\u5939\r\n            System.out.println(\"path:\"+path);\r\n            File file=new File(path);\r\n            \/\/\u83b7\u5f97\u6587\u4ef6\u7684\u540e\u7f00\r\n            String extension = FilenameUtils.getExtension(fileName);\r\n            \/\/\u751f\u6210\u552f\u4e00\u7684\u6587\u4ef6\u540d\r\n            String filenames = uploadFilename(fileName);\/\/\u8fd4\u56de\u5e26\u6709\u5e74\u6708\u65e5\u65f6\u5206\u79d2\u7684\u6587\u4ef6\u540d\r\n            System.out.println(\"filenames:\"+filenames);\/\/filenames:20210123120744_3.png\r\n            \/\/\u83b7\u53d6\u6587\u4ef6\u7c7b\u578b\r\n            String type = multipartFile.getContentType();\r\n            \/\/filename:20210123120744_3.png,type:image\/png\r\n            System.out.println(\"filename:\"+filenames+\",type:\"+type);\r\n            if (!file.exists()) {\r\n                file.mkdirs();\r\n            }else multipartFile.transferTo(new File(file+File.separator+filenames));\r\n            OutputStream os=new FileOutputStream(file+File.separator+filenames);\r\n            os.close();\r\n        }\r\n    }\r\n    return \"index\";\r\n}<\/pre>\n<pre>\/\/\u83b7\u53d6\u6587\u4ef6\u5217\u8868\r\npublic void getFileLists(String path,Map&lt;String,String&gt; filenames){\r\n    \/\/1.\u8def\u5f84\u5f53\u6210\u6587\u4ef6\u5bf9\u8c61\r\n    File file=new File(path);\r\n    \/\/2.\u83b7\u53d6\u8be5\u76ee\u5f55(uploads)\u4e0b\u6240\u6709\u5185\u5bb9\uff0c\u5305\u62ec\u6587\u4ef6\u6216\u6587\u4ef6\u5939\r\n    File[] files = file.listFiles();\r\n    if (files!=null) {\r\n        for (File file1 : files) {\r\n            \/\/\u5982\u679c\u662f\u6587\u4ef6\u5939\uff0c\u9012\u5f52\u904d\u5386\r\n            if (file1.isDirectory()) {\r\n                getFileLists(file1.getPath(),filenames);\r\n            }else{\r\n                String name = file1.getName();\r\n                \/\/\u83b7\u5f97\u539f\u540d\u79f0\u548c\u65b0\u540d\u79f0\r\n                String str=name.substring(name.lastIndexOf(\"_\")+1);\r\n                filenames.put(name,str);\r\n            }\r\n        }\r\n    }\r\n}\r\n\/\/\u6587\u4ef6\u5217\u8868\r\n@RequestMapping(\"\/fileList\")\r\npublic String fileList(HttpServletRequest request){\r\n    \/\/1.\u83b7\u5f97\u4e0b\u8f7d\u7684\u76ee\u5f55\u8def\u5f84\r\n    String realPath = request.getServletContext().getRealPath(\"\/WEB-INF\/uploads\");\r\n    \/\/2.\u521b\u5efaMap\u96c6\u5408 key--\u56fe\u7247\u539f\u540d\u79f0  value--\u56fe\u7247\u65b0\u540d\u79f0\r\n    Map&lt;String,String&gt; map=new HashMap&lt;&gt;();\r\n    getFileLists(realPath,map);\r\n    request.setAttribute(\"map\",map);\r\n    return \"showFileLists\";\r\n}<\/pre>\n<pre>\/\/\u6587\u4ef6\u4e0b\u8f7d\r\n@RequestMapping(\"\/download\")\r\npublic void download(String filename, HttpServletRequest request,HttpServletResponse response)\r\n        throws IOException {\r\n    System.out.println(\"filename:\"+filename);\r\n    \/\/\u83b7\u53d6\u4e0b\u8f7d\u7684\u8def\u5f84\r\n    String realPath = request.getServletContext().getRealPath(\"\/WEB-INF\/uploads\");\r\n    String newPath = uploadDispath(realPath);\r\n    response.setHeader(\"content-disposition\",\"attachment;filename=\"+filename);\r\n    IOUtils.copy(new FileInputStream(newPath+File.separator+filename),response.getOutputStream());\r\n}<\/pre>\n<p><strong>\u6587\u4ef6\u4e0a\u4f20\u8d85\u8fc7\u5927\u5c0f\u9650\u5236\u5f02\u5e38<\/strong><\/p>\n<p>1.\u521b\u5efa\u4e0a\u4f20\u62e6\u622a\u5668\u5e76\u5b9e\u73b0HandlerInterceptor<\/p>\n<p>2.\u6dfb\u52a0fileSize\u79c1\u6709\u5c5e\u6027\u5e76\u6dfb\u52a0getset\u65b9\u6cd5<\/p>\n<p>3.\u6dfb\u52a0\u5185\u5bb9<\/p>\n<pre>@Override\r\npublic boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {\r\n    \/\/\u6548\u9a8c\u6587\u4ef6\u5927\u5c0f\r\n    ServletRequestContext ctx=new ServletRequestContext(httpServletRequest);\r\n    long realFileSize=ctx.contentLength();\r\n    if(fileSize&gt;=realFileSize) return true;\r\n    httpServletResponse.sendRedirect(httpServletRequest.getContextPath()+\"\/error.jsp\");\r\n    return false;\r\n}<\/pre>\n<p>4.\u914d\u7f6emvc\u6587\u4ef6<\/p>\n<pre>&lt;!--\u6587\u4ef6\u4e0a\u4f20\u8d85\u51fa\u5927\u5c0f\u5f02\u5e38\u62e6\u622a--&gt;\r\n&lt;mvc:interceptors&gt;\r\n    &lt;mvc:interceptor&gt;\r\n        &lt;mvc:mapping path=\"\/up\/**\"\/&gt;\r\n        &lt;bean class=\"com.evshou.admin.interceptor.UploadInterceptor\"&gt;\r\n            &lt;property name=\"fileSize\" value=\"2097152\"\/&gt;\r\n        &lt;\/bean&gt;\r\n    &lt;\/mvc:interceptor&gt;\r\n&lt;\/mvc:interceptors&gt;<\/pre>\n<p>&nbsp;<\/p>\n<h3>\u516b\u3001\u9a8c\u8bc1\u7801<\/h3>\n<p><strong>1.\u5bfc\u5165ValidateCodejar\u5305<\/strong><\/p>\n<p><strong>2.\u521b\u5efa\u63a7\u5236\u5c42<\/strong><\/p>\n<pre>@Controller\r\n@RequestMapping(\"\/vc\")\r\npublic class VcodeController {\r\n    @RequestMapping(\"\/\")\r\n    public void code(HttpServletResponse response, HttpSession session) throws IOException {\r\n        ValidateCode vc=new ValidateCode(120,50,4,1);\r\n        vc.write(response.getOutputStream());\r\n        session.setAttribute(\"vc\",vc);\r\n    }\r\n}<\/pre>\n<p><strong>3.\u521b\u5efa\u9875\u9762<\/strong><\/p>\n<pre>&lt;input type=\"text\" id=\"\"&gt;\r\n&lt;img src=\"${pageContext.request.contextPath}\/vc\/\" alt=\"\" id=\"img\"&gt;\r\n&lt;a onclick=\"refreshCode()\"&gt;\u770b\u4e0d\u6e05\uff0c\u6362\u4e00\u5f20&lt;\/a&gt;\r\n&lt;script&gt;\r\n    function refreshCode(){\r\n        var img=document.getElementById(\"img\");\r\n        img.src=\"${pageContext.request.contextPath}\/vc\/?\"+Math.random();\r\n    }\r\n&lt;\/script&gt;<\/pre>\n<h3>\u4e5d\u3001REST<\/h3>\n<p>1.\u6807\u8bc6<\/p>\n<p>GET:\u67e5\u8be2\uff0cPOST\uff1a\u589e\u52a0\uff0cPUT:\u4fee\u6539\uff0cDELETE\uff1a\u5220\u9664<\/p>\n<p>\u793a\u4f8b\uff1a<br \/>\nGET\uff1a\/admin\/users \u67e5\u8be2\u6240\u6709\u7528\u6237<br \/>\nPOST\uff1a\/admin\/users \u589e\u52a0\u4e00\u4e2a\u7528\u6237<br \/>\nPUT\uff1a\/admin\/users\/1 \u4fee\u6539\u4e00\u4e2a\u7528\u6237<br \/>\nDELETE\uff1a\/admin\/users\/1 \u5220\u9664\u4e00\u4e2a\u7528\u6237<br \/>\nGET\uff1a\/admin\/users\/1\/orders \u67e5\u8be2\u7528\u62371\u7684\u8ba2\u5355<br \/>\nPOST\uff1a\/admin\/users\/1\/orders \u4e3a\u7528\u62371\u589e\u52a0\u4e00\u4e2a\u8ba2\u5355<\/p>\n<pre>@GetMapping(\"\/usersList\")\/\/\u67e5\u8be2\u6240\u6709\r\npublic String usersList(){\r\n    System.out.println(\"query AllUsers\");\r\n    return \"index\";\r\n}\r\n@PostMapping(\"\/user\")\/\/\u6dfb\u52a0\u4e00\u4e2a\u7528\u6237\r\npublic String addUsers(Users users){\r\n    System.out.println(\"add Users\");\r\n    return \"index\";\r\n}\r\n@PutMapping(\"\/user\")\/\/\u4fee\u6539\u4e00\u4e2a\u7528\u6237\r\npublic String update(Users users){\r\n    System.out.println(\"update Users\");\r\n    return \"index\";\r\n}\r\n@DeleteMapping(\"\/user\/{id}\")\/\/\u5220\u9664\u4e00\u4e2a\u7528\u6237\r\npublic String delete(@PathVariable Integer id){\r\n    System.out.println(\"delete UserById\");\r\n    return \"index\";\r\n}\r\n@GetMapping(\"\/user\/{id}\")\/\/\u67e5\u8be2\u67d0\u4e2a\u7528\u6237\r\npublic String queryUsersById(@PathVariable Integer id){\r\n    System.out.println(\"query UsersById\");\r\n    return \"index\";\r\n}\r\n@PostMapping(\"\/user\/{id}\")\/\/\u6dfb\u52a0\u6307\u5b9a\u67d0\u4e2a\u7528\u6237id\r\npublic String addUsersById(@PathVariable Integer id){\r\n    System.out.println(\"add UserById\");\r\n    return \"index\";\r\n}<\/pre>\n<p><strong>\u89e3\u51b3<\/strong><\/p>\n<p>rest\u8fc7\u6ee4\u5668\u4e0d\u652f\u6301put\u3001delete\uff0c\u6d4f\u89c8\u5668\u9ed8\u8ba4\u4f1a\u5c06\u5b83\u4eec\u8f6c\u4e3aget\uff0c\u6240\u4ee5\u901a\u77e5\u8fc7\u6ee4\u5668\u6765\u89e3\u51b3\u95ee\u9898\uff0c\u53ef\u4ee5\u5b9a\u4e49\u4e00\u4e2a<br \/>\nmethod=&#8221;post&#8221;\u7684form\uff0c\u9644\u52a0\u4e00\u4e2a\u540d\u4e3a&#8221;_method&#8221;\u7684\u8bf7\u6c42\u53c2\u6570(\u9690\u85cf\u57df)\uff0c\u5373\u53ef\u6a21\u62dfput\u3001delete\u7684\u8bf7\u6c42\u65b9\u5f0f<\/p>\n<pre>&lt;!-- \u8fc7\u6ee4\u5668 --&gt;\r\n&lt;filter&gt;\r\n  &lt;filter-name&gt;HiddenHttpMethodFilter&lt;\/filter-name&gt;\r\n  &lt;filter-class&gt;org.springframework.web.filter.HiddenHttpMethodFilter&lt;\/filter-class&gt;\r\n&lt;\/filter&gt;\r\n&lt;filter-mapping&gt;\r\n  &lt;filter-name&gt;HiddenHttpMethodFilter&lt;\/filter-name&gt;\r\n  &lt;url-pattern&gt;\/*&lt;\/url-pattern&gt;\r\n&lt;\/filter-mapping&gt;<\/pre>\n<p><strong>jsp\u5bf9\u8bf7\u6c42\u65b9\u5f0f\u7684\u652f\u6301<\/strong><\/p>\n<p>jsp\u53ea\u652f\u6301 head\u3001get\u3001post<br \/>\nput\u3001delete\u3001post\u4e4b\u540e\uff0c\u5747\u5e94\u8be5\u91cd\u5b9a\u5411\u5230get\u4e0a\uff0c\u518d\u7531get\u8f6c\u53d1jsp<\/p>\n<p><strong>ajax\u8bf7\u6c42<\/strong><\/p>\n<p><span style=\"color: #ff0000;\"><strong>\u573a\u666f2\uff1a\u76f4\u63a5\u53d1\u9001PUT\u3001DELETE\u8bf7\u6c42<\/strong><\/span><\/p>\n<p><span style=\"color: #ff0000;\"><strong>Tomcat\u4e0d\u5904\u7406put\u8bf7\u6c42\uff0c\u5176\u4e2d\u53c2\u6570\u4e0d\u63a5\u6536<\/strong><\/span><\/p>\n<pre>&lt;form action=\"${pageContext.request.contextPath}\/rest\/user\" method=\"post\"&gt;\r\n    &lt;input type=\"hidden\" name=\"_method\" value=\"put\"&gt;\r\n    &lt;input type=\"submit\" value=\"\u63d0\u4ea4\"&gt;\r\n&lt;\/form&gt;\r\n&lt;script&gt;\r\n    function putX(){\r\n        var xhr=new XMLHttpRequest();\r\n        xhr.open(\"put\",\"${pageContext.request.contextPath}\/rest\/users\");\/\/ajax\u6b63\u5e38\u53d1\u9001put\u8bf7\u6c42\r\n        xhr.setRequestHeader(\"content-type\",\"application\/x-www-form-urlencoded\");\r\n        xhr.send(\"id=1&amp;username=admin&amp;password=admin888\");\/\/\u643a\u5e26\u53c2\u6570\r\n    }\r\n&lt;\/script&gt;\r\n&lt;input type=\"button\" onclick=\"putX()\" value=\"ajax\"&gt;<\/pre>\n<p>\u89e3\u51b3\u65b9\u6848\uff1a<\/p>\n<pre>&lt;!--put\u548c delete\u8bf7\u6c42--&gt;\r\n&lt;filter&gt;\r\n  &lt;filter-name&gt;put&lt;\/filter-name&gt;\r\n  &lt;filter-class&gt;org.springframework.web.filter.HttpPutFormContentFilter&lt;\/filter-class&gt;\r\n&lt;\/filter&gt;\r\n&lt;filter-mapping&gt;\r\n  &lt;filter-name&gt;put&lt;\/filter-name&gt;\r\n  &lt;url-pattern&gt;\/*&lt;\/url-pattern&gt;\r\n&lt;\/filter-mapping&gt;<\/pre>\n<p><strong>\u573a\u666f3\uff1a\u76f4\u63a5\u53d1\u9001put\u8bf7\u6c42\uff0c\u4f46\u643a\u5e26json\u683c\u5f0f\u6570\u636e\u53c2\u6570<\/strong><\/p>\n<pre>function putXPlus(){\r\n    var xhr=new XMLHttpRequest();\r\n    xhr.open(\"put\",\"${pageContext.request.contextPath}\/rest\/users\");\/\/ajax\u6b63\u5e38\u53d1\u9001put\u8bf7\u6c42\r\n    xhr.setRequestHeader(\"content-type\",\"application\/json\");\r\n    xhr.send('{\"id\":1,\"username\":\"admin\",\"password\":\"admin888\"}');\/\/\u643a\u5e26json\u6570\u636e\u53c2\u6570\r\n}<\/pre>\n<p><strong>\u5206\u9875<\/strong><\/p>\n<pre>@GetMapping(\"\/user\/{pageNum}\/{pageSize}\")\r\n@ResponseBody\r\n public List&lt;Users&gt; queryAllUsers(@PathVariable Integer pageNum,@PathVariable Integer pageSize){\r\n    System.out.println(\"get\");\r\n    List&lt;Users&gt; users=new ArrayList&lt;&gt;();\r\n    return users;\r\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>2020javaweb\u6559\u7a0b\u4e4b\u9ad8\u7ea7\u6846\u67b6SpringMVC \u4e00.\u5f00\u53d1\u6d41\u7a0b 1.\u5bfc\u5165\u4f9d\u8d56:spring-webmvc [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-2963","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/www.9713job.com\/index.php?rest_route=\/wp\/v2\/posts\/2963","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.9713job.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.9713job.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.9713job.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.9713job.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2963"}],"version-history":[{"count":22,"href":"https:\/\/www.9713job.com\/index.php?rest_route=\/wp\/v2\/posts\/2963\/revisions"}],"predecessor-version":[{"id":2989,"href":"https:\/\/www.9713job.com\/index.php?rest_route=\/wp\/v2\/posts\/2963\/revisions\/2989"}],"wp:attachment":[{"href":"https:\/\/www.9713job.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2963"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.9713job.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2963"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.9713job.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2963"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}