diff --git a/Chapter3-1-6/pom.xml b/Chapter3-1-6/pom.xml new file mode 100644 index 0000000..87ccab3 --- /dev/null +++ b/Chapter3-1-6/pom.xml @@ -0,0 +1,62 @@ + + + 4.0.0 + + com.didispace + Chapter3-1-6 + 1.0.0 + jar + + Chapter3-1-6 + Spring Boot + + + org.springframework.boot + spring-boot-starter-parent + 1.3.2.RELEASE + + + + + UTF-8 + 1.8 + + + + + org.springframework.boot + spring-boot-starter + + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + true + + + + + + \ No newline at end of file diff --git a/Chapter3-1-6/src/main/java/com/didispace/Application.java b/Chapter3-1-6/src/main/java/com/didispace/Application.java new file mode 100755 index 0000000..f7a9e16 --- /dev/null +++ b/Chapter3-1-6/src/main/java/com/didispace/Application.java @@ -0,0 +1,22 @@ +package com.didispace; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * + * @author 程序猿DD + * @version 1.0.0 + * @blog http://blog.didispace.com + * + */ +@SpringBootApplication +public class Application { + + public static void main(String[] args) { + + SpringApplication.run(Application.class, args); + + } + +} diff --git a/Chapter3-1-6/src/main/java/com/didispace/exception/GlobalExceptionHandler.java b/Chapter3-1-6/src/main/java/com/didispace/exception/GlobalExceptionHandler.java new file mode 100644 index 0000000..fe97105 --- /dev/null +++ b/Chapter3-1-6/src/main/java/com/didispace/exception/GlobalExceptionHandler.java @@ -0,0 +1,21 @@ +package com.didispace.exception; + +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; + +@ControllerAdvice +class GlobalExceptionHandler { + + @ExceptionHandler(value = Exception.class) + public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception { + ModelAndView mav = new ModelAndView(); + mav.addObject("exception", e); + mav.addObject("url", req.getRequestURL()); + mav.setViewName("error"); + return mav; + } + +} \ No newline at end of file diff --git a/Chapter3-1-6/src/main/java/com/didispace/web/HelloController.java b/Chapter3-1-6/src/main/java/com/didispace/web/HelloController.java new file mode 100755 index 0000000..263ebbc --- /dev/null +++ b/Chapter3-1-6/src/main/java/com/didispace/web/HelloController.java @@ -0,0 +1,29 @@ +package com.didispace.web; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * + * @author 程序猿DD + * @version 1.0.0 + * @blog http://blog.didispace.com + * + */ +@Controller +public class HelloController { + + @RequestMapping("/hello") + public String hello() throws Exception { + throw new Exception("发生错误"); + } + + @RequestMapping("/") + public String index(ModelMap map) { + map.addAttribute("host", "http://blog.didispace.com"); + return "index"; + } + +} \ No newline at end of file diff --git a/Chapter3-1-6/src/main/resources/application.properties b/Chapter3-1-6/src/main/resources/application.properties new file mode 100755 index 0000000..e69de29 diff --git a/Chapter3-1-6/src/main/resources/templates/error.html b/Chapter3-1-6/src/main/resources/templates/error.html new file mode 100755 index 0000000..dc521d1 --- /dev/null +++ b/Chapter3-1-6/src/main/resources/templates/error.html @@ -0,0 +1,12 @@ + + + + + 统一异常处理 + + +

Error Handler

+
+
+ + \ No newline at end of file diff --git a/Chapter3-1-6/src/main/resources/templates/index.html b/Chapter3-1-6/src/main/resources/templates/index.html new file mode 100755 index 0000000..32cbfe8 --- /dev/null +++ b/Chapter3-1-6/src/main/resources/templates/index.html @@ -0,0 +1,10 @@ + + + + + + + +

Hello World

+ + \ No newline at end of file diff --git a/Chapter3-1-6/src/test/java/com/didispace/ApplicationTests.java b/Chapter3-1-6/src/test/java/com/didispace/ApplicationTests.java new file mode 100755 index 0000000..964ba2a --- /dev/null +++ b/Chapter3-1-6/src/test/java/com/didispace/ApplicationTests.java @@ -0,0 +1,35 @@ +package com.didispace; + +import com.didispace.web.HelloController; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.http.MediaType; +import org.springframework.mock.web.MockServletContext; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; + +import static org.hamcrest.Matchers.equalTo; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + + +/** + * + * @author 程序猿DD + * @version 1.0.0 + * @blog http://blog.didispace.com + * + */ +@RunWith(SpringJUnit4ClassRunner.class) +@SpringApplicationConfiguration(classes = MockServletContext.class) +@WebAppConfiguration +public class ApplicationTests { + + + +}