• SpringMVC的上传下载


    哈喽铁子们保持发型SpringMVC的上传下载先看看目录

    目录

    一、CRUD(增删改查)

    1、导入pom依赖

    2、框架配置文件

    3、web.xml

    4、工具类(分页)

    二、图片上传

    2、导pom依赖

    3、springmvc-servlet.xml配置

    4、Dto编写

    三、下载

    1、步骤


    一、CRUD(增删改查)

    1、导入pom依赖

    1. "1.0" encoding="UTF-8"?>
    2. "http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    4. mybatis001
    5. org.example
    6. 1.0-SNAPSHOT
    7. 4.0.0
    8. ssm2
    9. war
    10. ssm2 Maven Webapp
    11. http://www.example.com
    12. UTF-8
    13. 1.8
    14. 1.8
    15. 3.7.0
    16. 5.0.2.RELEASE
    17. 3.4.5
    18. 5.1.44
    19. 5.1.2
    20. 1.3.1
    21. 2.1.1
    22. 2.4.3
    23. 2.9.1
    24. 4.12
    25. 4.0.0
    26. 1.18.2
    27. org.springframework
    28. spring-context
    29. ${spring.version}
    30. org.springframework
    31. spring-orm
    32. ${spring.version}
    33. org.springframework
    34. spring-tx
    35. ${spring.version}
    36. org.springframework
    37. spring-aspects
    38. ${spring.version}
    39. org.springframework
    40. spring-web
    41. ${spring.version}
    42. org.springframework
    43. spring-test
    44. ${spring.version}
    45. org.mybatis
    46. mybatis
    47. ${mybatis.version}
    48. mysql
    49. mysql-connector-java
    50. ${mysql.version}
    51. com.github.pagehelper
    52. pagehelper
    53. ${pagehelper.version}
    54. org.mybatis
    55. mybatis-spring
    56. ${mybatis.spring.version}
    57. org.apache.commons
    58. commons-dbcp2
    59. ${commons.dbcp2.version}
    60. org.apache.commons
    61. commons-pool2
    62. ${commons.pool2.version}
    63. org.apache.logging.log4j
    64. log4j-core
    65. ${log4j2.version}
    66. org.apache.logging.log4j
    67. log4j-api
    68. ${log4j2.version}
    69. org.apache.logging.log4j
    70. log4j-web
    71. ${log4j2.version}
    72. junit
    73. junit
    74. ${junit.version}
    75. test
    76. javax.servlet
    77. javax.servlet-api
    78. ${servlet.version}
    79. provided
    80. org.projectlombok
    81. lombok
    82. ${lombok.version}
    83. provided
    84. org.springframework
    85. spring-webmvc
    86. ${spring.version}
    87. javax.servlet.jsp
    88. javax.servlet.jsp-api
    89. 2.3.3
    90. jstl
    91. jstl
    92. 1.2
    93. taglibs
    94. standard
    95. 1.1.2
    96. commons-fileupload
    97. commons-fileupload
    98. 1.3.3
    99. ssm2
    100. src/main/java
    101. **/*.xml
    102. src/main/resources
    103. jdbc.properties
    104. *.xml
    105. org.apache.maven.plugins
    106. maven-compiler-plugin
    107. ${maven.compiler.plugin.version}
    108. ${maven.compiler.source}
    109. ${maven.compiler.target}
    110. ${project.build.sourceEncoding}
    111. org.mybatis.generator
    112. mybatis-generator-maven-plugin
    113. 1.3.2
    114. mysql
    115. mysql-connector-java
    116. ${mysql.version}
    117. true
    118. maven-clean-plugin
    119. 3.1.0
    120. maven-resources-plugin
    121. 3.0.2
    122. maven-compiler-plugin
    123. 3.8.0
    124. maven-surefire-plugin
    125. 2.22.1
    126. maven-war-plugin
    127. 3.2.2
    128. maven-install-plugin
    129. 2.5.2
    130. maven-deploy-plugin
    131. 2.8.2

    2、框架配置文件

    springmvc-servlet.xml 

    1. "1.0" encoding="UTF-8"?>
    2. "http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xmlns:context="http://www.springframework.org/schema/context"
    5. xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop"
    6. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    7. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
    8. package="com.tsq"/>
    9. "org.springframework.web.servlet.view.InternalResourceViewResolver">
    10. "viewClass"
    11. value="org.springframework.web.servlet.view.JstlView">
    12. "prefix" value="/"/>
    13. "suffix" value=".jsp"/>

    generatorConfig.xml

    1. "1.0" encoding="UTF-8" ?>
    2. "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
    3. "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
    4. "jdbc.properties"/>
    5. "E:\\maven\\maven_ localRepository\\mysql\\mysql-connector-java\5.1.44\\mysql-connector-java-5.1.44.jar"/>
    6. "infoGuardian">
    7. "suppressAllComments" value="true"/>
    8. "suppressDate" value="true"/>
    9. "${jdbc.driver}"
    10. connectionURL="${jdbc.url}" userId="${jdbc.username}" password="${jdbc.password}"/>
    11. "forceBigDecimals" value="false"/>
    12. "com.tsq.model"
    13. targetProject="src/main/java">
    14. "enableSubPackages" value="false"/>
    15. "constructorBased" value="true"/>
    16. "trimStrings" value="false"/>
    17. "immutable" value="false"/>
    18. "com.tsq.mapper"
    19. targetProject="src/main/java">
    20. "enableSubPackages" value="false"/>
    21. "com.tsq.mapper"
    22. targetProject="src/main/java" type="XMLMAPPER">
    23. "enableSubPackages" value="false"/>
    24. "" tableName="t_struts_class" domainObjectName="Clazz"
    25. enableCountByExample="false" enableDeleteByExample="false"
    26. enableSelectByExample="false" enableUpdateByExample="false">

    applicationContext-mybatis.xml

    1. "1.0" encoding="UTF-8"?>
    2. "http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
    5. xmlns:aop="http://www.springframework.org/schema/aop"
    6. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
    7. package="com.tsq"/>
    8. "classpath:jdbc.properties"/>
    9. "dataSource" class="org.apache.commons.dbcp2.BasicDataSource"
    10. destroy-method="close">
    11. "driverClassName" value="${jdbc.driver}"/>
    12. "url" value="${jdbc.url}"/>
    13. "username" value="${jdbc.username}"/>
    14. "password" value="${jdbc.password}"/>
    15. "initialSize" value="10"/>
    16. "maxTotal" value="100"/>
    17. "maxIdle" value="50"/>
    18. "minIdle" value="10"/>
    19. "maxWaitMillis" value="-1"/>
    20. "sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    21. "dataSource" ref="dataSource"/>
    22. "mapperLocations" value="classpath*:com/tsq/**/mapper/*.xml"/>
    23. "typeAliasesPackage" value="com/tsq/**/model"/>
    24. "plugins">
    25. "com.github.pagehelper.PageInterceptor">
    26. "properties">
    27. helperDialect=mysql
    28. "/>
    29. " value="sqlSessionFactory"/>
    30. " class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    31. " ref="dataSource" />
    32. " />

    applicationContext.xml 

    1. "1.0" encoding="UTF-8"?>
    2. "http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
    5. xmlns:aop="http://www.springframework.org/schema/aop"
    6. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
    7. <import resource="applicationContext-mybatis.xml">import>

    3、web.xml

    1. "http://xmlns.jcp.org/xml/ns/javaee"
    2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    4. version="3.1">
    5. Archetype Created Web Application
    6. contextConfigLocation
    7. classpath:applicationContext.xml
    8. org.springframework.web.context.ContextLoaderListener
    9. SpringMVC
    10. org.springframework.web.servlet.DispatcherServlet
    11. contextConfigLocation
    12. /WEB-INF/springmvc-servlet.xml
    13. 1
    14. true
    15. SpringMVC
    16. /
    17. encodingFilter
    18. org.springframework.web.filter.CharacterEncodingFilter
    19. true
    20. encoding
    21. UTF-8
    22. encodingFilter
    23. /*

    4、工具类(分页)

    PageTag .java

    1. package com.tsq.util;
    2. import java.io.IOException;
    3. import java.util.Map;
    4. import java.util.Map.Entry;
    5. import java.util.Set;
    6. import javax.servlet.jsp.JspException;
    7. import javax.servlet.jsp.JspWriter;
    8. import javax.servlet.jsp.tagext.BodyTagSupport;
    9. public class PageTag extends BodyTagSupport{
    10. private PageBean pageBean;// 包含了所有分页相关的元素
    11. public PageBean getPageBean() {
    12. return pageBean;
    13. }
    14. public void setPageBean(PageBean pageBean) {
    15. this.pageBean = pageBean;
    16. }
    17. @Override
    18. public int doStartTag() throws JspException {
    19. // 没有标签体,要输出内容
    20. JspWriter out = pageContext.getOut();
    21. try {
    22. out.print(toHTML());
    23. } catch (IOException e) {
    24. e.printStackTrace();
    25. }
    26. return super.doStartTag();
    27. }
    28. private String toHTML() {
    29. StringBuffer sb = new StringBuffer();
    30. // 隐藏的form表单---这个就是上一次请求下次重新发的奥义所在
    31. // 上一次请求的URL
    32. sb.append("
      ");
    33. sb.append(" ");
    34. // 上一次请求的参数
    35. Map paramMap = pageBean.getParamMap();
    36. if(paramMap != null && paramMap.size() > 0) {
    37. Set> entrySet = paramMap.entrySet();
    38. for (Entry entry : entrySet) {
    39. // 参数名
    40. String key = entry.getKey();
    41. // 参数值
    42. for (String value : entry.getValue()) {
    43. // 上一次请求的参数,再一次组装成了新的Form表单
    44. // 注意:page参数每次都会提交,我们需要避免
    45. if(!"page".equals(key)) {
    46. sb.append(" ");
    47. }
    48. }
    49. }
    50. }
    51. sb.append("");
    52. // 分页条
    53. sb.append("
        ");
    54. sb.append("
    55. );
  • ");
  • sb.append("
  • );
  • ");// less than 小于号
  • // sb.append("
  • 1
  • ");
  • // sb.append("
  • 2
  • ");
  • sb.append("
  • "+pageBean.getPage()+"
  • ");
  • sb.append("
  • >
  • ");
  • sb.append("
  • 尾页
  • ");
  • sb.append("
  • 到第);
  • sb.append(" type='text' id='skipPage' name='' />
  • ");
  • sb.append("
  • );
  • ");
  • sb.append("
  • 共"+pageBean.getTotal()+"条
  • ");
  • sb.append("");
  • // 分页执行的JS代码
  • sb.append("");
  • return sb.toString();
  • }
  • }
  •  StringUtils .xml

    1. package com.tsq.util;
    2. public class StringUtils {
    3. // 私有的构造方法,保护此类不能在外部实例化
    4. private StringUtils() {
    5. }
    6. /**
    7. * 如果字符串等于null或去空格后等于"",则返回true,否则返回false
    8. *
    9. * @param s
    10. * @return
    11. */
    12. public static boolean isBlank(String s) {
    13. boolean b = false;
    14. if (null == s || s.trim().equals("")) {
    15. b = true;
    16. }
    17. return b;
    18. }
    19. /**
    20. * 如果字符串不等于null或去空格后不等于"",则返回true,否则返回false
    21. *
    22. * @param s
    23. * @return
    24. */
    25. public static boolean isNotBlank(String s) {
    26. return !isBlank(s);
    27. }
    28. }

    PageBean .java 

    1. package com.tsq.util;
    2. import java.util.HashMap;
    3. import java.util.Map;
    4. import javax.servlet.http.HttpServletRequest;
    5. /**
    6. * 分页工具类
    7. *
    8. */
    9. public class PageBean {
    10. private int page = 1;// 页码
    11. private int rows = 10;// 页大小
    12. private int total = 0;// 总记录数
    13. private boolean pagination = true;// 是否分页
    14. private String url; //保存上一次请求的URL
    15. private Map paramMap = new HashMap<>();// 保存上一次请求的参数
    16. /**
    17. * 初始化pagebean的,保存上一次请求的重要参数
    18. * @param req
    19. */
    20. public void setRequest(HttpServletRequest req) {
    21. // 1.1 需要保存上一次请求的URL
    22. this.setUrl(req.getRequestURL().toString());
    23. // 1.2 需要保存上一次请求的参数 bname、price
    24. this.setParamMap(req.getParameterMap());
    25. // 1.3 需要保存上一次请求的分页设置 pagination
    26. this.setPagination(req.getParameter("pagination"));
    27. // 1.4 需要保存上一次请求的展示条目数
    28. this.setRows(req.getParameter("rows"));
    29. // 1.5 初始化请求的页码 page
    30. this.setPage(req.getParameter("page"));
    31. }
    32. public void setPage(String page) {
    33. if(StringUtils.isNotBlank(page))
    34. this.setPage(Integer.valueOf(page));
    35. }
    36. public void setRows(String rows) {
    37. if(StringUtils.isNotBlank(rows))
    38. this.setRows(Integer.valueOf(rows));
    39. }
    40. public void setPagination(String pagination) {
    41. // 只有在前台jsp填写了pagination=false,才代表不分页
    42. if(StringUtils.isNotBlank(pagination))
    43. this.setPagination(!"false".equals(pagination));
    44. }
    45. public String getUrl() {
    46. return url;
    47. }
    48. public void setUrl(String url) {
    49. this.url = url;
    50. }
    51. public Map getParamMap() {
    52. return paramMap;
    53. }
    54. public void setParamMap(Map paramMap) {
    55. this.paramMap = paramMap;
    56. }
    57. public PageBean() {
    58. super();
    59. }
    60. public int getPage() {
    61. return page;
    62. }
    63. public void setPage(int page) {
    64. this.page = page;
    65. }
    66. public int getRows() {
    67. return rows;
    68. }
    69. public void setRows(int rows) {
    70. this.rows = rows;
    71. }
    72. public int getTotal() {
    73. return total;
    74. }
    75. public void setTotal(int total) {
    76. this.total = total;
    77. }
    78. public void setTotal(String total) {
    79. this.total = Integer.parseInt(total);
    80. }
    81. public boolean isPagination() {
    82. return pagination;
    83. }
    84. public void setPagination(boolean pagination) {
    85. this.pagination = pagination;
    86. }
    87. /**
    88. * 获得起始记录的下标
    89. *
    90. * @return
    91. */
    92. public int getStartIndex() {
    93. return (this.page - 1) * this.rows;
    94. }
    95. /**
    96. * 最大页
    97. * @return
    98. */
    99. public int maxPage() {
    100. // total % rows == 0 ? total / rows : total / rows +1
    101. return this.total % this.rows == 0 ? this.total / this.rows : this.total / this.rows + 1;
    102. }
    103. /**
    104. * 下一页
    105. * @return
    106. */
    107. public int nextPage() {
    108. // 如果当前页小于最大页,那就下一页为当前页+1;如果不小于,说明当前页就是最大页,那就无需+1
    109. return this.page < this.maxPage() ? this.page + 1 : this.page;
    110. }
    111. /**
    112. * 上一页
    113. * @return
    114. */
    115. public int previousPage() {
    116. return this.page > 1 ? this.page - 1 : this.page;
    117. }
    118. @Override
    119. public String toString() {
    120. return "PageBean [page=" + page + ", rows=" + rows + ", total=" + total + ", pagination=" + pagination + "]";
    121. }
    122. }

    zking.tld

    1. "1.0" encoding="UTF-8" ?>
    2. "http://java.sun.com/xml/ns/j2ee"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
    5. version="2.0">
    6. zking 1.1 core library
    7. zking core
    8. 1.1
    9. <short-name>zkingshort-name>
    10. http://jsp.veryedu.cn
    11. page
    12. com.cxy.util.PageTag
    13. JSP
    14. pageBean
    15. true
    16. true

     Clazz.java

    1. package com.tsq.model;
    2. public class Clazz {
    3. protected Integer cid;
    4. protected String cname;
    5. protected String cteacher;
    6. protected String pic;
    7. public Clazz(Integer cid, String cname, String cteacher, String pic) {
    8. this.cid = cid;
    9. this.cname = cname;
    10. this.cteacher = cteacher;
    11. this.pic = pic;
    12. }
    13. public Clazz() {
    14. super();
    15. }
    16. public Integer getCid() {
    17. return cid;
    18. }
    19. public void setCid(Integer cid) {
    20. this.cid = cid;
    21. }
    22. public String getCname() {
    23. return cname;
    24. }
    25. public void setCname(String cname) {
    26. this.cname = cname;
    27. }
    28. public String getCteacher() {
    29. return cteacher;
    30. }
    31. public void setCteacher(String cteacher) {
    32. this.cteacher = cteacher;
    33. }
    34. public String getPic() {
    35. return pic;
    36. }
    37. public void setPic(String pic) {
    38. this.pic = pic;
    39. }
    40. }

    ClazzMapper.java

    1. package com.tsq.mapper;
    2. import com.tsq.model.Clazz;
    3. import com.tsq.util.PageBean;
    4. import org.springframework.stereotype.Repository;
    5. import java.util.List;
    6. @Repository
    7. public interface ClazzMapper {
    8. int deleteByPrimaryKey(Integer cid);
    9. int insert(Clazz record);
    10. int insertSelective(Clazz record);
    11. Clazz selectByPrimaryKey(Integer cid);
    12. int updateByPrimaryKeySelective(Clazz record);
    13. int updateByPrimaryKey(Clazz record);
    14. List listPager(Clazz record);
    15. }

    ClazzMapper.xml

    1. "1.0" encoding="UTF-8" ?>
    2. "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
    3. "com.tsq.mapper.ClazzMapper" >
    4. "BaseResultMap" type="com.tsq.model.Clazz" >
    5. "cid" jdbcType="INTEGER" javaType="java.lang.Integer" />
    6. "cname" jdbcType="VARCHAR" javaType="java.lang.String" />
    7. "cteacher" jdbcType="VARCHAR" javaType="java.lang.String" />
    8. "pic" jdbcType="VARCHAR" javaType="java.lang.String" />
    9. "Base_Column_List" >
    10. cid, cname, cteacher, pic
    11. "deleteByPrimaryKey" parameterType="java.lang.Integer" >
    12. delete from t_struts_class
    13. where cid = #{cid,jdbcType=INTEGER}
    14. "insert" parameterType="com.tsq.model.Clazz" >
    15. insert into t_struts_class (cid, cname, cteacher,
    16. pic)
    17. values (#{cid,jdbcType=INTEGER}, #{cname,jdbcType=VARCHAR}, #{cteacher,jdbcType=VARCHAR},
    18. #{pic,jdbcType=VARCHAR})
    19. "insertSelective" parameterType="com.tsq.model.Clazz" >
    20. insert into t_struts_class
    21. "(" suffix=")" suffixOverrides="," >
    22. <if test="cid != null" >
    23. cid,
    24. if>
    25. <if test="cname != null" >
    26. cname,
    27. if>
    28. <if test="cteacher != null" >
    29. cteacher,
    30. if>
    31. <if test="pic != null" >
    32. pic,
    33. if>
    34. "values (" suffix=")" suffixOverrides="," >
    35. <if test="cid != null" >
    36. #{cid,jdbcType=INTEGER},
    37. if>
    38. <if test="cname != null" >
    39. #{cname,jdbcType=VARCHAR},
    40. if>
    41. <if test="cteacher != null" >
    42. #{cteacher,jdbcType=VARCHAR},
    43. if>
    44. <if test="pic != null" >
    45. #{pic,jdbcType=VARCHAR},
    46. if>
    47. "updateByPrimaryKeySelective" parameterType="com.tsq.model.Clazz" >
    48. update t_struts_class
    49. <if test="cname != null" >
    50. cname = #{cname,jdbcType=VARCHAR},
    51. if>
    52. <if test="cteacher != null" >
    53. cteacher = #{cteacher,jdbcType=VARCHAR},
    54. if>
    55. <if test="pic != null" >
    56. pic = #{pic,jdbcType=VARCHAR},
    57. if>
    58. where cid = #{cid,jdbcType=INTEGER}
    59. "updateByPrimaryKey" parameterType="com.tsq.model.Clazz" >
    60. update t_struts_class
    61. set cname = #{cname,jdbcType=VARCHAR},
    62. cteacher = #{cteacher,jdbcType=VARCHAR},
    63. pic = #{pic,jdbcType=VARCHAR}
    64. where cid = #{cid,jdbcType=INTEGER}

    ClazzBiz.xml

    1. package com.tsq.biz;
    2. import com.tsq.model.Clazz;
    3. import com.tsq.util.PageBean;
    4. import java.util.List;
    5. public interface ClazzBiz {
    6. int deleteByPrimaryKey(Integer cid);
    7. int insert(Clazz record);
    8. int insertSelective(Clazz record);
    9. Clazz selectByPrimaryKey(Integer cid);
    10. int updateByPrimaryKeySelective(Clazz record);
    11. int updateByPrimaryKey(Clazz record);
    12. List listPager(Clazz record, PageBean pageBean);
    13. }

    ClazzBizImpl.java

    1. package com.tsq.biz.impl;
    2. import com.tsq.biz.ClazzBiz;
    3. import com.tsq.mapper.ClazzMapper;
    4. import com.tsq.model.Clazz;
    5. import com.tsq.util.PageBean;
    6. import org.springframework.beans.factory.annotation.Autowired;
    7. import org.springframework.stereotype.Service;
    8. import java.util.List;
    9. @Service
    10. public class ClazzBizImpl implements ClazzBiz {
    11. @Autowired
    12. private ClazzMapper clazzMapper;
    13. @Override
    14. public int deleteByPrimaryKey(Integer cid) {
    15. return clazzMapper.deleteByPrimaryKey(cid);
    16. }
    17. @Override
    18. public int insert(Clazz record) {
    19. return clazzMapper.insert(record);
    20. }
    21. @Override
    22. public int insertSelective(Clazz record) {
    23. return clazzMapper.insertSelective(record);
    24. }
    25. @Override
    26. public Clazz selectByPrimaryKey(Integer cid) {
    27. return clazzMapper.selectByPrimaryKey(cid);
    28. }
    29. @Override
    30. public int updateByPrimaryKeySelective(Clazz record) {
    31. return clazzMapper.updateByPrimaryKeySelective(record);
    32. }
    33. @Override
    34. public int updateByPrimaryKey(Clazz record) {
    35. return clazzMapper.updateByPrimaryKey(record);
    36. }
    37. @Override
    38. public List listPager(Clazz record, PageBean pageBean) {
    39. return clazzMapper.listPager(record);
    40. }
    41. }

    ClazzController .java 

    1. package com.tsq.controller;
    2. import com.tsq.biz.ClazzBiz;
    3. import com.tsq.model.Clazz;
    4. import com.tsq.util.PageBean;
    5. import org.springframework.beans.factory.annotation.Autowired;
    6. import org.springframework.stereotype.Controller;
    7. import org.springframework.web.bind.annotation.RequestMapping;
    8. import javax.servlet.http.HttpServletRequest;
    9. import java.util.List;
    10. @Controller
    11. @RequestMapping("/clz")
    12. public class ClazzController {
    13. @Autowired
    14. private ClazzBiz clazzBiz;
    15. @RequestMapping("/list")
    16. public String list(Clazz clazz, HttpServletRequest request){
    17. PageBean pageBean = new PageBean();
    18. pageBean.setRequest(request);
    19. List list = this.clazzBiz.listPager(clazz,pageBean);
    20. request.setAttribute("lst",list);
    21. request.setAttribute("pageBean",pageBean);
    22. return "clzList";
    23. }
    24. @RequestMapping("/toEdit")
    25. public String toEdit(Clazz clazz, HttpServletRequest request){
    26. Integer cid = clazz.getCid();
    27. if(cid!=null){
    28. List lst = this.clazzBiz.listPager(clazz, null);
    29. request.setAttribute("b",lst.get(0));
    30. }
    31. return "clzEdit";
    32. }
    33. @RequestMapping("/add")
    34. public String add(Clazz clazz, HttpServletRequest request){
    35. this.clazzBiz.insertSelective(clazz);
    36. return "redirect:/clz/list";
    37. }
    38. @RequestMapping("/del")
    39. public String delete(Clazz clazz, HttpServletRequest request){
    40. this.clazzBiz.deleteByPrimaryKey(clazz.getCid());
    41. return "redirect:/clz/list";
    42. }
    43. @RequestMapping("/edit")
    44. public String edit(Clazz clazz, HttpServletRequest request){
    45. this.clazzBiz.updateByPrimaryKeySelective(clazz);
    46. return "redirect:/clz/list";
    47. }
    48. }

    clzList.jsp(主界面) 

    1. <%@ page language="java" contentType="text/html; charset=UTF-8"
    2. pageEncoding="UTF-8"%>
    3. <%@ taglib uri="http://jsp.veryedu.cn" prefix="z"%>
    4. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    5. "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    6. "Content-Type" content="text/html; charset=UTF-8">
    7. href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.5.0/css/bootstrap.css"
    8. rel="stylesheet">
    9. src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.5.0/js/bootstrap.js">
    10. 班级列表
    11. "form-inline"
    12. action="${pageContext.request.contextPath }/clz/list" method="post">
    13. "form-group mb-2">
    14. "text" class="form-control-plaintext" name="cname"
    15. placeholder="请输入班级名称">
    16. "pagination" value="false" type="hidden">
    17. "table table-striped bg-success">
    18. var="b" items="${lst }">
    19. "col">ID"col">名字"col">教师"col">图片"col">操作
      ${b.cid }${b.cname }${b.cteacher }${b.pic}
    20. "${pageBean }">

    结果如下

     clzEdit.jsp

    1. <%@ page language="java" contentType="text/html; charset=UTF-8"
    2. pageEncoding="UTF-8"%>
    3. "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    4. "Content-Type" content="text/html; charset=UTF-8">
    5. 班级编辑界面
    6. "${pageContext.request.contextPath }/clz/${empty b ? 'add' : 'edit'}" method="post">
    7. cid:"text" name="cid" value="${b.cid }">
    8. cname:"text" name="cname" value="${b.cname }">
    9. cteacher:"text" name="cteacher" value="${b.cteacher }">
    10. "submit">

    二、图片上传


    1、步骤
    1、springmvc.xml中添加多功能解析器配置

    2、前台的页面 添加 多功能表单设置  multipart/form-data

    3、后台要利用multipartFile类进行 文件接收

            注:multipartFile的属性名一定要跟form中的表单属性名一致

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

    2、导pom依赖

    1. commons-fileupload
    2. commons-fileupload
    3. 1.3.3

    3、springmvc-servlet.xml配置

    1. "multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    2. "defaultEncoding" value="UTF-8">
    3. "maxUploadSize" value="52428800">
    4. "resolveLazily" value="true"/>

    4、Dto编写

    Dto:接收参数,参数不仅仅存在于实体类Model中。

    1. package com.tsq.util;
    2. import com.tsq.model.Clazz;
    3. import org.springframework.web.multipart.MultipartFile;
    4. public class ClazzDto extends Clazz {
    5. private MultipartFile picFile;
    6. public MultipartFile getPicFile() {
    7. return picFile;
    8. }
    9. public void setPicFile(MultipartFile picFile) {
    10. this.picFile = picFile;
    11. }
    12. }

    将clazz.java 里的属性private 改为 protected

     5、编写ClazzController.java

    1. // 文件上传
    2. @RequestMapping("/upload")
    3. public String upload(ClazzDto clazzDto){
    4. try {
    5. //前台上传的文件
    6. MultipartFile picFile = clazzDto.getPicFile();
    7. //实际应该配置到resource.properties中
    8. String diskPath="E:/temp/images/";//图片存放地址
    9. //http://localhost:8080/upload/mvc/...png
    10. String requestPath="/upload/mvc/";//数据库保存地址,也是访问地址
    11. //拿到上传文件的名字
    12. String filename = picFile.getOriginalFilename();
    13. FileUtils.copyInputStreamToFile(picFile.getInputStream(),new File(diskPath+filename));
    14. //将图片上传图片之后,并且将图片地址更新到数据库中
    15. Clazz clazz=new Clazz();
    16. clazz.setCid(clazzDto.getCid());
    17. clazz.setPic(requestPath+filename);
    18. this.clazzBiz.updateByPrimaryKeySelective(clazz);
    19. }catch (Exception e){
    20. e.printStackTrace();
    21. }
    22. return "redirect:/clz/list";
    23. }

    三、下载

    1、步骤

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

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

    3、将硬盘中文件下载下来——>固定代码

    1. //文件下载
    2. @RequestMapping("/download")
    3. public ResponseEntity download(ClazzDto clazzDto){
    4. try {
    5. //1、点击下载传递文件的ID,通过文件的ID查询出文件的路径
    6. Clazz clazz = this.clazzBiz.selectByPrimaryKey(clazzDto.getCid());
    7. String pic=clazz.getPic();//
    8. String diskPath = "F:/刘昊然图片/";
    9. String requestPath = "/upload/mvc/";
    10. //2、通过文件的请求地址,转换成文件存放的硬盘地址
    11. String realPath = pic.replace(requestPath, diskPath);
    12. String fileName = realPath.substring(realPath.lastIndexOf("/")+1);
    13. // 3、将硬盘中文件下载下来——>固定代码
    14. File file=new File(realPath);
    15. HttpHeaders headers = new HttpHeaders();//http头信息
    16. String downloadFileName = new String(fileName.getBytes("UTF-8"),"iso-8859-1");//设置编码
    17. headers.setContentDispositionFormData("attachment", downloadFileName);
    18. headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
    19. //MediaType:互联网媒介类型 contentType:具体请求中的媒体类型信息
    20. return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.OK);
    21. }catch (Exception e){
    22. e.printStackTrace();
    23. }
    24. return null;
    25. }

    哈喽铁子们今天分享SpringMVC我们下次见

  • 相关阅读:
    Java 编程问题:一、字符串、数字和数学
    css和js放置的位置
    分库分表实战
    ansible 的安装及常见模块使用
    java.lang.unsupportedClassVersionError
    【数据结构与算法】十大经典排序算法
    中国农业大学:学硕11408复试线上涨40分,今年还会持续涨吗?中国农业大学计算机考研考情分析!
    UE5中一机一码功能
    密码学系列7-变幻多端的安全性证明
    Cheat Engine.exe修改植物大战僵尸阳光与冷却
  • 原文地址:https://blog.csdn.net/weixin_65565181/article/details/126416406