springmvc的上传与下载
2018-01-22 20:04
423 查看
文件上传和下载
使用SpringMvc包装的解析器(CommonsMultipartResolver)进行上传控制,需要引入apache的common-fileupload组件包
1.设置表单属性
<form action="<%=path %>/fileUpload.htm" method="post" enctype="multipart/form-data">
文件 <input type="file" name="myImg"/>
</form>
2.springmvc配置文件中添加文件解析器
<!-- 名称必须使用 multipartResolver 因为spring容器使用名称注入 文件上传解析器-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 限制上传文件大小 5M -->
<property name="maxUploadSize" value="5242880"></property>
</bean>
3.action方法接收文件
@RequestMapping(value="/saveFood",method=RequestMethod.POST)
public String saveFood(Food food,MultipartFile imageUrl) throws Exception{
//获取文件的名字
String imagename = imageUrl.getOriginalFilename();
//将文件名存入对象 该对象的数据用于存入数据库
food.setImag(imagename);
//设置文件的存储路径 (该路径是项目发布后的路径,便于查看是用相对路径)
String absPath="E:/apache-tomcat-6.0.45/webapps/sml/images/"+imagename;
//将文件写入设置好的路径
imageUrl.transferTo(new File(absPath));
//将对象里的数据写入数据库
foodSerice.saveFood(food);
}
springMvc使用消息转换器ByteArrayHttpMessageConverter设置文件内容为响应体,通过设置响应头ContentDisposition通知浏览器下载的附近名称
<span style="white-space:pre;"> </span>@RequestMapping(value="/download",method=RequestMethod.GET)
public ResponseEntity<byte[]> download(String imagePath) throws Exception{
//文件路径
String absPath="E:/apache-tomcat-6.0.45/webapps/sml/images/"+imagePath;
//需要下载的目录文件
File file = new File(absPath);
//设置响应头
HttpHeaders headers = new HttpHeaders();
//设置下载的文件的名称 转换文件名的编码
headers.setContentDispositionFormData("attachment", URLEncoder.encode(imagePath,"UTF-8"));
//读取目标文件为二进制数组
byte[] fileByte = FileCopyUtils.copyToByteArray(file);
//构建ResponseEntity对象
ResponseEntity<byte[]> re = new ResponseEntity<byte[]>(fileByte,headers,HttpStatus.CREATED);
//将对象返回
return re;
}
例:上传下载
依赖jar包
web.xml配置文件
<
f177
/span><?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- 解决乱码的配置 -->
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<!-- 设置request 字符集 -->
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<!-- 设置response 字符集 -->
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 请求method支持 put和delete必须添加 过滤器 -->
<filter>
<filter-name>myFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>myFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- springmvc配置 -->
<servlet>
<servlet-name>mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
springmvc配置(这里没有和spring配置一起使用)
<?xml version="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:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd ">
<context:component-scan base-package="cn"></context:component-scan> <!-- 扫描cn所有的类 -->
<context:property-placeholder location="classpath:/cn/et/web/jdbc.properties"/> <!-- 扫描jdbc.properties -->
<!-- springmvc 配置拦截 / 所有资源都被拦截 图片无法展示 将除控制层以外的资源交回给servlet处理-->
<mvc:default-servlet-handler/>
<!-- 将springmvc注解的action交给springmvc处理 -->
<mvc:annotation-driven></mvc:annotation-driven>
<!-- 启用文件上传 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 限制上传文件大小 5M -->
<property name="maxUploadSize" value="5242880"></property>
</bean>
<!--连接数据库四要素 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <!-- 创建一个连接数据库的工具 -->
<property name="url" value="${url}" ></property> <!-- 添加里面的属性 -->
<property name="username" value="${userid}" ></property>
<property name="password" value="${password}" ></property>
<property name="driverClassName" value="${driverClass}" ></property>
</bean>
<!-- 事务管理器 不再使用jdbc的commit和rollback 必须由事务管理器提供 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 定义通知 通知的代码 spring已经实现 -->
<tx:advice id="myAdvise" transaction-manager="transactionManager">
<!-- 设置拦截的方法 name="*" 表示除了下面的三个开头的方法其他的都拦截 read-only="true 表示只读 不进行操作"-->
<tx:attributes>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="add*"/>
<tx:method name="delete*"/>
<tx:method name="*" read-only="true"/>
</tx:attributes>
</tx:advice>
<!-- 定义一个切点 -->
<aop:config>
<aop:pointcut expression="execution(* cn.*..*.service.*.*(..))" id="myPoint"/>
<aop:advisor advice-ref="myAdvise" pointcut-ref="myPoint"/>
</aop:config>
</beans>
前端页面-显示-下载
添加-上传
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>无线点餐平台</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div id="TitleArea_Title_Content">添加新菜品</div>
<!-- 主内容区域(数据列表或表单显示) -->
<div>
<!-- 表单内容 -->
<form action="${pageContext.request.contextPath}/addFood" method="post" enctype="multipart/form-data">
<!-- 本段表单字段 -->
<table cellpadding="10" cellspacing="0">
<tr>
<td width="80px">菜名</td>
<td><input type="text" name="foodName" /></td>
</tr>
<tr>
<td>价格</td>
<td><input type="text" name="price" /></td>
</tr>
<tr>
<td>简介</td>
<td><textarea name="introduce" ></textarea></td>
</tr>
<tr>
<td width="80px">菜品图片</td>
<td>
<input type="file" name="imageUrl"/>
</td>
</tr>
</table>
<!-- 表单操作 -->
<div>
<input type="submit" value="添加">
<a href="javascript:history.go(-1);" class="FunctionButton">返回</a>
</div>
</form>
</div>
</body>
</html>
控制层
package cn.et.web.controller;
import java.io.File;
import java.net.URLEncoder;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartFile;
import com.sun.org.apache.xpath.internal.operations.Mod;
import cn.et.web.service.FoodService;
import cn.et.web.util.PageTools;
@Controller
public class FoodController {
@Autowired
FoodService service;
/**
* 下载
*/
@RequestMapping(value="/download",method=RequestMethod.GET)
public ResponseEntity<byte[]> updateFood(String imagePath) throws Exception{
String absPath ="D:\\软件\\myeclipse\\springmvc_project\\WebRoot\\images\\"+imagePath;
String fileName =imagePath;
//需要下载的目标文件
File file =new File(absPath);
//设置响应头
HttpHeaders hh =new HttpHeaders();
//设置下载的文件的名称
hh.setContentDispositionFormData("attachment", URLEncoder.encode(fileName,"UTF-8"));
//读取目标文件为二进制数组
byte[] fileByte =FileCopyUtils.copyToByteArray(file);
//构建ResponseEntity对象
ResponseEntity<byte[]> re =new ResponseEntity<byte[]>(fileByte,hh,HttpStatus.CREATED);
return re;
}
/**
* 添加
*/
@RequestMapping(value="/addFood",method=RequestMethod.POST)
public String addFood(MultipartFile imageUrl,String foodName,String price,String introduce,Model model) throws Exception{
String fileName =imageUrl.getOriginalFilename();
String path ="D:\\软件\\myeclipse\\springmvc_project\\WebRoot\\images\\"+fileName;
imageUrl.transferTo(new File(path));
service.addFood(foodName, price, introduce, fileName);
return queryFood(foodName,1, model);
}
/**
* 删除
*/
@RequestMapping(value="/deleteFood/{id}",method=RequestMethod.DELETE)
public String deleteFood(@PathVariable String id , Model model) throws Exception{
service.deleteFood(id);
return queryFood(null,1, model);
}
/**
* 修改
*/
@RequestMapping(value="/updateFood/{id}",method=RequestMethod.POST)
public String updateFood(@PathVariable String id,String foodname,String price,String intro,MultipartFile imagepath, Model model) throws Exception{
String fileName =imagepath.getOriginalFilename();
String path ="D:\\软件\\myeclipse\\springmvc_project\\WebRoot\\images\\"+fileName;
imagepath.transferTo(new File(path));
service.updateFood(id, foodname, price, intro, fileName);
return queryFood(foodname,1, model);
}
/**
*查看所有信息
*/
@RequestMapping(value="/showFood",method=RequestMethod.GET)
public String queryFood(String fname,Integer curPage,Model model){
if (curPage==null) {
curPage=1;
}
PageTools getqueryAll = service.getqueryAll(fname, curPage);
model.addAttribute("foodList", getqueryAll);
return "/detail/foodList.jsp";
}
/**
*查看所有信息
*/
@RequestMapping(value="/particulars/{id}",method=RequestMethod.GET)
public String foodId(@PathVariable String id,Model model){
List<Map<String, Object>> foodid = service.foodId(id);
System.out.println(foodid);
model.addAttribute("foodid", foodid);
return "/detail/particulars.jsp";
}
}
jdbc
url=jdbc:mysql://localhost:3306/test
driverClass=com.mysql.jdbc.Driver
userid=root
password=88888888
上传
下载
使用SpringMvc包装的解析器(CommonsMultipartResolver)进行上传控制,需要引入apache的common-fileupload组件包
1.设置表单属性
<form action="<%=path %>/fileUpload.htm" method="post" enctype="multipart/form-data">
文件 <input type="file" name="myImg"/>
</form>
2.springmvc配置文件中添加文件解析器
<!-- 名称必须使用 multipartResolver 因为spring容器使用名称注入 文件上传解析器-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 限制上传文件大小 5M -->
<property name="maxUploadSize" value="5242880"></property>
</bean>
3.action方法接收文件
@RequestMapping(value="/saveFood",method=RequestMethod.POST)
public String saveFood(Food food,MultipartFile imageUrl) throws Exception{
//获取文件的名字
String imagename = imageUrl.getOriginalFilename();
//将文件名存入对象 该对象的数据用于存入数据库
food.setImag(imagename);
//设置文件的存储路径 (该路径是项目发布后的路径,便于查看是用相对路径)
String absPath="E:/apache-tomcat-6.0.45/webapps/sml/images/"+imagename;
//将文件写入设置好的路径
imageUrl.transferTo(new File(absPath));
//将对象里的数据写入数据库
foodSerice.saveFood(food);
}
springMvc使用消息转换器ByteArrayHttpMessageConverter设置文件内容为响应体,通过设置响应头ContentDisposition通知浏览器下载的附近名称
<span style="white-space:pre;"> </span>@RequestMapping(value="/download",method=RequestMethod.GET)
public ResponseEntity<byte[]> download(String imagePath) throws Exception{
//文件路径
String absPath="E:/apache-tomcat-6.0.45/webapps/sml/images/"+imagePath;
//需要下载的目录文件
File file = new File(absPath);
//设置响应头
HttpHeaders headers = new HttpHeaders();
//设置下载的文件的名称 转换文件名的编码
headers.setContentDispositionFormData("attachment", URLEncoder.encode(imagePath,"UTF-8"));
//读取目标文件为二进制数组
byte[] fileByte = FileCopyUtils.copyToByteArray(file);
//构建ResponseEntity对象
ResponseEntity<byte[]> re = new ResponseEntity<byte[]>(fileByte,headers,HttpStatus.CREATED);
//将对象返回
return re;
}
例:上传下载
依赖jar包
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>SpringMvcLession</groupId> <artifactId>SpringMvcLession</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name/> <description /> <dependencies> <!-- 导入springmvc核心配置 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.2.0.RELEASE</version> </dependency> <!-- 导入jdbc的jar包 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.2.0.RELEASE</version> </dependency> <!-- 导入mysql的jar包 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.26</version> </dependency> <dependency> <groupId>aopalliance</groupId> <artifactId>aopalliance</artifactId> <version>1.0</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.8.12</version> </dependency> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.23</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.3</version> </dependency> <!-- 导入javaee的jar包 --> <dependency> <groupId>org.apache.openejb</groupId> <artifactId>javaee-api</artifactId> <version>5.0-1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.faces</groupId> <artifactId>jsf-api</artifactId> <version>1.2_04</version> <scope>provided</scope> </dependency> <!-- 导入jstl的jar包 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> <!-- provided 默认的不会自动加载到当前项目的bin目录 --> <!-- compile 会自动加载到当前项目的bin目录 --> <scope>compile</scope> </dependency> <!-- 导入jsp的jar包 --> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> <scope>compile</scope> </dependency> <dependency> <groupId>javax.faces</groupId> <artifactId>jsf-impl</artifactId> <version>1.2_04</version> <scope>provided</scope> </dependency> </dependencies> <build> <sourceDirectory>${basedir}/src</sourceDirectory> <outputDirectory>${basedir}/WebRoot/WEB-INF/classes</outputDirectory> <resources> <resource> <directory>${basedir}/src</directory> <excludes> <exclude>**/*.java</exclude> </excludes> </resource> </resources> <plugins> <plugin> <artifactId>maven-war-plugin</artifactId> <configuration> <webappDirectory>${basedir}/WebRoot</webappDirectory> <warSourceDirectory>${basedir}/WebRoot</warSourceDirectory> </configuration> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.5</source> <target>1.5</target> </configuration> </plugin> </plugins> </build> </project>
web.xml配置文件
<
f177
/span><?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- 解决乱码的配置 -->
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<!-- 设置request 字符集 -->
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<!-- 设置response 字符集 -->
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 请求method支持 put和delete必须添加 过滤器 -->
<filter>
<filter-name>myFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>myFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- springmvc配置 -->
<servlet>
<servlet-name>mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
springmvc配置(这里没有和spring配置一起使用)
<?xml version="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:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd ">
<context:component-scan base-package="cn"></context:component-scan> <!-- 扫描cn所有的类 -->
<context:property-placeholder location="classpath:/cn/et/web/jdbc.properties"/> <!-- 扫描jdbc.properties -->
<!-- springmvc 配置拦截 / 所有资源都被拦截 图片无法展示 将除控制层以外的资源交回给servlet处理-->
<mvc:default-servlet-handler/>
<!-- 将springmvc注解的action交给springmvc处理 -->
<mvc:annotation-driven></mvc:annotation-driven>
<!-- 启用文件上传 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 限制上传文件大小 5M -->
<property name="maxUploadSize" value="5242880"></property>
</bean>
<!--连接数据库四要素 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <!-- 创建一个连接数据库的工具 -->
<property name="url" value="${url}" ></property> <!-- 添加里面的属性 -->
<property name="username" value="${userid}" ></property>
<property name="password" value="${password}" ></property>
<property name="driverClassName" value="${driverClass}" ></property>
</bean>
<!-- 事务管理器 不再使用jdbc的commit和rollback 必须由事务管理器提供 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 定义通知 通知的代码 spring已经实现 -->
<tx:advice id="myAdvise" transaction-manager="transactionManager">
<!-- 设置拦截的方法 name="*" 表示除了下面的三个开头的方法其他的都拦截 read-only="true 表示只读 不进行操作"-->
<tx:attributes>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="add*"/>
<tx:method name="delete*"/>
<tx:method name="*" read-only="true"/>
</tx:attributes>
</tx:advice>
<!-- 定义一个切点 -->
<aop:config>
<aop:pointcut expression="execution(* cn.*..*.service.*.*(..))" id="myPoint"/>
<aop:advisor advice-ref="myAdvise" pointcut-ref="myPoint"/>
</aop:config>
</beans>
前端页面-显示-下载
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'particulars.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <table width="100%" border="1" cellspacing="0" cellpadding="10"> <tr align="center" valign="middle" id="TableTitle"> <th>图片</th> <th>菜名</th> <th>价格</th> <th>描述</th> </tr> <c:forEach var="idtemp" items="${requestScope.foodid}"> <tr class="TableDetail1"> <td width="10%" align="left" > <a href="${pageContext.request.contextPath}/download?imagePath=${pageScope.idtemp.imagepath}"> <img style='width:200px; height:100px;' src="${pageContext.request.contextPath}//images//${pageScope.idtemp.imagepath}"> </a> </td> <td align="center">${pageScope.idtemp.foodname}</td> <td align="center">${pageScope.idtemp.price}</td> <td align="center">${pageScope.idtemp.intro}</td> </tr> </c:forEach> </table> </body> </html>
添加-上传
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>无线点餐平台</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div id="TitleArea_Title_Content">添加新菜品</div>
<!-- 主内容区域(数据列表或表单显示) -->
<div>
<!-- 表单内容 -->
<form action="${pageContext.request.contextPath}/addFood" method="post" enctype="multipart/form-data">
<!-- 本段表单字段 -->
<table cellpadding="10" cellspacing="0">
<tr>
<td width="80px">菜名</td>
<td><input type="text" name="foodName" /></td>
</tr>
<tr>
<td>价格</td>
<td><input type="text" name="price" /></td>
</tr>
<tr>
<td>简介</td>
<td><textarea name="introduce" ></textarea></td>
</tr>
<tr>
<td width="80px">菜品图片</td>
<td>
<input type="file" name="imageUrl"/>
</td>
</tr>
</table>
<!-- 表单操作 -->
<div>
<input type="submit" value="添加">
<a href="javascript:history.go(-1);" class="FunctionButton">返回</a>
</div>
</form>
</div>
</body>
</html>
控制层
package cn.et.web.controller;
import java.io.File;
import java.net.URLEncoder;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartFile;
import com.sun.org.apache.xpath.internal.operations.Mod;
import cn.et.web.service.FoodService;
import cn.et.web.util.PageTools;
@Controller
public class FoodController {
@Autowired
FoodService service;
/**
* 下载
*/
@RequestMapping(value="/download",method=RequestMethod.GET)
public ResponseEntity<byte[]> updateFood(String imagePath) throws Exception{
String absPath ="D:\\软件\\myeclipse\\springmvc_project\\WebRoot\\images\\"+imagePath;
String fileName =imagePath;
//需要下载的目标文件
File file =new File(absPath);
//设置响应头
HttpHeaders hh =new HttpHeaders();
//设置下载的文件的名称
hh.setContentDispositionFormData("attachment", URLEncoder.encode(fileName,"UTF-8"));
//读取目标文件为二进制数组
byte[] fileByte =FileCopyUtils.copyToByteArray(file);
//构建ResponseEntity对象
ResponseEntity<byte[]> re =new ResponseEntity<byte[]>(fileByte,hh,HttpStatus.CREATED);
return re;
}
/**
* 添加
*/
@RequestMapping(value="/addFood",method=RequestMethod.POST)
public String addFood(MultipartFile imageUrl,String foodName,String price,String introduce,Model model) throws Exception{
String fileName =imageUrl.getOriginalFilename();
String path ="D:\\软件\\myeclipse\\springmvc_project\\WebRoot\\images\\"+fileName;
imageUrl.transferTo(new File(path));
service.addFood(foodName, price, introduce, fileName);
return queryFood(foodName,1, model);
}
/**
* 删除
*/
@RequestMapping(value="/deleteFood/{id}",method=RequestMethod.DELETE)
public String deleteFood(@PathVariable String id , Model model) throws Exception{
service.deleteFood(id);
return queryFood(null,1, model);
}
/**
* 修改
*/
@RequestMapping(value="/updateFood/{id}",method=RequestMethod.POST)
public String updateFood(@PathVariable String id,String foodname,String price,String intro,MultipartFile imagepath, Model model) throws Exception{
String fileName =imagepath.getOriginalFilename();
String path ="D:\\软件\\myeclipse\\springmvc_project\\WebRoot\\images\\"+fileName;
imagepath.transferTo(new File(path));
service.updateFood(id, foodname, price, intro, fileName);
return queryFood(foodname,1, model);
}
/**
*查看所有信息
*/
@RequestMapping(value="/showFood",method=RequestMethod.GET)
public String queryFood(String fname,Integer curPage,Model model){
if (curPage==null) {
curPage=1;
}
PageTools getqueryAll = service.getqueryAll(fname, curPage);
model.addAttribute("foodList", getqueryAll);
return "/detail/foodList.jsp";
}
/**
*查看所有信息
*/
@RequestMapping(value="/particulars/{id}",method=RequestMethod.GET)
public String foodId(@PathVariable String id,Model model){
List<Map<String, Object>> foodid = service.foodId(id);
System.out.println(foodid);
model.addAttribute("foodid", foodid);
return "/detail/particulars.jsp";
}
}
jdbc
url=jdbc:mysql://localhost:3306/test
driverClass=com.mysql.jdbc.Driver
userid=root
password=88888888
上传
下载
相关文章推荐
- SpringMVC和jQuery的Ajax简单文件上传下载示例
- 经测试能用springmvc的文件上传下载并解决ie8文件上传后提示下载
- 用SpringMVC实现的上传下载
- SpringMVC文件下载与上传
- springmvc文件上传下载
- SpringMVC ajax技术无刷新文件上传下载删除示例
- SpringMVC---实现文件上传与下载
- SpringMVC实现文件的上传和下载
- SpringMVC实现上传和下载
- springMVC上传下载
- springMVC,Excel上传下载
- springmvc+ftp文件上传下载+MultipartFile
- SpringMVC ajax技术无刷新文件上传下载删除示例
- springMVC实现文件上传下载
- springmvc上传下载文件
- MyBatis与SpringMVC相结合实现文件上传、下载功能
- SpringMVC 文件上传下载
- springmvc文件上传下载简单实现案例(ssm框架使用)
- 使用springmvc 和nginx 搭建一个文件上传下载服务器
- SpringMVC的文件上传下载