<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    java隨記

    堅持就是勝利!

     

    springboot文件上傳等雜項

    1,springboot中文件上傳
    springmvc中配置文件上傳寫法在boot并不支持
    @Bean
    public MultipartResolver multipartResolver() {
    CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
    multipartResolver.setMaxUploadSize(100000000);
    return multipartResolver;
    }
    得這樣寫
      @Bean
       public MultipartConfigElement multipartConfigElement() {
           MultipartConfigFactory factory = new MultipartConfigFactory();
           factory.setMaxFileSize("128KB");
           factory.setMaxRequestSize("128KB");
           return factory.createMultipartConfig();
       }

    2,攔截器
    繼承HandlerInterceptorAdapter確實可以攔截,但是afterCompletion在preHandle方法返回false后并
    不執行,那么只能在preHandle中處理了,比如轉向,ajax請求返回內容

    3,關于快速跳轉
    有時候只是做一個簡單的跳轉,可以集中寫在這里
    public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/index").setViewName("/index");
           registry.addViewController("/converter").setViewName("/converter");
    }

    完整示例:
    package com.example.demo.config;
    import java.util.List;
    import javax.servlet.MultipartConfigElement;
    import org.springframework.boot.web.servlet.MultipartConfigFactory;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
    import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
    import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
    import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
    import org.springframework.web.servlet.view.InternalResourceViewResolver;
    import org.springframework.web.servlet.view.JstlView;
    //其中默認配置的 /** 映射到 /static (或/public、/resources、/META-INF/resources) 
    //其中默認配置的 /webjars/** 映射到 classpath:/META-INF/resources/webjars/ 
    /*
    spring.mvc.static-path-pattern=
    @Configuration
    public class MyWebAppConfigurer extends WebMvcConfigurerAdapter {
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/myres/**").addResourceLocations("classpath:/myres/");
    //使用外部目錄 registry.addResourceHandler("/api_files/**").addResourceLocations("file:D:/data/api_files");
    super.addResourceHandlers(registry);
    }
    @Bean
    public InternalResourceViewResolver viewResolver() {
    InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
    viewResolver.setPrefix("/WEB-INF/views/");
    viewResolver.setSuffix(".jsp");
    viewResolver.setViewClass(JstlView.class);
    return viewResolver;
    }
    //攔截器
    @Override
    public void addInterceptors(InterceptorRegistry registry) {// 2
    InterceptorRegistration i=registry.addInterceptor(demoInterceptor());
    i.addPathPatterns("/jsp/*");//只攔截 /jsp/* 的action
    }
    @Bean
    // 1  配置攔截器
    public DemoInterceptor demoInterceptor() {
    return new DemoInterceptor();
    }
    //快速轉向
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
    // registry.addViewController("/index").setViewName("/index");
    registry.addViewController("/toUpload").setViewName("/upload");
    registry.addViewController("/converter").setViewName("/converter");
    registry.addViewController("/sse").setViewName("/sse");
    registry.addViewController("/async").setViewName("/async");
    }
       @Bean
       public MultipartConfigElement multipartConfigElement() {
           MultipartConfigFactory factory = new MultipartConfigFactory();
           factory.setMaxFileSize("128KB");
           factory.setMaxRequestSize("128KB");
           return factory.createMultipartConfig();
       }
    }
    攔截器類
    public class DemoInterceptor extends HandlerInterceptorAdapter {// 1
    @Override
    public boolean preHandle(HttpServletRequest request, // 2
    HttpServletResponse response, Object handler) throws Exception {
    long startTime = System.currentTimeMillis();
    System.out.println("本次始請求處理時間為:" + startTime + "ms");
    request.setAttribute("startTime", startTime);
    if (request.getHeader("x-requested-with") != null
    && request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")) {
    response.setHeader("sessionstatus", "timeout"); // 響應頭設置session狀態
    } else {
    response.sendRedirect("/");
    }
    return false;
    }
    @Override
    public void postHandle(HttpServletRequest request, // 3
    HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
    long startTime = (Long) request.getAttribute("startTime");
    request.removeAttribute("startTime");
    long endTime = System.currentTimeMillis();
    System.out.println("本次請求處理時間??:" + new Long(endTime - startTime) + "ms");
    request.setAttribute("handlingTime", endTime - startTime);
    }
    }
    文件上傳頁面upload.jsp
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>upload page</title>
    </head>
    <body>
    <div class="upload">
    <form action="upload" enctype="multipart/form-data" method="post">
    <input type="file" name="file"/><br/>
    <input type="submit" value="上傳">
    </form>
    </div>
    </body>
    </html>

    文件上傳控制器類

    @Controller
    public class UploadController {
    @RequestMapping(value = "/upload",method = RequestMethod.POST)
    //MultipartFile[] ,涓婁紶澶氫釜鏂囦歡
    public @ResponseBody String upload(@RequestParam("file") MultipartFile file) {//1
    try {
    FileUtils.writeByteArrayToFile(new File("e:/upload/"+file.getOriginalFilename()),
    file.getBytes()); //2
    return "ok";
    } catch (IOException e) {
    e.printStackTrace();
    return "wrong";
    }
    }
    }

    posted on 2017-09-18 11:01 傻 瓜 閱讀(1311) 評論(0)  編輯  收藏 所屬分類: 雜項

    導航

    統計

    常用鏈接

    留言簿(7)

    我參與的團隊

    隨筆分類

    隨筆檔案

    文章分類

    友情鏈接

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 一本无码人妻在中文字幕免费 | 亚洲国产精品综合久久20| 国产一级淫片a视频免费观看| 91成人在线免费视频| 一级黄色毛片免费看| 亚洲av无码专区在线电影天堂| 亚洲成人网在线播放| 亚洲国产一区在线| 中文字幕一精品亚洲无线一区| 免费无码又爽又高潮视频 | 亚洲最新视频在线观看| 亚洲午夜久久久影院| 亚洲片国产一区一级在线观看 | 亚洲一级毛片在线观| 亚洲国产精品美女| 亚洲精品视频在线播放| 中文字幕亚洲综合精品一区| 国产aⅴ无码专区亚洲av| 亚洲日韩欧洲无码av夜夜摸| 在线观看国产区亚洲一区成人| 国产色婷婷精品免费视频| 美女黄网站人色视频免费国产| 97视频热人人精品免费| 国产福利在线免费| 999国内精品永久免费视频| 麻花传媒剧在线mv免费观看| 久久久久久国产精品免费无码| 国产成人精品一区二区三区免费| 成全动漫视频在线观看免费高清版下载| 国产免费伦精品一区二区三区| 国产福利在线观看永久免费| 72pao国产成视频永久免费| 91视频免费观看高清观看完整| 99久久成人国产精品免费 | 亚洲精品视频免费在线观看| 亚洲欧洲日韩国产| 亚洲精品国产精品国自产网站 | 国产一级理论免费版| 亚洲?V乱码久久精品蜜桃 | 久久免费视频一区| 91成人免费观看在线观看|