wuheng 2 år sedan
förälder
incheckning
5f317dbffd
31 ändrade filer med 366 tillägg och 51 borttagningar
  1. 16 16
      day04/src/main/java/com/lovecoding/mvc/AnnoApplicataion.java
  2. 25 25
      day04/src/main/java/com/lovecoding/mvc/Application.java
  3. 15 4
      day04/src/main/java/com/lovecoding/mvc/MybatisTestController.java
  4. 31 4
      day04/src/main/java/com/lovecoding/mvc/TestController.java
  5. 23 0
      day04/src/main/java/com/lovecoding/mvc/config/DateConverter.java
  6. 1 1
      day04/src/main/java/com/lovecoding/mvc/config/SpringConfig.java
  7. 7 0
      day04/src/main/java/com/lovecoding/mvc/config/SpringMvcConfig.java
  8. 41 0
      day04/src/main/java/com/lovecoding/mvc/config/SwaggerConfig.java
  9. 8 1
      day04/src/main/java/com/lovecoding/mvc/doman/Book.java
  10. 12 0
      day04/src/main/resources/spring.xml
  11. 19 0
      day04/src/main/webapp/date.jsp
  12. 20 0
      day04/src/main/webapp/form.jsp
  13. BIN
      day04/src/main/webapp/swagger/favicon-16x16.png
  14. BIN
      day04/src/main/webapp/swagger/favicon-32x32.png
  15. 16 0
      day04/src/main/webapp/swagger/index.css
  16. 19 0
      day04/src/main/webapp/swagger/index.html
  17. 79 0
      day04/src/main/webapp/swagger/oauth2-redirect.html
  18. 20 0
      day04/src/main/webapp/swagger/swagger-initializer.js
  19. 1 0
      day04/src/main/webapp/swagger/swagger-ui-bundle.js
  20. 0 0
      day04/src/main/webapp/swagger/swagger-ui-bundle.js.map
  21. 1 0
      day04/src/main/webapp/swagger/swagger-ui-es-bundle-core.js
  22. 0 0
      day04/src/main/webapp/swagger/swagger-ui-es-bundle-core.js.map
  23. 1 0
      day04/src/main/webapp/swagger/swagger-ui-es-bundle.js
  24. 0 0
      day04/src/main/webapp/swagger/swagger-ui-es-bundle.js.map
  25. 1 0
      day04/src/main/webapp/swagger/swagger-ui-standalone-preset.js
  26. 0 0
      day04/src/main/webapp/swagger/swagger-ui-standalone-preset.js.map
  27. 0 0
      day04/src/main/webapp/swagger/swagger-ui.css
  28. 0 0
      day04/src/main/webapp/swagger/swagger-ui.css.map
  29. 0 0
      day04/src/main/webapp/swagger/swagger-ui.js
  30. 0 0
      day04/src/main/webapp/swagger/swagger-ui.js.map
  31. 10 0
      pom.xml

+ 16 - 16
day04/src/main/java/com/lovecoding/mvc/AnnoApplicataion.java

@@ -4,19 +4,19 @@ import com.lovecoding.mvc.config.SpringConfig;
 import com.lovecoding.mvc.config.SpringMvcConfig;
 import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
 
-public class AnnoApplicataion extends AbstractAnnotationConfigDispatcherServletInitializer {
-    @Override
-    protected Class<?>[] getRootConfigClasses() {
-        return new Class[]{SpringConfig.class};
-    }
-
-    @Override
-    protected Class<?>[] getServletConfigClasses() {
-        return new Class[]{SpringMvcConfig.class};
-    }
-
-    @Override
-    protected String[] getServletMappings() {
-        return new String[]{"/"};
-    }
-}
+//public class AnnoApplicataion extends AbstractAnnotationConfigDispatcherServletInitializer {
+//    @Override
+//    protected Class<?>[] getRootConfigClasses() {
+//        return new Class[]{SpringConfig.class};
+//    }
+//
+//    @Override
+//    protected Class<?>[] getServletConfigClasses() {
+//        return new Class[]{SpringMvcConfig.class};
+//    }
+//
+//    @Override
+//    protected String[] getServletMappings() {
+//        return new String[]{"/"};
+//    }
+//}

+ 25 - 25
day04/src/main/java/com/lovecoding/mvc/Application.java

@@ -12,28 +12,28 @@ import javax.servlet.ServletContext;
 import javax.servlet.ServletException;
 import javax.servlet.ServletRegistration;
 
-//public class Application implements WebApplicationInitializer {
-//
-//    @Override
-//    public void onStartup(ServletContext servletContext) throws ServletException {
-//
-//        XmlWebApplicationContext applicationContext = new XmlWebApplicationContext();
-//        applicationContext.setConfigLocation("classpath:spring.xml");
-//
-////        AnnotationConfigWebApplicationContext applicationContext =
-////                new AnnotationConfigWebApplicationContext();
-////        applicationContext.register( SpringConfig.class );
-//
-//        //配置 MVC 配置档
-//        //配置 Mybatis配置档
-//        DispatcherServlet dispatcherServlet = new DispatcherServlet(applicationContext);
-//
-//        ServletRegistration.Dynamic dispatcher =
-//                servletContext.addServlet("dispatcher", dispatcherServlet);
-//
-//        dispatcher.setLoadOnStartup(1);
-//        dispatcher.addMapping("/");
-//
-//    }
-//
-//}
+public class Application implements WebApplicationInitializer {
+
+    @Override
+    public void onStartup(ServletContext servletContext) throws ServletException {
+
+        XmlWebApplicationContext applicationContext = new XmlWebApplicationContext();
+        applicationContext.setConfigLocation("classpath:spring.xml");
+
+//        AnnotationConfigWebApplicationContext applicationContext =
+//                new AnnotationConfigWebApplicationContext();
+//        applicationContext.register( SpringConfig.class );
+
+        //配置 MVC 配置档
+        //配置 Mybatis配置档
+        DispatcherServlet dispatcherServlet = new DispatcherServlet(applicationContext);
+
+        ServletRegistration.Dynamic dispatcher =
+                servletContext.addServlet("dispatcher", dispatcherServlet);
+
+        dispatcher.setLoadOnStartup(1);
+        dispatcher.addMapping("/");
+
+    }
+
+}

+ 15 - 4
day04/src/main/java/com/lovecoding/mvc/MybatisTestController.java

@@ -3,7 +3,12 @@ package com.lovecoding.mvc;
 import com.lovecoding.mvc.doman.Book;
 import com.lovecoding.mvc.mapper.BookMapper;
 import com.lovecoding.mvc.service.BookService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -12,6 +17,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
 import java.util.List;
 
 @Controller
+@Api(value= "MybatisController", description = "这个控制器是用来测试Mybatis接口的")
 public class MybatisTestController {
 
     @Autowired
@@ -19,12 +25,17 @@ public class MybatisTestController {
 
     @GetMapping("/mybatis")
     @ResponseBody
-    public Book test(){
-
-        Book book = bookService.get(1L);
+    @ApiOperation(
+            value = "测试获取书本信息",
+            notes = "获取书本信息",
+            httpMethod = "GET",
+            produces = MediaType.APPLICATION_FORM_URLENCODED_VALUE
+    )
+    @ApiImplicitParams({})
+    public Book test(@ApiParam(value = "这个bookID是用来获取书本的ID, 为Long类型") Long bookId){
+        Book book = bookService.get(bookId);
         System.out.println( book );
         return book;
-
     }
 
 }

+ 31 - 4
day04/src/main/java/com/lovecoding/mvc/TestController.java

@@ -1,18 +1,26 @@
 package com.lovecoding.mvc;
 
+import com.lovecoding.mvc.doman.Book;
 import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.ExceptionHandler;
-import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.filter.HttpPutFormContentFilter;
 import org.springframework.web.filter.reactive.HiddenHttpMethodFilter;
 import org.springframework.web.servlet.ModelAndView;
 
+import java.util.Date;
+
 @Controller
 public class TestController {
 
+    /**
+     * Swagger 他是一个效率工具
+     * 它存在的意义在于 提交 前后端沟通效率
+     * @param id
+     * @return
+     */
     @GetMapping("/test")
-    public String test(){
-        int n = 1 / 0;
+    public String test( int id ){
+        //int n = 1 / 0;
         //Long i = null;
         //System.out.println( i.longValue() );
 
@@ -29,5 +37,24 @@ public class TestController {
 //        return modelAndView;
 //    }
 
+    @ResponseBody
+    @PostMapping("/jsontest")
+    public Book getBook(@RequestBody Book book ) {
+
+        System.out.println( book );
+
+        return book;
+    }
+
+
+    @ResponseBody
+    @PostMapping("/date")
+    public String getBook(Date mydate ) {
+
+        System.out.println( mydate );
+
+        return "OK";
+        //return date.toLocaleString();
+    }
 
 }

+ 23 - 0
day04/src/main/java/com/lovecoding/mvc/config/DateConverter.java

@@ -0,0 +1,23 @@
+package com.lovecoding.mvc.config;
+
+import org.springframework.core.convert.converter.Converter;
+import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class DateConverter implements Converter<String, Date> {
+    @Override
+    public Date convert(String date) {
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        Date parse = null;
+        try {
+            parse = simpleDateFormat.parse(date);
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        return parse;
+    }
+}

+ 1 - 1
day04/src/main/java/com/lovecoding/mvc/config/SpringConfig.java

@@ -1,6 +1,7 @@
 package com.lovecoding.mvc.config;
 
 import org.springframework.context.annotation.*;
+import org.springframework.core.convert.converter.Converter;
 import org.springframework.web.servlet.HandlerExceptionResolver;
 import org.springframework.web.servlet.config.annotation.EnableWebMvc;
 import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver;
@@ -11,7 +12,6 @@ import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver;
 @PropertySource("classpath:db.properties")
 public class SpringConfig {
 
-
 //    @Bean
 //    public HandlerExceptionResolver getMyException(){
 //        MyException myException = new MyException();

+ 7 - 0
day04/src/main/java/com/lovecoding/mvc/config/SpringMvcConfig.java

@@ -1,7 +1,10 @@
 package com.lovecoding.mvc.config;
 
+import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.core.convert.converter.Converter;
+import org.springframework.format.FormatterRegistry;
 import org.springframework.web.servlet.config.annotation.EnableWebMvc;
 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@@ -11,6 +14,10 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 @EnableWebMvc
 public class SpringMvcConfig implements WebMvcConfigurer {
 
+    public void addFormatters(FormatterRegistry registry) {
+        registry.addConverter(new DateConverter());
+    }
+
 //    public void addInterceptors(InterceptorRegistry registry) {
 //
 //        //如此配置 全局可用 当前框架所有MVC请求都被 拦截器过滤了

+ 41 - 0
day04/src/main/java/com/lovecoding/mvc/config/SwaggerConfig.java

@@ -0,0 +1,41 @@
+package com.lovecoding.mvc.config;
+
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+@Configuration
+@EnableSwagger2
+@ComponentScan("com.lovecoding.mvc")
+public class SwaggerConfig {
+
+    @Bean
+    public Docket getDocket() {
+        return new Docket(DocumentationType.SWAGGER_2)
+                .apiInfo(apiInfo())
+                .select()
+                .apis(RequestHandlerSelectors.any())
+                .paths(PathSelectors.any())
+                .build();
+    }
+    private ApiInfo apiInfo() {
+        ApiInfo apiInfo = new ApiInfo(
+                "VIP19 Swagger 测试API文档", //标题
+                " 本文档主要用来学习 ", //描述
+                "1.0.0.1", //版本
+                "",
+                "",
+                "", //签名
+                "" //签名链接
+        );
+        return apiInfo;
+    }
+
+}

+ 8 - 1
day04/src/main/java/com/lovecoding/mvc/doman/Book.java

@@ -1,12 +1,19 @@
 package com.lovecoding.mvc.doman;
 
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.annotations.ApiParam;
 import lombok.Data;
 import org.springframework.stereotype.Repository;
 
 @Data
 public class Book {
-    Long book_id;
+    @ApiModelProperty("书本ID")
+    Long boo_id;
+    @ApiModelProperty("书本名字")
     String book_name;
+    @ApiModelProperty("书本价格")
     Long price;
+    @ApiModelProperty("库存ID")
     Long stock;
 }

+ 12 - 0
day04/src/main/resources/spring.xml

@@ -9,6 +9,18 @@
 
     <bean class="com.lovecoding.mvc.config.MyException" />
 
+    <bean id="conversionServiceFactoryBean" class="org.springframework.context.support.ConversionServiceFactoryBean" >
+        <property name="converters" >
+            <list>
+                <bean class="com.lovecoding.mvc.config.DateConverter" />
+            </list>
+        </property>
+    </bean>
+
+    <mvc:default-servlet-handler></mvc:default-servlet-handler>
+
+    <mvc:annotation-driven conversion-service="conversionServiceFactoryBean" />
+
 <!--    <bean id="simpleMappingExceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">-->
 <!--        <property name="exceptionMappings">-->
 <!--            <props>-->

+ 19 - 0
day04/src/main/webapp/date.jsp

@@ -0,0 +1,19 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: lc
+  Date: 2023-04-02
+  Time: 下午 2:26
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<html>
+<head>
+    <title>Title</title>
+</head>
+<body>
+<form action="<%=request.getContextPath()%>/date" method="post">
+    <input type="date" name="mydate" /> <br />
+    <input type="submit" value="提交" />
+</form>
+</body>
+</html>

+ 20 - 0
day04/src/main/webapp/form.jsp

@@ -0,0 +1,20 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: lc
+  Date: 2023-04-02
+  Time: 下午 2:11
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<html>
+<head>
+    <title>Title</title>
+</head>
+<body>
+    <form action="" method="post">
+        <input type="number" name="number" />
+        <input type="text" name="text" />
+        <input type="date" name="date" />
+    </form>
+</body>
+</html>

BIN
day04/src/main/webapp/swagger/favicon-16x16.png


BIN
day04/src/main/webapp/swagger/favicon-32x32.png


+ 16 - 0
day04/src/main/webapp/swagger/index.css

@@ -0,0 +1,16 @@
+html {
+    box-sizing: border-box;
+    overflow: -moz-scrollbars-vertical;
+    overflow-y: scroll;
+}
+
+*,
+*:before,
+*:after {
+    box-sizing: inherit;
+}
+
+body {
+    margin: 0;
+    background: #fafafa;
+}

+ 19 - 0
day04/src/main/webapp/swagger/index.html

@@ -0,0 +1,19 @@
+<!-- HTML for static distribution bundle build -->
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8">
+    <title>Swagger UI</title>
+    <link rel="stylesheet" type="text/css" href="./swagger-ui.css" />
+    <link rel="stylesheet" type="text/css" href="index.css" />
+    <link rel="icon" type="image/png" href="./favicon-32x32.png" sizes="32x32" />
+    <link rel="icon" type="image/png" href="./favicon-16x16.png" sizes="16x16" />
+  </head>
+
+  <body>
+    <div id="swagger-ui"></div>
+    <script src="./swagger-ui-bundle.js" charset="UTF-8"> </script>
+    <script src="./swagger-ui-standalone-preset.js" charset="UTF-8"> </script>
+    <script src="./swagger-initializer.js" charset="UTF-8"> </script>
+  </body>
+</html>

+ 79 - 0
day04/src/main/webapp/swagger/oauth2-redirect.html

@@ -0,0 +1,79 @@
+<!doctype html>
+<html lang="en-US">
+<head>
+    <title>Swagger UI: OAuth2 Redirect</title>
+</head>
+<body>
+<script>
+    'use strict';
+    function run () {
+        var oauth2 = window.opener.swaggerUIRedirectOauth2;
+        var sentState = oauth2.state;
+        var redirectUrl = oauth2.redirectUrl;
+        var isValid, qp, arr;
+
+        if (/code|token|error/.test(window.location.hash)) {
+            qp = window.location.hash.substring(1).replace('?', '&');
+        } else {
+            qp = location.search.substring(1);
+        }
+
+        arr = qp.split("&");
+        arr.forEach(function (v,i,_arr) { _arr[i] = '"' + v.replace('=', '":"') + '"';});
+        qp = qp ? JSON.parse('{' + arr.join() + '}',
+                function (key, value) {
+                    return key === "" ? value : decodeURIComponent(value);
+                }
+        ) : {};
+
+        isValid = qp.state === sentState;
+
+        if ((
+          oauth2.auth.schema.get("flow") === "accessCode" ||
+          oauth2.auth.schema.get("flow") === "authorizationCode" ||
+          oauth2.auth.schema.get("flow") === "authorization_code"
+        ) && !oauth2.auth.code) {
+            if (!isValid) {
+                oauth2.errCb({
+                    authId: oauth2.auth.name,
+                    source: "auth",
+                    level: "warning",
+                    message: "Authorization may be unsafe, passed state was changed in server. The passed state wasn't returned from auth server."
+                });
+            }
+
+            if (qp.code) {
+                delete oauth2.state;
+                oauth2.auth.code = qp.code;
+                oauth2.callback({auth: oauth2.auth, redirectUrl: redirectUrl});
+            } else {
+                let oauthErrorMsg;
+                if (qp.error) {
+                    oauthErrorMsg = "["+qp.error+"]: " +
+                        (qp.error_description ? qp.error_description+ ". " : "no accessCode received from the server. ") +
+                        (qp.error_uri ? "More info: "+qp.error_uri : "");
+                }
+
+                oauth2.errCb({
+                    authId: oauth2.auth.name,
+                    source: "auth",
+                    level: "error",
+                    message: oauthErrorMsg || "[Authorization failed]: no accessCode received from the server."
+                });
+            }
+        } else {
+            oauth2.callback({auth: oauth2.auth, token: qp, isValid: isValid, redirectUrl: redirectUrl});
+        }
+        window.close();
+    }
+
+    if (document.readyState !== 'loading') {
+        run();
+    } else {
+        document.addEventListener('DOMContentLoaded', function () {
+            run();
+        });
+    }
+</script>
+</body>
+</html>

+ 20 - 0
day04/src/main/webapp/swagger/swagger-initializer.js

@@ -0,0 +1,20 @@
+window.onload = function() {
+  //<editor-fold desc="Changeable Configuration Block">
+
+  // the following lines will be replaced by docker/configurator, when it runs in a docker-container
+  window.ui = SwaggerUIBundle({
+    url: "http://localhost:8080/demo_Web_exploded/v2/api-docs",
+    dom_id: '#swagger-ui',
+    deepLinking: true,
+    presets: [
+      SwaggerUIBundle.presets.apis,
+      SwaggerUIStandalonePreset
+    ],
+    plugins: [
+      SwaggerUIBundle.plugins.DownloadUrl
+    ],
+    layout: "StandaloneLayout"
+  });
+
+  //</editor-fold>
+};

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 1 - 0
day04/src/main/webapp/swagger/swagger-ui-bundle.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
day04/src/main/webapp/swagger/swagger-ui-bundle.js.map


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 1 - 0
day04/src/main/webapp/swagger/swagger-ui-es-bundle-core.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
day04/src/main/webapp/swagger/swagger-ui-es-bundle-core.js.map


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 1 - 0
day04/src/main/webapp/swagger/swagger-ui-es-bundle.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
day04/src/main/webapp/swagger/swagger-ui-es-bundle.js.map


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 1 - 0
day04/src/main/webapp/swagger/swagger-ui-standalone-preset.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
day04/src/main/webapp/swagger/swagger-ui-standalone-preset.js.map


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
day04/src/main/webapp/swagger/swagger-ui.css


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
day04/src/main/webapp/swagger/swagger-ui.css.map


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
day04/src/main/webapp/swagger/swagger-ui.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
day04/src/main/webapp/swagger/swagger-ui.js.map


+ 10 - 0
pom.xml

@@ -99,6 +99,16 @@
             <version>2.13.3</version>
         </dependency>
 
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger2</artifactId>
+            <version>2.6.1</version>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-simple</artifactId>
+            <version>1.7.36</version>
+        </dependency>
 
     </dependencies>
 

Vissa filer visades inte eftersom för många filer har ändrats