Springmvc之CRUD和图片上传与下载

目录

一、Springmvc之CRUD

 二、图片上传

三、图片下载 


一、Springmvc之CRUD

 之前crud:自定义mvc结构 

1.导入jar包

2.框架配置文件 mvc.xml

3.web.xml配置 

                dispatherServlet

                encodingFilter

4.导入工具类:pageBean,tag助手类,tld文件

5.做开发

model,dao,service,web,mvc.xml,前端

现在Springmvc

1.导入pom包

 pom文件这玩意坑死人~请谨慎编写,共五步

步骤1:   

2. 

3.一步步来,慢慢导入改变

 
            org.springframework
            spring-webmvc
            ${spring.version}
       

       
       
            javax.servlet.jsp
            javax.servlet.jsp-api
            2.3.3
       

       
            jstl
            jstl
            1.2
       

       
            taglibs
            standard
            1.1.2
       

       
            commons-fileupload
            commons-fileupload
            1.3.3
       

 

4. 
                org.apache.maven.plugins
                maven-compiler-plugin
                ${maven.compiler.plugin.version}
               
                    ${maven.compiler.source}
                    ${maven.compiler.target}
                    ${project.build.sourceEncoding}
               

           

           
                org.mybatis.generator
                mybatis-generator-maven-plugin
                1.3.2
               
                   
                   
                        mysql
                        mysql-connector-java
                        ${mysql.version}
                   

               

               
                    true
               

           

           

5. 插件2
                maven-clean-plugin
                3.1.0
           

           
           
                maven-resources-plugin
                3.0.2
           

           
                maven-compiler-plugin
                3.8.0
           

           
                maven-surefire-plugin
                2.22.1
           

           
                maven-war-plugin
                3.2.2
           

           
                maven-install-plugin
                2.5.2
           

           
                maven-deploy-plugin
                2.8.2
           



    4.0.0

    org.example
    ssm3
    1.0-SNAPSHOT
    
        UTF-8
        1.8
        1.8
        3.7.0

        
        
        5.0.2.RELEASE
        
        3.4.5
        
        5.1.44
        
        5.1.2
        
        1.3.1
        
        2.1.1
        2.4.3
        
        2.9.1
        
        4.12
        4.0.0
        1.18.2
    

    
        
        
            org.springframework
            spring-context
            ${spring.version}
        
        
            org.springframework
            spring-orm
            ${spring.version}
        
        
            org.springframework
            spring-tx
            ${spring.version}
        
        
            org.springframework
            spring-aspects
            ${spring.version}
        
        
            org.springframework
            spring-web
            ${spring.version}
        
        
            org.springframework
            spring-test
            ${spring.version}
        

        
        
            org.mybatis
            mybatis
            ${mybatis.version}
        
        
        
            mysql
            mysql-connector-java
            ${mysql.version}
        
        
        
            com.github.pagehelper
            pagehelper
            ${pagehelper.version}
        
        
        
            org.mybatis
            mybatis-spring
            ${mybatis.spring.version}
        

        
        
            org.apache.commons
            commons-dbcp2
            ${commons.dbcp2.version}
        
        
            org.apache.commons
            commons-pool2
            ${commons.pool2.version}
        

        
        
        
            org.apache.logging.log4j
            log4j-core
            ${log4j2.version}
        
        
            org.apache.logging.log4j
            log4j-api
            ${log4j2.version}
        
        
        
            org.apache.logging.log4j
            log4j-web
            ${log4j2.version}
        

        
        
            junit
            junit
            ${junit.version}
            test
        
        
            javax.servlet
            javax.servlet-api
            ${servlet.version}
            provided
        
        
            org.projectlombok
            lombok
            ${lombok.version}
            provided
        
        
            org.springframework
            spring-webmvc
            ${spring.version}
        

        
        
            javax.servlet.jsp
            javax.servlet.jsp-api
            2.3.3
        
        
            jstl
            jstl
            1.2
        
        
            taglibs
            standard
            1.1.2
        

        
            commons-fileupload
            commons-fileupload
            1.3.3
        

    

    
    ssm2
    
        
        
            src/main/java
            
                **/*.xml
            
        
        
        
            src/main/resources
            
                jdbc.properties
                *.xml
            
        
    

    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                ${maven.compiler.plugin.version}
                
                    ${maven.compiler.source}
                    ${maven.compiler.target}
                    ${project.build.sourceEncoding}
                
            
            
                org.mybatis.generator
                mybatis-generator-maven-plugin
                1.3.2
                
                    
                    
                        mysql
                        mysql-connector-java
                        ${mysql.version}
                    
                
                
                    true
                
            
            
                maven-clean-plugin
                3.1.0
            
            
            
                maven-resources-plugin
                3.0.2
            
            
                maven-compiler-plugin
                3.8.0
            
            
                maven-surefire-plugin
                2.22.1
            
            
                maven-war-plugin
                3.2.2
            
            
                maven-install-plugin
                2.5.2
            
            
                maven-deploy-plugin
                2.8.2
            
        
    
    

2.框架配置文件 mvc.xml

  applicationContext.xml

applicationContext-mybatis.xml

jdbc.properties

generate.xnl

log4j2.xml

springmvc-servlet.xml    

Springmvc之CRUD和图片上传与下载_第1张图片
 

3.web.xml配置   

dispatherServlet

    contextloadlister

encoding

Springmvc之CRUD和图片上传与下载_第2张图片

           

4.导入工具类:pageBean,tag助手类,tld文件

Springmvc之CRUD和图片上传与下载_第3张图片

5.做开发

model,dao,service,web,mvc.xml,前端



    
    
    
    

    
    
    
    

    
    
        
        
        
        
    

    
    

    












package com.zking.oa.biz;

import com.zking.oa.model.Clazz;
import com.zking.oa.util.PageBean;

import java.util.List;

/**
 * @author 锦鲤
 * @site www.lucy.com
 * @company xxx公司
 * @create  2022-08-18 13:08
 */
public interface ClazzBiz {
    int deleteByPrimaryKey(Integer cid);

    int insert(Clazz record);

    int insertSelective(Clazz record);

    Clazz selectByPrimaryKey(Integer cid);

    int updateByPrimaryKeySelective(Clazz record);

    int updateByPrimaryKey(Clazz record);

        List listPager (Clazz clazz, PageBean pagebean);
 }




  
    
      
      
      
       
    
  
  
    cid, cname, cteacher, pic
  

  

  


  
    delete from t_struts_class
    where cid = #{cid,jdbcType=INTEGER}
  
  
    insert into t_struts_class (cid, cname, cteacher, 
      pic)
    values (#{cid,jdbcType=INTEGER}, #{cname,jdbcType=VARCHAR}, #{cteacher,jdbcType=VARCHAR}, 
      #{pic,jdbcType=VARCHAR})
  
  
    insert into t_struts_class
    
      
        cid,
      
      
        cname,
      
      
        cteacher,
      
      
        pic,
      
    
    
      
        #{cid,jdbcType=INTEGER},
      
      
        #{cname,jdbcType=VARCHAR},
      
      
        #{cteacher,jdbcType=VARCHAR},
      
      
        #{pic,jdbcType=VARCHAR},
      
    
  
  
    update t_struts_class
    
      
        cname = #{cname,jdbcType=VARCHAR},
      
      
        cteacher = #{cteacher,jdbcType=VARCHAR},
      
      
        pic = #{pic,jdbcType=VARCHAR},
      
    
    where cid = #{cid,jdbcType=INTEGER}
  
  
    update t_struts_class
    set cname = #{cname,jdbcType=VARCHAR},
      cteacher = #{cteacher,jdbcType=VARCHAR},
      pic = #{pic,jdbcType=VARCHAR}
    where cid = #{cid,jdbcType=INTEGER}
  

配置服务器tomcat

Springmvc之CRUD和图片上传与下载_第4张图片

 Springmvc之CRUD和图片上传与下载_第5张图片

package com.zking.oa.controller;

import com.zking.oa.biz.ClazzBiz;
import com.zking.oa.model.Clazz;
import com.zking.oa.util.PageBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * @author 锦鲤
 * @site www.lucy.com
 * @company xxx公司
 * @create  2022-08-18 13:42
 */

@Controller
@RequestMapping("/clz")
public class ClazzController    {
   @Autowired
    private ClazzBiz clazzBiz;

    //list-->clzList
//    toList--重定向list--"redirect:/clz/list"
    //toEdit--重定向到编辑界面--> clzedit
    //Clazz:以前是通过模型驱动接口封装,现在是直接在方法中传参
    @RequestMapping("/list")
    public String list(Clazz clazz, HttpServletRequest request){
        PageBean pagebean=new PageBean();
        pagebean.setRequest(request);
        List  lst=this.clazzBiz.listPager(clazz,pagebean);
        request.setAttribute("lst",lst);
        request.setAttribute("pagebean",pagebean);
        return  "clzList";
    }

    @RequestMapping("/toEdit")
    public String toedit(Clazz clazz, HttpServletRequest request){
      Integer  cid=clazz.getCid();
        //传送的id修改,没有传代表新增
        if(cid!=null){
          List lst =  this.clazzBiz.listPager(clazz,null);
        request.setAttribute("c" ,lst.get(0));
        }
        return  "clzEdit";
    }

    @RequestMapping("/add")
    public String add(Clazz clazz){
        this.clazzBiz.insertSelective(clazz);
        return  "redirect:/clz/list";
    }

    @RequestMapping("/edit")
    public String edit(Clazz clazz){
        this.clazzBiz.updateByPrimaryKeySelective(clazz);
        return  "redirect:/clz/list";
    }

    @RequestMapping("/del")
    public String del(Clazz clazz){
        this.clazzBiz.deleteByPrimaryKey(clazz.getCid());
        return  "redirect:/clz/list";
    }

}

主界面

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>
<%@ taglib uri="http://jsp.veryedu.cn" prefix="z" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>



    
    
    
    博客列表
    





新增
ID 班级名称 老师 头像 操作
${b.cid } ${b.cname } ${b.cteacher } ${b.pic } 修改 上传图片 下载图片 删除
<%--${pageBean }--%>

 修改界面

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>



    
    班级的编辑界面


id:
cname:
cteacher:

 效果图:

Springmvc之CRUD和图片上传与下载_第6张图片

Springmvc之CRUD和图片上传与下载_第7张图片

Springmvc之CRUD和图片上传与下载_第8张图片

 修改功能

Springmvc之CRUD和图片上传与下载_第9张图片


 二、图片上传

图片上传步骤:

1.springmvc.xml添加多功能的解析器配置

2.前台页面添加多功能表单设置mulipart/form-data

3后台利用mulipartfile类进行文件接收

注意:

表单里的multipart/form-data要和multipartFile属性一致

4在IDEA中完成图片请求地址与硬盘中地址的映射关系

vo:view object

dto:接收参数,参数不仅仅存在于实体类modle里

 导入pom依赖


    commons-fileupload
    commons-fileupload
    1.3.3




    
    
    
    

    
    
    
    

    
    
        
        
        
        
    

    




    
        
        
        
        
        
        
    



 ClazzDto工具

package com.zking.oa.model.dto;

import com.zking.oa.model.Clazz;
import org.springframework.web.multipart.MultipartFile;

/**
 * @author 锦鲤
 * @site www.lucy.com
 * @company xxx公司
 * @create  2022-08-18 14:39
 */
public class ClazzDto extends Clazz {
    private MultipartFile picFile;

    public MultipartFile getPicFile() {
        return picFile;
    }

    public void setPicFile(MultipartFile picFile) {
        this.picFile = picFile;
    }
}

图片映射

Springmvc之CRUD和图片上传与下载_第10张图片

Springmvc之CRUD和图片上传与下载_第11张图片

映射完成apply 

controlle类 

//文件上传
    @RequestMapping("/upload")
    public String upload(ClazzDto clazzdto){
      try {
          //前台上传
          MultipartFile picFile  =clazzdto.getPicFile();
          InputStream inputstream = picFile.getInputStream();
//        FileOutputStream fout  = new FileOutputStream(new File("d/temp/1.png"));
//          byte[] bbuf=new byte[1024];
//          int len=0;
//          while(true){
//            len=inputstream.read(bbuf,0,len);
//         fout.write(bbuf,0,len);
//         if(len<0){
//             break;
//           }
//          }
          String disPath= "E:/temp/tp";//存放位置
          String requestPath="/upload/mvc/";//数据库保存地址、访问地址
          String fileName=picFile.getOriginalFilename();//拿到上传文件名字
          FileUtils.copyInputStreamToFile(inputstream,new File(disPath+fileName));//
          //赋值,将图片上传后并且将图片地址更新到数据库
          Clazz clazz=new Clazz();
          clazz.setPic(requestPath+fileName);
          clazz.setCid(clazzdto.getCid());

          //以上三行代表相对于上面注释代码内容
      }catch (Exception e){
          e.printStackTrace();
      }
        return  "redirect:/clz/list";
    }

 上传界面

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2022/8/18
  Time: 19:25
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    图片上传


        

三、图片下载 

1.点击下载传递文件ID,通过文件查询出文件路径

2.通过文件请求地址,转混成文件存放的硬盘地址

3将文件下载下来--固定代码

controlle类

  //下载图片
    @RequestMapping("/download")
    public String download(ClazzDto clazzdto){
        try {
               Clazz clazz= this.clazzBiz.selectByPrimaryKey(clazzdto.getCid());
            String pic=clazz.getPic();//1.png
               String disPath= "E:/temp/tp";//存放位置
            String requestPath="/upload/mvc/";//数据库保存地址、访问地址
        pic=pic.replace(requestPath,disPath);//E:/temp/tp/1.png

            //文件名字
            String realPath =pic.replace(requestPath,disPath);
            String  fileName=realPath.substring(realPath.lastIndexOf("/")+1);
            //将硬盘中文件下载下来--固定代码
            //下载关键代码
            File file=new File(realPath);
            HttpHeaders headers = new HttpHeaders();//http头信息
            String downloadFileName = new String(fileName.getBytes("UTF-8"),"iso-8859-1");//设置编码
            headers.setContentDispositionFormData("attachment", downloadFileName);
            headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
            //MediaType:互联网媒介类型  contentType:具体请求中的媒体类型信息
            return  new ResponseEntity(FileUtils.readFileToByteArray(file),headers,HttpStatus.OK);

        }catch (Exception e){
            e.printStackTrace();
        }
        return  null;
    }


 



 

你可能感兴趣的:(mybatis,idea,java,数据库,前端)