SpringMVC文件的上传与下载

来源:互联网 发布:手机端淘宝首页宽屏 编辑:程序博客网 时间:2024/04/28 07:33


  《一配置webxml》**************************WEBXML*************************

<?xmlversion="1.0"encoding="UTF-8"?>

<web-appxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID"version="3.0">

 <display-name>demotextSpringMVC</display-name>

 <welcome-file-list>

   <welcome-file>index.html</welcome-file>

   <welcome-file>index.htm</welcome-file>

   <welcome-file>index.jsp</welcome-file>

   <welcome-file>default.html</welcome-file>

   <welcome-file>default.htm</welcome-file>

   <welcome-file>default.jsp</welcome-file>

 </welcome-file-list>

 <!--注册 -->

   <!--使用springMVC的时候核心servlet -->

   <servlet>

      <servlet-name>springMVC</servlet-name>

      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

      <!--如果不配置一下信息,会有个默认配置执行、/web/info/servlet-servlet.xml -->

      <init-param>

          <param-name>contextConfigLocation</param-name>

          <param-value>classpath:beans.xml</param-value>

      </init-param>

   </servlet>

   <!--配置路径 -->

   <servlet-mapping>

      <servlet-name>springMVC</servlet-name>

      <!--有两种写法 *.action / -->

      <url-pattern>/</url-pattern>

 

   </servlet-mapping>

    <!--进行乱码处理 -->

   <filter>

      <filter-name>codedeal</filter-name>

      <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

      <init-param>

          <param-name>encoding</param-name>

          <param-value>UTF-8</param-value>

      </init-param>

   </filter>

   <filter-mapping>

      <filter-name>codedeal</filter-name>

      <url-pattern>/*</url-pattern>

   </filter-mapping>

 

</web-app>


《二control的书写》********************control**********************

packagecom.libo.controller;

 

importjava.io.File;

importjava.io.IOException;

import java.io.UnsupportedEncodingException;

import java.util.List;

 

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;

import org.springframework.web.multipart.MultipartFile;

import org.springframework.web.servlet.ModelAndView;

 

import com.google.gson.JsonObject;

import com.libo.po.User;

 

@Controller

//这个类就变成控制器 value="/"相当于一个虚拟路径

public classTestController {

 

      @RequestMapping("/test")

      public String test() {

             System.out.println("执行了test");

             //默认采用的是转发

             return "/index.jsp";

      }

 

      @RequestMapping("/te/test1")

      public String test1() {

             System.out.println("执行了test1");

             // redirect:既可以重定向页面也可以重定向action

             return"redirect:/index.jsp";

             // return"redirect:/query.action";

      }

 

      //向页面传值方式1

      @RequestMapping("query")

      public String query(Model m) {

             // Model StringMVC提供必须确保Model m最后位置的形参

             //这个值从业务逻辑层拿来的值

             String name = "张三11";

             String pwd = "12311";

             m.addAttribute("name",name);

             m.addAttribute("pwd",pwd);

             return "/index.jsp";

      }

 

      //向页面传值方式二

      @RequestMapping("query1")

      public ModelAndView query1() {

             // Model StringMVC提供必须确保Model m最后位置的形参

             //这个值从业务逻辑层拿来的值

             String name = "张三";

             String pwd = "123";

             ModelAndView mv = newModelAndView();

             //构造方法的方式

             // ModelAndView mv = newModelAndView("index.jsp");

             mv.addObject("name",name);

             mv.addObject("pwd",pwd);

             //参数可以是一个页面也可以是一个 action

             mv.setViewName("/query.action");

             return mv;

      }

 

      //从页面取值

      @RequestMapping("save")

      public String save(String username, intuserpwd, Model m) {

             // Model StringMVC提供必须确保Model m最后位置的形参

             //这个值从业务逻辑层拿来的值

             String name = username;

             int pwd = userpwd;

             System.out.println(username +":" + userpwd);

             m.addAttribute("name",name);

             m.addAttribute("pwd",pwd);

             return "/index.jsp";

      }

 

      //从页面取值

      @RequestMapping("save1")

      public String save1(User user, Model m) {

             // Model StringMVC提供必须确保Model m最后位置的形参

             //这个值从业务逻辑层拿来的值

             System.out.println(user.getName()+ ":" + user.getPwd());

             //m.addAttribute("name", user.getName());

             // m.addAttribute("pwd",user.getPwd());

             m.addAttribute("user",user);

             return "/index.jsp";

      }

 

      //从页面取值

      @RequestMapping("save2")

      public String save2(User user, Model m) {

             // Model StringMVC提供必须确保Model m最后位置的形参

             //这个值从业务逻辑层拿来的值

             for (User iterable_element :user.getList()) {

                    System.out.println(iterable_element.getName());

             }

 

             System.out.println(user.getRole().getName());

             //m.addAttribute("name", user.getName());

             // m.addAttribute("pwd",user.getPwd());

             //m.addAttribute("user",user);

             return "my/myjsp";

      }

 

      //返回json数据方式1

      @RequestMapping(value="getJson",produces="text/html;charset=utf-8")

      @ResponseBody

      public String getJson() {

             JsonObject js = new JsonObject();

             js.addProperty("name","张三");

             js.addProperty("pwd","lisi");

             String str = js.toString();

             return str;

      }

 

      //返回json数据方式1

      @RequestMapping("getJson2")

      public void getJson2(HttpServletResponseresponse) {

             response.setCharacterEncoding("utf-8");

             response.setContentType("text/html;charset=utf-8");

             JsonObject js = new JsonObject();

             js.addProperty("name","张三");

             js.addProperty("pwd","lisi");

             String str = js.toString();

             try {

                    response.getWriter().write(str);

             } catch (IOException e) {

                    // TODO Auto-generatedcatch block

            

      @RequestMapping("upload")

      public String upload(MultipartFilefile,String name){

             System.out.println(name);

             System.out.println(file.getName());

             System.out.println(file.getOriginalFilename());

             System.out.println(file.getContentType());

             

             String filePath ="d:/upload";

             try {

                    file.transferTo(newFile(filePath+"/"+file.getOriginalFilename()));

             } catch (IllegalStateException e){

                    // TODO Auto-generatedcatch block

                    e.printStackTrace();

             } catch (IOException e) {

                    // TODO Auto-generatedcatch block

                    e.printStackTrace();

             }

             return "index";

      }

 

}

************************beans.xml*****************8***

<?xmlversion="1.0"encoding="UTF-8"?>

<beans

   xmlns="http://www.springframework.org/schema/beans"

   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xmlns:p="http://www.springframework.org/schema/p"

   xmlns:mvc="http://www.springframework.org/schema/mvc"

   xmlns:context="http://www.springframework.org/schema/context"

   xsi:schemaLocation="

   http://www.springframework.org/schema/beans

   http://www.springframework.org/schema/beans/spring-beans-3.1.xsd

   http://www.springframework.org/schema/mvc

   http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd

   http://www.springframework.org/schema/context

   http://www.springframework.org/schema/context/spring-context-3.1.xsd">

 

    <!--开启扫描注解 -->

   <context:component-scanbase-package="com.libo"></context:component-scan>

   <!--开启springMVC注解 -->

   <mvc:annotation-driven></mvc:annotation-driven>

   <context:component-scanbase-package="com.libo"></context:component-scan>

   <!--开启springMVC注解 -->

   <mvc:annotation-driven></mvc:annotation-driven>

   

   <!--前缀配置-->

      <!--配置响应的目录/content -->

   <beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver">

   <!--<propertyname="prefix" value="/context/"></property> -->

   

      

      <!--当返回页面的时候,配置忽略后缀名 -->

   <!-- <property name="suffix" value=".jsp"></property> -->

   </bean>

   <!--文件上传的文件解析器 -->

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

</beans>

*********************上传和下载**********************

必须配置beans.xml

@Controller

//这个类就变成控制器value="/"相当于一个虚拟路径

@RequestMapping("upload")

      public String upload(MultipartFilefile,String name){

             System.out.println(name);

             System.out.println(file.getName());

             System.out.println(file.getOriginalFilename());

             System.out.println(file.getContentType());

             

             String filePath ="d:/upload";

             try {

                    file.transferTo(newFile(filePath+"/"+file.getOriginalFilename()));

             } catch (IllegalStateException e){

                    // TODO Auto-generatedcatch block

                    e.printStackTrace();

             } catch (IOException e) {

                    // TODO Auto-generatedcatch block

                    e.printStackTrace();

             }

             return "index";

      }

*************************下载*****************************

@RequestMapping("down")

public void down(HttpServletResponse response) {

//第一步设置相应文件内容,告诉浏览器,现在要输出的是下载文件,不要用普通的html页面解析

response.setContentType("application/x-msdownload");

//设置下载的文件名字(可以从数据库中取出)

String FileName = "搭建SSH框架.ppt";

// URLEncoder.encode(FileName, "utf-8")作用更改编码格式 url的编码格式转码

//第二步,告诉浏览器,需要用户自定义选择下载,不用浏览器客户端自动解析

try {

response.setHeader("Content-Disposition","attachment;filename="

+ URLEncoder.encode(FileName, "utf-8"));

 

//第三步使用流写到浏览器上

OutputStream FileOut = response.getOutputStream();

//定义需要下载的文件位置,不一定文件要在webRoot下(可以数据库记录文件位置,然后使用这个能找到就行)

String DownFileName = "d:/file/3、搭建SSH框架.ppt";

//使用流读出来然后写入

InputStream in = new FileInputStream(DownFileName);

//Spring提供的

//FileCopyUtils.copy(in, FileOut);

byte[] buffer = new byte[in.available()];

//通过流读出到内存

in.read(buffer);

//写入流向客户端

FileOut.write(buffer);

//关闭流

in.close();

FileOut.close();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

 

}

 

0 0