MVC文件上传 及其他

文件上传

  1.添加jar包,maven中

dependency>
commons-fileupload
commons-fileupload
1.3.3

  
  2.在springxml文件中,设置上传文件的配置信息

bean id="multipartResolver"

    p:defaultEncoding="UTF-8"
  p:maxUploadSize="10485760"
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver"


切记 id一定要写成上面的名字

    public void upd(MultipartFile file1, String username, HttpServletRequest request) throws IOException {
        byte b[] = file1.getBytes();
        // 获得文件的运行路径,及文件的下载名称
        File file = new File(request.getServletContext().getRealPath("WEB-INF/upload"), file1.getOriginalFilename());
        FileOutputStream fileOutputStream = new FileOutputStream(file);
        fileOutputStream.write(b);
        fileOutputStream.close();
    }

下载代码

    public void xia(MultipartFile file1, HttpServletResponse response) throws IOException {
        //说明文件路径及文件类型 及上传的编码格式
        File file = new File("F:\\一些软件\\压缩包\\Keymaker-CORE(思维导图).rar");
        response.setContentType("application/x-rar-compressed");
        response.setCharacterEncoding("UTF-8");

        //得到父路径名称,进行替换的到子类的文件名,并说明子类的文件名格式
        String name = file.getCanonicalPath();
        name = name.replace(file.getParent() + "\\", "");
        String filename = new String(name.getBytes(), "ISO-8859-1");

        //将文件名称带入到头信息中,并说明是下载
        response.setHeader("Content-Disposition", "attachment;filename=" + filename);
        
        //从response中拿到outputStrem流
        //用FileInputStream从文件上读上来 用outputStrem通过tcp进行传输
        FileInputStream fileInputStream = new FileInputStream(file);
        byte by[] = new byte[8 * 1024];
        int leng;
        OutputStream outputStream = response.getOutputStream();
        while ((leng = fileInputStream.read(by)) != -1) {
            outputStream.write(by, 0, leng);
            outputStream.flush();
        }
        fileInputStream.close();
    }

defaultServlet

  因为mvc中静态资源进行了拦截所以要在配置文件中配置

!--优先级低 所有的类都没找见他再去找-->
mvc:default-servlet-handler>

mvc:resources 资源配置
因为我们有时候需要将静态资源放在WEB-INF下,当我们配置,外界就可以访问我们指定的 WEB-INF指定的夹子(好处打包可以将静态资源打包进去)
mvc:resources mapping="/css/**" location="/WEB-INF/css/" />
//mapping 网络访问路径

//location 本地文件夹路径

拦截器就是对你的访问进行拦截(可以进行合法型判断,登录做记录,日志等操作),也可以在返回参数的时候补参数
拦截器开发

    1.写一个普通类型实现接口  HandlerInterceptor
    2.里面有三个方法重写
           preHandle(action业务方法请求之前进行访问) 参数设置 true 继续向下走 false 终止
           下面两个给力请求头和响应头 可以进行补参 等等操作
           postHandle(action中的业务方法执行完毕后进行试图渲染前的调用)
           afterCompletion(视图渲染后的调用)
    3.配置文件信息
      mvc:interceptors>

mvc:interceptor>

    <mvc:mapping path="/admin/**"/>//网络访问路径
    <mvc:exclude-mapping path="/admin/test2"/> 受到管理的对象
    <bean class="com.kaige123.view.TestHandlerInterceptor"/>
</mvc:interceptor>

上一篇:JSH1基本配置 (JSF1.1 + Spring2.0 + Hibernate3.1)


下一篇:Spring Boot 日志配置