zoukankan      html  css  js  c++  java
  • SSM整合 上传下载之添加商品

    上传下载细节:

     导入xml配置文件!!

     

    Controller中要配置存储路径,调用transferto上传文件

     

    上传图片 要将图片的类设置为 MultipartFile

     

    图片下载:

    源码:

    页面展示:

    源码:

    一、建表:

     1 DROP TABLE IF EXISTS `t_house`;
     2 CREATE TABLE `t_house` (
     3   `h_id` int(11) NOT NULL AUTO_INCREMENT,
     4   `h_name` varchar(64) NOT NULL,
     5   `h_rect` double(10,2) NOT NULL,
     6   `h_date` date NOT NULL,
     7   `h_loc1` varchar(255) NOT NULL,
     8   `h_loc2` varchar(255) NOT NULL,
     9   `h_img` varchar(120) NOT NULL,
    10   `h_userId` int(11) NOT NULL,
    11   PRIMARY KEY (`h_id`)
    12 ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

    二、首先注入maven依赖:

    pom.xml

     1 <dependency>
     2       <groupId>org.projectlombok</groupId>
     3       <artifactId>lombok</artifactId>
     4       <version>1.18.4</version>
     5       <scope>provided</scope>
     6     </dependency>
     7     <!--文件上传下载 -->
     8     <dependency>
     9       <groupId>commons-io</groupId>
    10       <artifactId>commons-io</artifactId>
    11       <version>2.4</version>
    12     </dependency>
    13     <!--用来帮助进行IO功能开发 -->
    14     <dependency>
    15       <groupId>commons-fileupload</groupId>
    16       <artifactId>commons-fileupload</artifactId>
    17       <version>1.3</version>
    18     </dependency>

    三、添加配置:

    springmvc.xml

    1 <!-- 多部分文件上传 M kb byte-->
    2     <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    3         <property name="maxUploadSize" value="104857600"/>
    4         <property name="defaultEncoding" value="UTF-8"></property>
    5     </bean>

    四、编辑插入语句:

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
     3 <mapper namespace="com.etc.dao.HouseDAO">
     4     <insert id="add">
     5  INSERT INTO `t_house` (
     6     `h_name`,
     7     `h_rect`,
     8     `h_date`,
     9     `h_loc1`,
    10     `h_loc2`,
    11     `h_img`,
    12     `h_userId`
    13 )
    14 VALUES
    15     (
    16         #{hName},
    17         #{hRect},
    18         #{hDate},
    19         #{hLoc1},
    20         #{hLoc2},
    21         #{hImg},
    22         #{userId}
    23     );
    24 </insert>
    25 
    26 
    27 </mapper>

    五、建立实体类:

    HouseVO :
     1 package com.etc.Vo;
     2 
     3 import lombok.AllArgsConstructor;
     4 import lombok.Data;
     5 import lombok.NoArgsConstructor;
     6 import org.springframework.format.annotation.DateTimeFormat;
     7 import org.springframework.web.multipart.MultipartFile;
     8 
     9 import java.util.Date;
    10 
    11 @Data
    12 @AllArgsConstructor
    13 @NoArgsConstructor
    14 public class HouseVO {
    15     private String title;
    16     private Double floorage;
    17     @DateTimeFormat(pattern = "yyyy-MM-dd")
    18     private Date houseDate;
    19     private String districtId;
    20     private String streetId;
    21     private MultipartFile hImg;
    22 }
    House :
     1 package com.etc.entity;
     2 
     3 import lombok.AllArgsConstructor;
     4 import lombok.Data;
     5 import lombok.NoArgsConstructor;
     6 
     7 import java.util.Date;
     8 
     9 @Data
    10 @AllArgsConstructor
    11 @NoArgsConstructor
    12 public class House {
    13     private Integer hId;
    14     private String hName;
    15     private Double hRect;
    16     private Date hDate;
    17     private String hLoc1;
    18     private String hLoc2;
    19     private String hImg;
    20     private int userId;
    21 }
    HouseConverter :
     1 package com.etc.converter;
     2 
     3 import com.etc.Vo.HouseVO;
     4 import com.etc.entity.House;
     5 
     6 public class HouseConverter {
     7     public static House convert(HouseVO houseVO, String img,int id) {
     8         House house = new House();
     9         house.setHName(houseVO.getTitle());
    10         house.setHRect(houseVO.getFloorage());
    11         house.setHDate(houseVO.getHouseDate());
    12         house.setHLoc1(houseVO.getDistrictId());
    13         house.setHLoc2(houseVO.getStreetId());
    14         house.setHImg(img);
    15         house.setUserId(id);
    16         return house;
    17     }
    18 }

    六、编写接口:

    1 package com.etc.dao;
    2 
    3 import com.etc.entity.House;
    4 
    5 public interface HouseDAO {
    6 
    7     void add(House house);
    8 
    9 }

    七、编写service:

     1 package com.etc.servise;
     2 
     3 import com.etc.dao.HouseDAO;
     4 import com.etc.entity.House;
     5 import org.springframework.beans.factory.annotation.Autowired;
     6 import org.springframework.stereotype.Service;
     7 
     8 @Service
     9 public class HouseService {
    10 
    11     @Autowired
    12     private HouseDAO houseDAO;
    13 
    14     public void add(House house){
    15         houseDAO.add(house);
    16     }
    17 
    18 
    19 }

    八、编写控制层:

     1 package com.etc.controller;
     2 
     3 import com.etc.Vo.HouseSearchVO;
     4 import com.etc.Vo.HouseVO;
     5 import com.etc.common.Constant;
     6 import com.etc.converter.HouseConverter;
     7 import com.etc.entity.House;
     8 import com.etc.entity.HouseSearch;
     9 import com.etc.entity.User;
    10 import com.etc.servise.HouseService;
    11 import com.github.pagehelper.PageHelper;
    12 import com.github.pagehelper.PageInfo;
    13 import org.apache.commons.io.IOUtils;
    14 import org.springframework.beans.factory.annotation.Autowired;
    15 import org.springframework.stereotype.Controller;
    16 import org.springframework.ui.Model;
    17 import org.springframework.util.StringUtils;
    18 import org.springframework.web.bind.annotation.ModelAttribute;
    19 import org.springframework.web.bind.annotation.RequestMapping;
    20 
    21 import javax.servlet.http.HttpServletResponse;
    22 import javax.servlet.http.HttpSession;
    23 import java.io.File;
    24 import java.io.FileInputStream;
    25 import java.io.IOException;
    26 import java.util.List;
    27 
    28 @Controller
    29 @RequestMapping("/house")
    30 public class HouseController {
    31 
    32     public static final String UPLOAD_DIR = "D:\images\";
    33 
    34     @RequestMapping("/images")
    35     public String images(String imgName, HttpServletResponse response) throws IOException {
    36         //将图片的输入流,复制到response的输出流中,
    37         IOUtils.copy(new FileInputStream(UPLOAD_DIR+imgName),response.getOutputStream());
    38         return null;
    39     }
    40 
    41 
    42     @Autowired
    43     private HouseService houseService;
    44 
    45     @RequestMapping("/add")
    46     public String add(HouseVO houseVO, HttpSession session) throws IOException {
    47         //获取session中的user对象
    48         User user = (User) session.getAttribute("user");
    49         //拿到user对象的id
    50         int userId = user.getUserId();
    51         //设置文件上传的路径
    52         houseVO.getHImg().transferTo(new File(UPLOAD_DIR + houseVO.getHImg().getOriginalFilename()));
    53         //建立house对象
    54         House house = HouseConverter.convert(houseVO, houseVO.getHImg().getOriginalFilename(), userId);
    55         //调用添加方法
    56         houseService.add(house);
    57         return "list";
    58     }

    九、页面展示:

     1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
     2 <!-- saved from url=(0044)http://localhost:8080/HouseRent/page/add.jsp -->
     3 <HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>布谷租房 -发布房屋信息</TITLE>
     4 <META content="text/html; charset=utf-8" http-equiv=Content-Type><LINK 
     5 rel=stylesheet type=text/css href="../css/style.css">
     6 <META name=GENERATOR content="MSHTML 8.00.7601.17514"></HEAD>
     7 <BODY>
     8 <DIV id=header class=wrap>
     9 <DIV id=logo><IMG src="../images/logo.gif"></DIV></DIV>
    10 <DIV id=regLogin class=wrap>
    11 <DIV class=dialog>
    12 <DL class=clearfix>
    13   <DT>新房屋信息发布</DT>
    14   <DD class=past>填写房屋信息</DD></DL>
    15 <DIV class=box>
    16 <FORM action="/house/add"  method="post" enctype="multipart/form-data">
    17     <%--enctype="multipart/form-data"--%>
    18 <DIV class=infos>
    19 <TABLE class=field>
    20   <TBODY>
    21   <TR>
    22     <TD class=field>标  题:</TD>
    23     <TD><INPUT id=add_action_title class=text type=text name=title> </TD></TR>
    24   <TR>
    25     <TD class=field>户  型:</TD>
    26     <TD><SELECT class=text name=type_id><OPTION selected 
    27         value=1000>一室一厅</OPTION></SELECT></TD></TR>
    28   <TR>
    29     <TD class=field>面  积:</TD>
    30     <TD><INPUT id=add_action_floorage class=text type=text 
    31 name=floorage></TD></TR>
    32   <TR>
    33     <TD class=field>价  格:</TD>
    34     <TD><INPUT id=add_action_price class=text type=text name=price> </TD></TR>
    35   <TR>
    36     <TD class=field>房产证日期:</TD>
    37     <TD><INPUT class=text type=text name=houseDate></TD></TR>
    38   <TR>
    39     <TD class=field>位  置:</TD>
    40     <TD>区:<SELECT class=text name=districtId><OPTION selected
    41         value=1004>海淀区</OPTION></SELECT> 街:<SELECT class=text 
    42         name=streetId><OPTION selected value=1001>中关村大街</OPTION></SELECT> </TD></TR><!--
    43                         <tr>
    44                             <td class="field">坐  标:</td>
    45                             <td><input type="text" class="text" name="point" />
    46                             </td>
    47                         </tr>
    48                         --><!--  <tr>
    49                             <td class="field">Y 坐  标:</td>
    50                             <td><input type="text" class="text" name="point.y" /></td>
    51                         </tr>-->
    52   <TR>
    53     <TD class=field>联系方式:</TD>
    54     <TD><INPUT id=add_action_contact class=text type=text name=contact> </TD></TR>
    55   <TR>
    56     <TD class=field>图片:</TD>
    57     <TD><INPUT id=img class=text type=file name=hImg> </TD></TR>
    58   <TR>
    59     <TD class=field>详细信息:</TD>
    60     <TD><TEXTAREA name=description></TEXTAREA></TD></TR></TBODY></TABLE>
    61 <DIV class=buttons><INPUT value=立即发布 type=submit>
    62 </DIV></DIV></FORM></DIV></DIV></DIV>
    63 <DIV id=footer class=wrap>
    64 <DL>
    65   <DT>布谷租房 © 2010 布谷租房 京ICP证1000001号</DT>
    66   <DD>关于我们 · 联系方式 · 意见反馈 · 帮助中心</DD></DL></DIV></BODY></HTML>
    fabu.jsp
     1 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
     2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
     3 <!-- saved from url=(0030)http://localhost:8080/House-2/ -->
     4 <HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>布谷租房 - 首页</TITLE>
     5 <META content="text/html; charset=utf-8" http-equiv=Content-Type>
     6 <LINK rel=stylesheet type=text/css href="../css/style.css">
     7 <META name=GENERATOR content="MSHTML 8.00.7601.17514"></HEAD>
     8 <BODY>
     9 <DIV id=header class=wrap>
    10 <DIV id=logo><IMG src="../images/logo.gif"></DIV></DIV>
    11 <DIV id=navbar class=wrap>
    12 <DL class="search clearfix">
    13   <FORM id=sform method=post action=/house/serach>
    14       <input type="hidden" id="pageNum" name="pageNum">
    15   <DT>
    16   <UL>
    17     <LI class=bold>房屋信息</LI>
    18     <LI>标题:<INPUT class=text type=text name=houseName value="${vo.houseName}"> <LABEL class=ui-blue>
    19               <INPUT value=搜索房屋 type=submit name=search></LABEL>
    20     </LI></UL></DT>
    21     <DD>
    22       <UL>
    23         <LI class=first>面积 </LI>
    24         <LI><SELECT name=floorage> <OPTION ${vo.floorage==""?"selected":""} selected value="">不限</OPTION> <OPTION
    25                 value=0-40 ${vo.floorage=="0-40"?"selected":""}>40以下</OPTION> <OPTION value=40-500 ${vo.floorage=="40-500"?"selected":""}>40-500</OPTION> <OPTION
    26                 value=500-1000000 ${vo.floorage=="500-1000000"?"selected":""}>500以上</OPTION></SELECT> </LI></UL></DD>
    27   <DD>
    28   <UL>
    29     <LI class=first>价格 </LI>
    30     <LI><SELECT name=price> <OPTION  selected value="">不限</OPTION> <OPTION
    31       value=0-100 >100元以下</OPTION> <OPTION value=100-200 >100元—200元</OPTION>
    32       <OPTION value=200-1000000 >200元以上</OPTION></SELECT> </LI></UL></DD>
    33   <DD>
    34   <UL>
    35     <LI class=first>房屋位置</LI>
    36     <LI><SELECT id=street name=street_id> <OPTION selected 
    37       value="">不限</OPTION> <OPTION value=1000>知春路</OPTION> <OPTION 
    38       value=1001>中关村大街</OPTION> <OPTION value=1002>学院路</OPTION> <OPTION 
    39       value=1003>朝阳路</OPTION></SELECT> </LI></UL></DD>
    40   <DD>
    41   <UL>
    42     <LI class=first>房型</LI>
    43     <LI><SELECT name=type_id> <OPTION selected value="">不限</OPTION> <OPTION 
    44       value=1000>一室一厅</OPTION> <OPTION value=1001>一室两厅</OPTION> <OPTION 
    45       value=1002>两室一厅</OPTION> <OPTION value=1003>两室两厅</OPTION></SELECT> 
    46   </LI></UL></DD>
    47 </FORM></DL></DIV>
    48 <DIV class="main wrap">
    49   <TABLE class=house-list>
    50     <TBODY>
    51     <c:forEach items="${pageInfo.list}" var="house">
    52       <TR>
    53         <TD class=house-thumb><span><A href="../../details.jsp" target="_blank"><img src="/house/images?imgName=${house.HImg}" width="100" height="75" alt=""></a></span></TD>
    54         <TD>
    55           <DL>
    56             <DT><A href="../../details.jsp" target="_blank">${house.HName}</A></DT>
    57             <DD>${house.HLoc1}${house.HLoc2},${house.HRect}平米<BR>联系方式:3456 </DD></DL></TD>
    58         <TD class=house-type>一室一厅</TD>
    59         <TD class=house-price><SPAN>346.0</SPAN>元/月</TD></TR>
    60     </c:forEach>
    61     </TBODY></TABLE>
    62   <DIV class=pager>
    63     <UL>
    64       <LI class=current><A href="javascript:void(0)" onclick="form(${pageInfo.firstPage})">首页</A></LI>
    65       <LI><A href="javascript:void(0)" onclick="form(${pageInfo.hasPreviousPage?pageInfo.prePage:pageInfo.pageNum})">上一页</A></LI>
    66       <LI><A href="javascript:void(0)" onclick="form(${pageInfo.hasNextPage?pageInfo.nextPage:pageInfo.pageNum})">下一页</A></LI>
    67       <LI><A href="javascript:void(0)" onclick="form(${pageInfo.lastPage})">末页</A></LI></UL><SPAN
    68           class=total>${pageInfo.pageNum}/${pageInfo.pages}页</SPAN> </DIV></DIV>
    69 <DIV id=footer class=wrap>
    70 <DL>
    71   <DT>布谷租房 © 2010 布谷租房 京ICP证1000001号</DT>
    72   <DD>关于我们 · 联系方式 · 意见反馈 · 帮助中心</DD></DL></DIV></BODY><script>
    73      function form(pageNum){
    74          var page=document.getElementById("pageNum");
    75          page.value=pageNum;
    76          var form=document.getElementById("sform");
    77          form.submit();
    78     }
    79 
    80 </script></HTML>
    list.jsp
  • 相关阅读:
    ios 一个正则表达式测试(只可输入中文、字母和数字)
    IOS7 8中tableview分割线缺少15像素
    Java中使用OpenSSL生成的RSA公私钥进行数据加解密
    java与IOS之间的RSA加解密
    ios下使用rsa算法与php进行加解密通讯
    C# 32位md5
    [原]命令模式在MVC框架中的应用
    [原]【推荐】程序员必读的三十本经典巨作
    [原]容器学习(二):动手模拟AOP
    [原]容器学习(一):动手模拟spring的IoC
  • 原文地址:https://www.cnblogs.com/LiuOOP/p/11251833.html
Copyright © 2011-2022 走看看