日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

尚硅谷智慧校园 —— 1、简介及环境搭建

發(fā)布時間:2023/12/18 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 尚硅谷智慧校园 —— 1、简介及环境搭建 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

學(xué)習(xí)尚硅谷智慧校園項(xiàng)目,視頻地址:https://www.bilibili.com/video/BV1AY4y1v7Xe?p=1

博客中圖片來源于:尚硅谷智慧校園 —— 1、簡介及環(huán)境搭建_Mr_zhangyj的博客-CSDN博客https://blog.csdn.net/Mr_zhangyj/article/details/124228757

目錄

1.2、項(xiàng)目模塊

1.3、使用的技術(shù)

2、環(huán)境搭建

2.1、使用 IDEA的 SpringBoot 創(chuàng)建一個Maven項(xiàng)目

2.2、在 pom.xml 導(dǎo)入依賴

2.3、準(zhǔn)備目錄結(jié)構(gòu)

2.4、配置?application.yaml

2.5、準(zhǔn)備分頁插件的配置類

2.6、準(zhǔn)備 swagger2 的配置類

2.7、準(zhǔn)備 util 下的工具類

2.7.1、驗(yàn)證碼圖片工具類

2.7.2、token口令生成工具 JwtHelper

2.7.3、解析request請求中的 token口令的工具AuthContextHolder

2.7.4、MD5加密工具類

2.7.5、響應(yīng)結(jié)果類型碼枚舉

2.7.6、JSON響應(yīng)結(jié)果格式封裝類

2.7.7、文件上傳工具類

2.8、創(chuàng)建數(shù)據(jù)表及數(shù)據(jù)

2.9、根據(jù)數(shù)據(jù)表準(zhǔn)備pojo、mapper、controller、service及其實(shí)現(xiàn)類


1、項(xiàng)目簡介


1.1、簡介
智慧校園管理系統(tǒng):主要是以年級、班級為單位,進(jìn)行老師和學(xué)生信息記錄和統(tǒng)計(jì)功能。項(xiàng)目采用前后端分離架構(gòu)思想,前端采用 HTML+CSS+VUE來實(shí)現(xiàn)頁面效果展示,后端采用 SpringBoot+MybatisPlus 框架實(shí)現(xiàn)數(shù)據(jù)存儲等服務(wù)。存儲層使用高性能的 MySQL,服務(wù)器使用 SpringBoot 內(nèi)置的Tomcat9.x,項(xiàng)目構(gòu)建工具使用Maven來管理jar包和項(xiàng)目構(gòu)建。


1.2、項(xiàng)目模塊

  • 項(xiàng)目角色(管理員,教師角色,學(xué)生角色)
  • 首頁展示,推出登錄
  • 學(xué)生管理模塊(增刪改查,篩選)
  • 教師管理模塊(增刪改查,篩選)
  • 班級管理模塊(增刪改查,篩選)
  • 年級管理模塊(增刪改查,篩選)
  • 管理員管理模塊(增刪改查,篩選)
  • 1.3、使用的技術(shù)

    2、環(huán)境搭建


    2.1、使用 IDEA的 SpringBoot 創(chuàng)建一個Maven項(xiàng)目


    設(shè)置好包名及存放位置,無需添加其他功能,后面會對 pom.xml 進(jìn)行改動,其他配置通過 maven 添加即可

    2.2、在 pom.xml 導(dǎo)入依賴


    為了避免影響其他插件的使用,需要使用較低的 SpringBoot 的版本

    這里數(shù)據(jù)庫用的版本是 mysql5.27版本,根據(jù)不同版本導(dǎo)入不同版本的依賴

    <?xml version="1.0" encoding="UTF-8"?> <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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!-- 繼承方式使用SpringBoot --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.1.RELEASE</version><relativePath/></parent><groupId>cn.xs</groupId><artifactId>myzhxy</artifactId><version>0.0.1-SNAPSHOT</version><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--單元測試啟動器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- thymeleaf支持--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><!-- mybatis-plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.3.1</version></dependency><!-- lombok插件簡化實(shí)體類開發(fā) --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!--mysql--><!--<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency>--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.38</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.3.1</version></dependency><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.31</version></dependency><!--swagger--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.7.0</version></dependency><!--swagger ui--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.7.0</version></dependency><!--swagger2 增強(qiáng)版接口文檔--><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>2.0.4</version></dependency><!--開發(fā)者工具--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.29</version></dependency><!-- JWT生成Token--><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.7.0</version></dependency><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.4</version></dependency></dependencies><build><plugins><!--spring boot maven插件 , 可以將項(xiàng)目運(yùn)行依賴的jar包打到我們的項(xiàng)目中--><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

    2.3、準(zhǔn)備目錄結(jié)構(gòu)

  • java目錄下

  • config : 項(xiàng)目的配置類

  • controller: 控制層

  • mapper : 持久層接口

  • pojo : 實(shí)體類

  • service: 服務(wù)層

  • util: 工具類包

  • resources目錄下

  • mapper :持久層映射文件

  • public/upload:文件上傳目錄

  • static: 靜態(tài)資源目錄

  • application.yml :SpringBoot核心配置文件

  • 2.4、配置?application.yaml

    server:port: 8080 #指定當(dāng)前項(xiàng)目啟動的端口號 spring:#解決SpringBoot2.6.0與swagger沖突問題【原因是在springboot2.6.0中將SpringMVC 默認(rèn)路徑匹配策略從AntPathMatcher 更改為PathPatternParser,導(dǎo)致出錯,解決辦法是切換回原先的AntPathMatcher】mvc:pathmatch:matching-strategy: ant_path_matcher#配置數(shù)據(jù)源datasource:#配置數(shù)據(jù)源類型type: com.zaxxer.hikari.HikariDataSource#配置數(shù)據(jù)庫連接屬性driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3308/atguigu_zhxy_db?characterEncoding=utf-8&useSSL=falseusername: rootpassword: roothikari:connection-test-query: SELECT 1connection-timeout: 60000idle-timeout: 500000max-lifetime: 540000maximum-pool-size: 12minimum-idle: 10pool-name: GuliHikariPoolthymeleaf:#模板的模式,支持 HTML, XML TEXT JAVASCRIPTmode: HTML5#編碼 可不用配置encoding: UTF-8#開發(fā)配置為false,避免修改模板還要重啟服務(wù)器cache: false#配置模板路徑,默認(rèn)是templates,可以不用配置prefix: classpath:/static/jackson:# 時間格式date-format: yyyy-MM-dd HH:mm:ss# 時區(qū)time-zone: GMT+8servlet:#設(shè)置文件上傳上限multipart:# 單個文件最大大小max-file-size: 10MB# 多個文件總共最大大小max-request-size: 100MB mybatis-plus:configuration:#添加日志支持log-impl: org.apache.ibatis.logging.stdout.StdOutImplmapper-locations: classpath*:/mapper/**/*.xml

    2.5、準(zhǔn)備分頁插件的配置類

    @Configuration @MapperScan("cn.xs.myzhxy.mapper") public class Myconfig {/** 分頁插件* */public PaginationInterceptor paginationInterceptor(){PaginationInterceptor paginationInterceptor = new PaginationInterceptor();//paginationInterceptor.setlimit(你的最大單頁限制數(shù)量,默認(rèn)500,小于0 eg:-1不受限制);return paginationInterceptor;} }

    2.6、準(zhǔn)備 swagger2 的配置類


    訪問 localhost:端口號/swagger-ui.html,即可查看接口文檔

    只有有 ?Api 相關(guān)的注解才會生成

    @Api 標(biāo)注在類上,示例:@Api(tags = "年級控制器")

    @ApiOperation 標(biāo)注在方法上,示例:@ApiOperation("(批量)刪除年級信息")

    @ApiParam 標(biāo)注在方法參數(shù)上,示例:@ApiParam("要刪除的年級信息的id的JSON集合")

    @RequestBody List<Integer> ids

    (部分內(nèi)容可自定義修改,固定模板)

    @Configuration @EnableSwagger2 public class Swagger2Config {@Beanpublic Docket webApiConfig(){//添加head參數(shù)startList<Parameter> pars = new ArrayList<>();ParameterBuilder tokenPar = new ParameterBuilder();tokenPar.name("userId").description("用戶ID").defaultValue("1").modelRef(new ModelRef("string")).parameterType("header").required(false).build();pars.add(tokenPar.build());ParameterBuilder tmpPar = new ParameterBuilder();tmpPar.name("userTempId").description("臨時用戶ID").defaultValue("1").modelRef(new ModelRef("string")).parameterType("header").required(false).build();pars.add(tmpPar.build());//添加head參數(shù)endreturn new Docket(DocumentationType.SWAGGER_2).groupName("webApi").apiInfo(webApiInfo()).select()//可以測試請求頭中:輸入token// 有 ApiOperation 注解才生成//.apis(RequestHandlerSelectors.withClassAnnotation(ApiOperation.class))// 掃描的基礎(chǔ)包.apis(RequestHandlerSelectors.basePackage("cn.xs.myzhxy.controller"))//過濾掉admin路徑下的所有頁面//.paths(Predicates.and(PathSelectors.regex("/sms/.*")))//過濾掉所有error或error.*頁面//.paths(Predicates.not(PathSelectors.regex("/error.*"))).build().globalOperationParameters(pars);}private ApiInfo webApiInfo(){return new ApiInfoBuilder().title("網(wǎng)站-API文檔").description("本文檔描述了網(wǎng)站微服務(wù)接口定義").version("1.0").contact(new Contact("xiaoshuang", "http://xiaoshuang.com", "s1791584877@163.com")).build();}private ApiInfo adminApiInfo(){return new ApiInfoBuilder().title("后臺管理系統(tǒng)-API文檔").description("本文檔描述了后臺管理系統(tǒng)微服務(wù)接口定義").version("1.0").contact(new Contact("xiaoshuang", "http://xiaoshuang.com", "s1791584877@163.com")).build();}}

    2.7、準(zhǔn)備 util 下的工具類

    package cn.xs.myzhxy.util(包下)

    2.7.1、驗(yàn)證碼圖片工具類

    public class CreateVerifiCodeImage {private static int WIDTH = 90;private static int HEIGHT = 35;private static int FONT_SIZE = 20; //字符大小private static char[] verifiCode; //驗(yàn)證碼private static BufferedImage verifiCodeImage; //驗(yàn)證碼圖片/*** @description: 獲取驗(yàn)證碼圖片* @param: no* @return: java.awt.image.BufferedImage*/public static BufferedImage getVerifiCodeImage() {verifiCodeImage = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_BGR);// create a imageGraphics graphics = verifiCodeImage.getGraphics();verifiCode = generateCheckCode();drawBackground(graphics);drawRands(graphics, verifiCode);graphics.dispose();return verifiCodeImage;}/*** @description: 獲取驗(yàn)證碼* @param: no* @return: char[]*/public static char[] getVerifiCode() {return verifiCode;}/*** @description: 隨機(jī)生成驗(yàn)證碼* @param: no* @return: char[]*/private static char[] generateCheckCode() {String chars = "0123456789abcdefghijklmnopqrstuvwxyz" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ";char[] rands = new char[4];for (int i = 0; i < 4; i++) {int rand = (int) (Math.random() * (10 + 26 * 2));rands[i] = chars.charAt(rand);}return rands;}/*** @description: 繪制驗(yàn)證碼* @param: g* @param: rands* @return: void*/private static void drawRands(Graphics g, char[] rands) {g.setFont(new Font("Console", Font.BOLD, FONT_SIZE));for (int i = 0; i < rands.length; i++) {g.setColor(getRandomColor());g.drawString("" + rands[i], i * FONT_SIZE + 10, 25);}}/*** @description: 繪制驗(yàn)證碼圖片背景* @param: g* @return: void*/private static void drawBackground(Graphics g) {g.setColor(Color.white);g.fillRect(0, 0, WIDTH, HEIGHT);// 繪制驗(yàn)證碼干擾點(diǎn)for (int i = 0; i < 200; i++) {int x = (int) (Math.random() * WIDTH);int y = (int) (Math.random() * HEIGHT);g.setColor(getRandomColor());g.drawOval(x, y, 1, 1);}}/*** @description: 獲取隨機(jī)顏色* @param: no* @return: java.awt.Color*/private static Color getRandomColor() {Random ran = new Random();return new Color(ran.nextInt(220), ran.nextInt(220), ran.nextInt(220));}}

    2.7.2、token口令生成工具 JwtHelper

    public class JwtHelper {private static long tokenExpiration = 24 * 60 * 60 * 1000;private static String tokenSignKey = "123456";//生成token字符串public static String createToken(Long userId, Integer userType) {String token = Jwts.builder().setSubject("YYGH-USER").setExpiration(new Date(System.currentTimeMillis() + tokenExpiration)).claim("userId", userId) // .claim("userName", userName).claim("userType", userType).signWith(SignatureAlgorithm.HS512, tokenSignKey).compressWith(CompressionCodecs.GZIP).compact();return token;}//從token字符串獲取useridpublic static Long getUserId(String token) {if (StringUtils.isEmpty(token)) return null;Jws<Claims> claimsJws = Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token);Claims claims = claimsJws.getBody();Integer userId = (Integer) claims.get("userId");return userId.longValue();}//從token字符串獲取userTypepublic static Integer getUserType(String token) {if (StringUtils.isEmpty(token)) return null;Jws<Claims> claimsJws= Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token);Claims claims = claimsJws.getBody();return (Integer) (claims.get("userType"));}//從token字符串獲取userNamepublic static String getUserName(String token) {if (StringUtils.isEmpty(token)) return "";Jws<Claims> claimsJws= Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token);Claims claims = claimsJws.getBody();return (String) claims.get("userName");}//判斷token是否有效public static boolean isExpiration(String token) {try {boolean isExpire = Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token).getBody().getExpiration().before(new Date());//沒有過期,有效,返回falsereturn isExpire;} catch (Exception e) {//過期出現(xiàn)異常,返回truereturn true;}}/*** 刷新Token* @param token* @return*/public String refreshToken(String token) {String refreshedToken;try {final Claims claims = Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token).getBody();refreshedToken = JwtHelper.createToken(getUserId(token), getUserType(token));} catch (Exception e) {refreshedToken = null;}return refreshedToken;}public static void main(String[] args) { // String token = JwtHelper.createToken(1L, "lucy"); // System.out.println(token); // System.out.println(JwtHelper.getUserId(token)); // System.out.println(JwtHelper.getUserName(token));} }

    2.7.3、解析request請求中的 token口令的工具AuthContextHolder

    public class AuthContextHolder {//從請求頭token獲取useridpublic static Long getUserIdToken(HttpServletRequest request) {//從請求頭tokenString token = request.getHeader("token");//調(diào)用工具類Long userId = JwtHelper.getUserId(token);return userId;}//從請求頭token獲取namepublic static String getUserName(HttpServletRequest request) {//從header獲取tokenString token = request.getHeader("token");//jwt從token獲取usernameString userName = JwtHelper.getUserName(token);return userName;} }

    2.7.4、MD5加密工具類

    public final class MD5 {/*** 將明文轉(zhuǎn)為密文* @param strSrc 明文* @return 密文*/public static String encrypt(String strSrc) {try {char hexChars[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8','9', 'a', 'b', 'c', 'd', 'e', 'f' };byte[] bytes = strSrc.getBytes();MessageDigest md = MessageDigest.getInstance("MD5");md.update(bytes);bytes = md.digest();int j = bytes.length;char[] chars = new char[j * 2];int k = 0;for (int i = 0; i < bytes.length; i++) {byte b = bytes[i];chars[k++] = hexChars[b >>> 4 & 0xf];chars[k++] = hexChars[b & 0xf];}return new String(chars);} catch (NoSuchAlgorithmException e) {e.printStackTrace();throw new RuntimeException("MD5加密出錯!!+" + e);}}}

    2.7.5、響應(yīng)結(jié)果類型碼枚舉

    @Getter public enum ResultCodeEnum {SUCCESS(200,"成功"),FAIL(201, "失敗"),SERVICE_ERROR(2012, "服務(wù)異常"),ILLEGAL_REQUEST( 204, "非法請求"),PAY_RUN(205, "支付中"),ARGUMENT_VALID_ERROR(206, "參數(shù)校驗(yàn)錯誤"),LOGIN_ERROR(207, "用戶名或密碼錯誤"),LOGIN_AUTH(208, "未登陸"),PERMISSION(209, "沒有權(quán)限"),SECKILL_NO_START(210, "秒殺還沒開始"),SECKILL_RUN(211, "正在排隊(duì)中"),SECKILL_NO_PAY_ORDER(212, "您有未支付的訂單"),SECKILL_FINISH(213, "已售罄"),SECKILL_END(214, "秒殺已結(jié)束"),SECKILL_SUCCESS(215, "搶單成功"),SECKILL_FAIL(216, "搶單失敗"),SECKILL_ILLEGAL(217, "請求不合法"),SECKILL_ORDER_SUCCESS(218, "下單成功"),COUPON_GET(220, "優(yōu)惠券已經(jīng)領(lǐng)取"),COUPON_LIMIT_GET(221, "優(yōu)惠券已發(fā)放完畢"),LOGIN_CODE(222,"長時間未操作,會話已失效,請刷新頁面后重試!"),CODE_ERROR(223,"驗(yàn)證碼錯誤!"),TOKEN_ERROR(224,"Token無效!");private Integer code;private String message;private ResultCodeEnum(Integer code, String message) {this.code = code;this.message = message;} }

    2.7.6、JSON響應(yīng)結(jié)果格式封裝類

    @Data @ApiModel(value = "全局統(tǒng)一返回結(jié)果") public class Result<T> {@ApiModelProperty(value = "返回碼")private Integer code;@ApiModelProperty(value = "返回消息")private String message;@ApiModelProperty(value = "返回?cái)?shù)據(jù)")private T data;public Result(){}// 返回?cái)?shù)據(jù)protected static <T> Result<T> build(T data) {Result<T> result = new Result<T>();if (data != null)result.setData(data);return result;}public static <T> Result<T> build(T body, ResultCodeEnum resultCodeEnum) {Result<T> result = build(body);result.setCode(resultCodeEnum.getCode());result.setMessage(resultCodeEnum.getMessage());return result;}public static<T> Result<T> ok(){return Result.ok(null);}/*** 操作成功* @param data* @param <T>* @return*/public static<T> Result<T> ok(T data){Result<T> result = build(data);return build(data, ResultCodeEnum.SUCCESS);}public static<T> Result<T> fail(){return Result.fail(null);}/*** 操作失敗* @param data* @param <T>* @return*/public static<T> Result<T> fail(T data){Result<T> result = build(data);return build(data, ResultCodeEnum.FAIL);}public Result<T> message(String msg){this.setMessage(msg);return this;}public Result<T> code(Integer code){this.setCode(code);return this;}public boolean isOk() {if(this.getCode().intValue() == ResultCodeEnum.SUCCESS.getCode().intValue()) {return true;}return false;} }

    2.7.7、文件上傳工具類

    public class UploadFile {//存儲文件上傳失敗的錯誤信息private static Map<String, Object> error_result = new HashMap<>();//存儲頭像的上傳結(jié)果信息private static Map<String, Object> upload_result = new HashMap<>();/*** @description: 效驗(yàn)所上傳圖片的大小及格式等信息...* @param: photo* @param: path* @return: java.util.Map<java.lang.String, java.lang.Object>*/private static Map<String, Object> uploadPhoto(MultipartFile photo, String path) {//限制頭像大小(20M)int MAX_SIZE = 20971520;//獲取圖片的原始名稱String orginalName = photo.getOriginalFilename();//如果保存文件的路徑不存在,則創(chuàng)建該目錄File filePath = new File(path);if (!filePath.exists()) {filePath.mkdirs();}//限制上傳文件的大小if (photo.getSize() > MAX_SIZE) {error_result.put("success", false);error_result.put("msg", "上傳的圖片大小不能超過20M喲!");return error_result;}// 限制上傳的文件類型String[] suffixs = new String[]{".png", ".PNG", ".jpg", ".JPG", ".jpeg", ".JPEG", ".gif", ".GIF", ".bmp", ".BMP"};SuffixFileFilter suffixFileFilter = new SuffixFileFilter(suffixs);if (!suffixFileFilter.accept(new File(path + orginalName))) {error_result.put("success", false);error_result.put("msg", "禁止上傳此類型文件! 請上傳圖片喲!");return error_result;}return null;}/*** @description: (提取公共代碼 : 提高代碼的可重用性)獲取頭像的上傳結(jié)果信息* @param: photo* @param: dirPaht* @param: portraitPath* @return: java.util.Map<java.lang.String, java.lang.Object>*/public static Map<String, Object> getUploadResult(MultipartFile photo, String dirPaht, String portraitPath) {if (!photo.isEmpty() && photo.getSize() > 0) {//獲取圖片的原始名稱String orginalName = photo.getOriginalFilename();//上傳圖片,error_result:存儲頭像上傳失敗的錯誤信息Map<String, Object> error_result = UploadFile.uploadPhoto(photo, dirPaht);if (error_result != null) {return error_result;}//使用UUID重命名圖片名稱(uuid__原始圖片名稱)String newPhotoName = UUID.randomUUID() + "__" + orginalName;//將上傳的文件保存到目標(biāo)目錄下try {photo.transferTo(new File(dirPaht + newPhotoName));upload_result.put("success", true);upload_result.put("portrait_path", portraitPath + newPhotoName);//將存儲頭像的項(xiàng)目路徑返回給頁面} catch (IOException e) {e.printStackTrace();upload_result.put("success", false);upload_result.put("msg", "上傳文件失敗! 服務(wù)器端發(fā)生異常!");return upload_result;}} else {upload_result.put("success", false);upload_result.put("msg", "頭像上傳失敗! 未找到指定圖片!");}return upload_result;} }

    2.8、創(chuàng)建數(shù)據(jù)表及數(shù)據(jù)

    SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0;-- ---------------------------- -- Table structure for tb_admin -- ---------------------------- DROP TABLE IF EXISTS `tb_admin`; CREATE TABLE `tb_admin` (`id` INT(11) NOT NULL AUTO_INCREMENT,`name` VARCHAR(15) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`gender` CHAR(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`password` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`email` VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`telephone` VARCHAR(12) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`address` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`portrait_path` VARCHAR(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE ) ENGINE = INNODB AUTO_INCREMENT = 157 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;-- ---------------------------- -- Records of tb_admin -- ---------------------------- INSERT INTO `tb_admin` VALUES (101, 'admin', '女', '21232f297a57a5a743894a0e4a801fc3', '111111@qq.com', '13260161111', '昌平', 'upload/default.jpg'); INSERT INTO `tb_admin` VALUES (102, 'admin1', '男', '21232f297a57a5a743894a0e4a801fc3', '512111559@qq.com', '13260166090', '北京', 'upload/default.jpg'); INSERT INTO `tb_admin` VALUES (103, 'admin2', '男', '21232f297a57a5a743894a0e4a801fc3', '512111559@qq.com', '13260166090', '北京', 'upload/default.jpg'); INSERT INTO `tb_admin` VALUES (104, 'admin3', '男', '21232f297a57a5a743894a0e4a801fc3', '123456@qq.com', '13666666666', '宏福苑', 'upload/default.jpg');-- ---------------------------- -- Table structure for tb_clazz -- ---------------------------- DROP TABLE IF EXISTS `tb_clazz`; CREATE TABLE `tb_clazz` (`id` INT(11) NOT NULL AUTO_INCREMENT,`name` VARCHAR(15) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`number` INT(3) NULL DEFAULT NULL,`introducation` VARCHAR(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`headmaster` VARCHAR(15) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`email` VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`telephone` VARCHAR(12) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`grade_name` VARCHAR(15) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE ) ENGINE = INNODB AUTO_INCREMENT = 10 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;-- ---------------------------- -- Records of tb_clazz -- ---------------------------- INSERT INTO `tb_clazz` VALUES (1, '一年一班', 30, '大圣的一年一班好', '大圣', 'dasheng@163.com', '13260166090', '一年級'); INSERT INTO `tb_clazz` VALUES (2, '一年二班', 28, '小張的一年二班好', '小張', 'xiaozhang@163.com', '13260166090', '一年級'); INSERT INTO `tb_clazz` VALUES (3, '二年一班', 35, '小韓的二年一班好', '小韓', 'xiaohan@163.com', '13260166090', '二年級'); INSERT INTO `tb_clazz` VALUES (4, '二年二班', 30, '小強(qiáng)的二年二班好', '小強(qiáng)', 'xiaoqiang@163.com', '13260166090', '二年級'); INSERT INTO `tb_clazz` VALUES (5, '三年一班', 30, '小花的三年一班好', '小花', 'xiaohua@163.com', '13260166090', '三年級'); INSERT INTO `tb_clazz` VALUES (6, '三年二班', 30, '小趙的三年二班好', '小趙', 'xiaozhao@163.com', '13260166090', '三年級'); INSERT INTO `tb_clazz` VALUES (7, '四年一班', 30, '小趙的三年二班好', '小飛', 'xiaofei@163.com', '13260166090', '四年級');-- ---------------------------- -- Table structure for tb_grade -- ---------------------------- DROP TABLE IF EXISTS `tb_grade`; CREATE TABLE `tb_grade` (`id` INT(11) NOT NULL AUTO_INCREMENT,`name` VARCHAR(15) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '',`manager` VARCHAR(15) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`email` VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`telephone` VARCHAR(12) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`introducation` VARCHAR(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,PRIMARY KEY (`id`, `name`) USING BTREE ) ENGINE = INNODB AUTO_INCREMENT = 12 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;-- ---------------------------- -- Records of tb_grade -- ---------------------------- INSERT INTO `tb_grade` VALUES (1, '一年級', '大圣', 'dasheng@163.com', '13260166090', '大學(xué)一年級'); INSERT INTO `tb_grade` VALUES (2, '二年級', '小魏', 'xiaowei@163.com', '13260166090', '大學(xué)二年級'); INSERT INTO `tb_grade` VALUES (3, '三年級', '小李', 'xiaoli@163.com', '13666666666', '三年級,這個班級的孩子們很有才藝'); INSERT INTO `tb_grade` VALUES (4, '五年級', '小麗', 'li@123.com', '13666666666', '這個年級的同學(xué)多才多活力'); INSERT INTO `tb_grade` VALUES (5, '六年級', '小明', 'xiaoming@666.com', '13666666666', '這個年級的主任是小明');-- ---------------------------- -- Table structure for tb_student -- ---------------------------- DROP TABLE IF EXISTS `tb_student`; CREATE TABLE `tb_student` (`id` INT(11) NOT NULL AUTO_INCREMENT,`sno` VARCHAR(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`name` VARCHAR(15) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`gender` CHAR(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`password` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`email` VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`telephone` VARCHAR(12) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`address` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`introducation` VARCHAR(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`portrait_path` VARCHAR(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`clazz_name` VARCHAR(15) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE ) ENGINE = INNODB AUTO_INCREMENT = 10 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;-- ---------------------------- -- Records of tb_student -- ---------------------------- INSERT INTO `tb_student` VALUES (1, '1001', '張小明', '男', 'e10adc3949ba59abbe56e057f20f883e', 'yinyufei@163.com', '13260166090', '北京天通苑', '這個學(xué)生學(xué)習(xí)好', 'upload/default.jpg', '一年一班'); INSERT INTO `tb_student` VALUES (2, '1002', '郭建超', '男', 'e10adc3949ba59abbe56e057f20f883e', 'guojianchao@163.com', '13260166090', '北京昌平', '這個學(xué)生會功夫', 'upload/default.jpg', '一年一班'); INSERT INTO `tb_student` VALUES (3, '1003', '史汶鑫', '男', 'e10adc3949ba59abbe56e057f20f883e', 'shiwenxin@163.com', '13260166090', '北京昌平', '這個學(xué)生酒量好', 'upload/default.jpg', '二年一班'); INSERT INTO `tb_student` VALUES (4, '1004', '高建軍', '男', 'e10adc3949ba59abbe56e057f20f883e', 'gaojianjun@163.com', '13260166090', '北京昌平', '這個學(xué)生會做飯', 'upload/default.jpg', '二年一班'); INSERT INTO `tb_student` VALUES (5, '1005', '鄒偉斌', '男', 'e10adc3949ba59abbe56e057f20f883e', 'zouweibin@163.com', '13260166090', '北京昌平', '這個學(xué)生能吃辣', 'upload/default.jpg', '三年一班'); INSERT INTO `tb_student` VALUES (6, '1006', '劉路', '男', 'e10adc3949ba59abbe56e057f20f883e', 'liulu@163.com', '13260166090', '北京昌平', '這個學(xué)生是學(xué)霸', 'upload/default.jpg', '三年二班'); INSERT INTO `tb_student` VALUES (7, '1007', '龐家仨', '女', 'e10adc3949ba59abbe56e057f20f883e', 'pangjiasan@163.com', '13260166090', '北京昌平', '這個學(xué)生海拔高', 'upload/default.jpg', '三年二班'); INSERT INTO `tb_student` VALUES (8, '1008', '譚帥', '男', 'e10adc3949ba59abbe56e057f20f883e', 'tanshuai@163.com', '13260166090', '北京昌平', '這個學(xué)生想考研', 'upload/default.jpg', '四年一班');-- ---------------------------- -- Table structure for tb_teacher -- ---------------------------- DROP TABLE IF EXISTS `tb_teacher`; CREATE TABLE `tb_teacher` (`id` INT(11) NOT NULL AUTO_INCREMENT,`tno` VARCHAR(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`name` VARCHAR(15) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`gender` CHAR(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`password` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`email` VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`telephone` VARCHAR(12) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`address` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`portrait_path` VARCHAR(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`clazz_name` VARCHAR(15) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE ) ENGINE = INNODB AUTO_INCREMENT = 9 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;-- ---------------------------- -- Records of tb_teacher -- ---------------------------- INSERT INTO `tb_teacher` VALUES (1, '101', '大圣', '女', '123456', 'dasheng@163.com', '13260166090', '北京昌平', 'upload/default.jpg', '一年一班'); INSERT INTO `tb_teacher` VALUES (2, '102', '小張', '男', 'e10adc3949ba59abbe56e057f20f883e', 'xiaozhang@163.com', '13260166090', '北京海淀', 'upload/default.jpg', '一年二班'); INSERT INTO `tb_teacher` VALUES (3, '103', '小韓', '男', 'e10adc3949ba59abbe56e057f20f883e', 'xiaohan@163.com', '13260166090', '北京朝陽', 'upload/default.jpg', '二年一班'); INSERT INTO `tb_teacher` VALUES (4, '104', '小強(qiáng)', '男', 'e10adc3949ba59abbe56e057f20f883e', 'xiaoqiang@163.com', '13260166090', '北京通州', 'upload/default.jpg', '二年二班'); INSERT INTO `tb_teacher` VALUES (5, '105', '小花', '男', 'e10adc3949ba59abbe56e057f20f883e', 'xiaohua@163.com', '13260166090', '北京順義', 'upload/default.jpg', '三年一班'); INSERT INTO `tb_teacher` VALUES (6, '106', '小趙', '男', 'e10adc3949ba59abbe56e057f20f883e', 'xiaozhao@163.com', '13260166090', '北京東城', 'upload/default.jpg', '三年二班'); INSERT INTO `tb_teacher` VALUES (7, '107', '小飛', '男', 'e10adc3949ba59abbe56e057f20f883e', 'xiaofei@163.com', '13260166090', '北京西城', 'upload/default.jpg', '四年一班'); INSERT INTO `tb_teacher` VALUES (8, '108', '秀秀', '女', 'e10adc3949ba59abbe56e057f20f883e', '123456@123.com', '13855555555', '海淀', 'upload/12fe07bf8b6d493b96294f1ef0552339default.jpg', '一年一班');SET FOREIGN_KEY_CHECKS = 1;

    2.9、根據(jù)數(shù)據(jù)表準(zhǔn)備pojo、mapper、controller、service及其實(shí)現(xiàn)類

    這里展示admin,其他操作一樣

    @Data @AllArgsConstructor @NoArgsConstructor @TableName("tb_admin") public class Admin {@TableId(value = "id", type = IdType.AUTO)private Integer id;private String name;private Character gender;private String password;private String email;private String telephone;private String address;private String portraitPath; // 頭像圖片路徑 } @Mapper public interface AdminMapper extends BaseMapper<Admin> { } public interface AdminService extends IService<Admin> { } @Service("adminServiceImpl") @Transactional public class AdminServiceImpl extends ServiceImpl<AdminMapper, Admin> implements AdminService { } @RestController @RequestMapping("/sms/adminController") public class AdminController { }

    完成以上搭建后,應(yīng)該可以實(shí)現(xiàn)對首頁的訪問

    總結(jié)

    以上是生活随笔為你收集整理的尚硅谷智慧校园 —— 1、简介及环境搭建的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。