为什么你能通过一小段代码来访问网页 要明白这件事,首先要知道我们是如何访问网站的 访问网页的本质涉及多个技术层面,从用户输入网址到最终在浏览器上看到页面的过程包含了多个步骤: 域名解析:当你在浏览器中输入一个网址...这个过程通过域名系统(DNS)完成,将易于记忆的域名映射到实际的服务器 IP 地址。...在以上的图片中,就是 Spring Boot 中的控制器方法。(服务器本地) 生成响应:服务器处理请求后,会生成一个 HTTP 响应。...(本地) 当你启动 Spring Boot 项目并且访问 http://localhost:8080 或其他定义的路径时,Spring Boot 内置的 Web 服务器( Tomcat 或其他容器)...会拦截这些请求,并将请求映射到相应的控制器方法。
从主方法在IDE中运行应用程序会产生与使用Maven或 Gradle或其打包的jar运行应用程序时不同的顺序。这可能导致Spring Boot无法在类路径上找到模板。...28.1.11错误处理 默认情况下,Spring Boot提供 /error 映射,以合理的方式处理所有错误,并在servlet容器中注册为“全局”错误页面。...自定义错误页面 如果要显示给定状态代码的自定义HTML错误页面,可以将文件添加到 /error 文件夹。错误页面可以是静态HTML(即,添加到任何静态资源 文件夹下),也可以使用模板构建。...将错误页面映射到Spring MVC之外 对于不使用Spring MVC的应用程序,可以使用 ErrorPageRegistrar 接口直接注册 ErrorPages 。...小心:当部署到servlet容器时,Spring Boot使用其错误页面过滤器将具有错误状态的请求转发到相应的错误页面。如果尚未提交响应,则只能 将请求转发到正确的错误页面。
此注解用于标注Spring MVC的控制器。...下面是使用此注解的示例代码: ---- @RestController @RestController是在Spring 4.0开始引入的,这是一个特定的控制器注解。...下面是使用此注解的示例代码: ---- @ModelAttribute 通过此注解,可以通过模型索引名称来访问已经存在于控制器中的model。...下面是具体的示例代码: @Qualifier 当系统中存在同一类型的多个Bean时,@Autowired在进行依赖注入的时候就不知道该选择哪一个实现类进行注入。...此注解相当于@Configuration、@EnableAutoConfiguration和@ComponentScan的组合。 在Spring Boot应用程序的主类中,就使用了此注解。
在 Spring Boot 应用中,当应用遇到运行时异常或者请求映射到不存在的路径时,ErrorMvcAutoConfiguration 类负责自动配置错误处理的相关机制。...Spring Boot 会自动识别这些页面,并在相应的错误发生时使用它们。 自定义错误控制器:通过创建一个实现了 ErrorController 接口的Bean,可以自定义错误处理逻辑。...添加自定义错误页面 在Spring Boot应用中,可以通过在 src/main/resources/static/error目录下添加错误页面来自定义错误响应。...Spring Boot会自动识别并在相应的错误发生时使用这些页面。...这个属性可以在错误控制器或错误页面中使用,从而提供更丰富的错误信息。
下面是使用此注解的示例代码: 图片 @RestController @RestController是在Spring 4.0开始引入的,这是一个特定的控制器注解。...下面是使用此注解的示例代码: 图片 @ModelAttribute 通过此注解,可以通过模型索引名称来访问已经存在于控制器中的model。...下面是具体的示例代码: 图片 @Qualifier 当系统中存在同一类型的多个Bean时,@Autowired在进行依赖注入的时候就不知道该选择哪一个实现类进行注入。...此注解相当于@Configuration、@EnableAutoConfiguration和@ComponentScan的组合。 在Spring Boot应用程序的主类中,就使用了此注解。...由于篇幅的原因,关于Spring Boot不常用的一些注解,将在下一次分享中进行补充和说明。 ---- ---- 欢迎加入我的知识星球,一起探讨架构,交流源码。
当控制器中的方法抛出异常时,Spring会自动捕获异常,并将捕获的异常信息传递给被@ExceptionHandler标注的方法。...下面是使用此注解的示例代码: @RestController @RestController是在Spring 4.0开始引入的,这是一个特定的控制器注解。...@ModelAttribute 通过此注解,可以通过模型索引名称来访问已经存在于控制器中的model。...下面是具体的示例代码: @Qualifier 当系统中存在同一类型的多个Bean时,@Autowired在进行依赖注入的时候就不知道该选择哪一个实现类进行注入。...下面是一个关于此注解的代码示例: Spring Boot注解 @SpringBootApplication @SpringBootApplication注解是一个快捷的配置注解,在被它标注的类中,可以定义一个或多个
下面是使用此注解的示例代码: ? 1-1-15、@RestController @RestController是在Spring 4.0开始引入的,这是一个特定的控制器注解。...1-1-16、@ModelAttribute 通过此注解,可以通过模型索引名称来访问已经存在于控制器中的model。下面是使用此注解的一个简单示例: ?...3-4、@Qualifier 当系统中存在同一类型的多个Bean时,@Autowired在进行依赖注入的时候就不知道该选择哪一个实现类进行注入。...---- 4、Spring Boot注解 4-1、@SpringBootApplication @SpringBootApplication注解是一个快捷的配置注解,在被它标注的类中,可以定义一个或多个...此注解相当于@Configuration、@EnableAutoConfiguration和@ComponentScan的组合。在Spring Boot应用程序的主类中,就使用了此注解。
当控制器中的方法抛出异常时,Spring会自动捕获异常,并将捕获的异常信息传递给被@ExceptionHandler标注的方法。...下面是使用此注解的示例代码: @RestController @RestController是在Spring 4.0开始引入的,这是一个特定的控制器注解。...下面是使用此注解的示例代码: @ModelAttribute 通过此注解,可以通过模型索引名称来访问已经存在于控制器中的model。...下面是具体的示例代码: @Qualifier 当系统中存在同一类型的多个Bean时,@Autowired在进行依赖注入的时候就不知道该选择哪一个实现类进行注入。...此注解相当于@Configuration、@EnableAutoConfiguration和@ComponentScan的组合。在Spring Boot应用程序的主类中,就使用了此注解。
此注解用于标注Spring MVC的控制器。...下面是使用此注解的示例代码: 图片 @RestController @RestController是在Spring 4.0开始引入的,这是一个特定的控制器注解。...下面是使用此注解的示例代码: 图片 @ModelAttribute 通过此注解,可以通过模型索引名称来访问已经存在于控制器中的model。...下面是具体的示例代码: 图片 @Qualifier 当系统中存在同一类型的多个Bean时,@Autowired在进行依赖注入的时候就不知道该选择哪一个实现类进行注入。...此注解相当于@Configuration、@EnableAutoConfiguration和@ComponentScan的组合。 在Spring Boot应用程序的主类中,就使用了此注解。
在一些情况下,控制器级别处理的错误不会被度量指标记录,通过将处理的异常设置为请求属性,应用程序可以确保此类异常与请求度量一起记录。...如果要显示一个给定状态码的自定义HTML错误页,可以将文件添加到/error目录。...WAR部署中的错误处理 当部署到servlet容器时,Spring Boot使用其错误页面过滤器将具有错误状态的请求转发到适当的错误页面。...只有在响应尚未提交的情况下,错误页面过滤器才能将请求转发到正确的错误页面。...默认情况下,如果上下文仅包含单个Servlet,则将其映射到/。在多个servlet bean的情况下,bean名称用作路径前缀。过滤器映射到/*。
当控制器中的方法抛出异常时,Spring会自动捕获异常,并将捕获的异常信息传递给被@ExceptionHandler标注的方法。...此注解用于标注Spring MVC的控制器。...下面是使用此注解的示例代码: @Controller @RestController @RestController是在Spring 4.0开始引入的,这是一个特定的控制器注解。...下面是使用此注解的示例代码: @RestController @ModelAttribute 通过此注解,可以通过模型索引名称来访问已经存在于控制器中的model。...此注解相当于@Configuration、@EnableAutoConfiguration和@ComponentScan的组合。 在Spring Boot应用程序的主类中,就使用了此注解。
@RequestMapping还可以对类进行标记,这样类中的处理方法在映射请求路径时,会自动将类上@RequestMapping设置的value拼接到方法中映射路径之前,如下: ?...下面是使用此注解的示例代码: ? @RestController @RestController是在Spring 4.0开始引入的,这是一个特定的控制器注解。...@ModelAttribute 通过此注解,可以通过模型索引名称来访问已经存在于控制器中的model。下面是使用此注解的一个简单示例: ?...@Qualifier 当系统中存在同一类型的多个Bean时,@Autowired在进行依赖注入的时候就不知道该选择哪一个实现类进行注入。...此注解相当于@Configuration、@EnableAutoConfiguration和@ComponentScan的组合。在Spring Boot应用程序的主类中,就使用了此注解。
在 Spring 的 Web 应用程序中,@RequestMapping 注解通常用于控制器类的方法上,以确定哪个方法将处理特定的 HTTP 请求。...return "viewName";}通过提供多个路径,可以将多个 URL 映射到同一个处理方法上。...等注解,将传入的HTTP请求映射到适当的控制器方法。...这样配置后,当的控制器方法返回视图名时(例如:return “hello”;),Spring MVC将会自动将视图名解析为 /WEB-INF/views/hello.jsp,然后渲染该 JSP 视图。...Spring MVC 会按照配置的消息转换器的顺序尝试将请求和响应的内容转换为适当的数据格式。
API处理错误的默认行为通常是返回难以理解的堆栈跟踪,而这些对API客户端来说并没有什么用。将错误信息切分成多个字段可以方便API客户端的解析,以此向用户提供更加友好的错误消息。...本文将介绍在使用Spring Boot构建REST API的时候如何进行合适的错误处理。 ? 在过去几年里,使用Spring构建REST API已经成为Java开发人员的标准方法。...这用于表示在单个调用中出现的多个错误。比如,校验的时候有多个字段验证失败。用ApiSubError类进行封装。...ExceptionHandler这个Spring注解提供了一种机制,用来处理在执行程序期间抛出的异常。此注解将作为处理此控制器中抛出的异常的入口点。...ControllerAdvice是Spring 3.2中引入的注解,顾名思义,它是多控制器的“建议”。它使得单个ExceptionHandler应用于多个控制器上。
后来Spring在Pivotal下已经在其Spring Cloud中对其进行了调整,使我们能够通过简单的步骤轻松有效地使用zuul。 Zuul是一种边缘服务,它支持对多个服务请求的代理。...前置过滤器 - 在路由请求之前调用。 后置过滤器 - 在路由请求后调用。 路由过滤器 - 用于路由请求。 错误过滤器 - 在处理请求时发生错误时调用。 ?...POST 在响应从源服务器返回时要被执行的过滤器 对响应增加HTTP 头 收集统计和度量 将响应以流的方式发送回客户端 ERROR 上述阶段中出现错误要执行的过滤器...稍后我们将研究zuul部分,现在让我们先创建学生服务。 创建Spring Boot项目 创建一个Spring boot项目从spring初始化网站,依赖于Web。 将项目解压缩并导入到IDEA中。...启用Zuul服务 现在@EnableZuulProxy在src文件夹中的Spring启动应用程序类中添加注释。使用此批注,此工件将像Zuul服务代理一样运行,并将启用API网关层的所有功能,如前所述。
前言 这次我们学习 Spring 的异常处理,作为一个 Spring 为基础框架的 Web 程序,如果不对程序中出现的异常进行适当的处理比如异常信息友好化,记录异常日志等等,直接将异常信息返回给客户端展示给用户...MVC 框架中的接口,实现此方法就可以对捕获的异常进行解析处理,然后根据自身需要返回 ModelAndView 对象,以 JSON 数据或者页面形式响应客户端请求。...HandlerExceptionResolver 类体系 映射异常类到指定视图,一般用于展现异常发生时的错误页面 当我们需要实现自定义的 HandlerExceptionResolver时,只要通过继承它的抽象类...image-20190518131151510 @ExceptionHandler 接下来我们看下 @ExceptionHandler 的用法,这个注解通常定义在某个控制器下的方法里,表明处理该控制器出现的指定异常...@ControllerAdvice Spring 3.2 引入了一种新注解 @ControllerAdvice,用于将所有控制器中异常的处理放在一处进行,将指定一个类作为全局异常处理器,用 @ExceptionHandler
两个视图控制器引用名称为“home”的视图(在home.html中定义),另一个引用名为“hello”的视图(在hello.html中定义)。 第四个视图控制器引用另一个名为“login”的视图。...你需要添加一个障碍,使得用户在看到该页面之前登录。您可以通过在应用程序中配置Spring Security来实现。...如果Spring Security在类路径上,则Spring Boot会使用“Basic认证”来自动保护所有HTTP端点。 同时,你可以进一步自定义安全设置。...根据配置,Spring Security提供了一个拦截该请求并验证用户的过滤器。 如果用户未通过认证,该页面将重定向到“/ login?error”,并在页面显示相应的错误消息。...注销成功后,我们的应用程序将发送到“/ login?logout”,我们的页面显示相应的登出成功消息。最后,我们需要向用户提供一个显示当前用户名和登出的方法。
在创建 Spring Boot 项⽬时,我们勾选的 Spring Web 框架其实就是 Spring MVC 框架,如下图所示: 简单来说,咱们之所以要学习 Spring MVC 是因为它是⼀切项目的基础...1、Spring MVC 创建和连接 Spring MVC 项目创建和 Spring Boot 创建项目相同(Spring MVC 使用 Spring Boot 的方式创建), 在创建的时候选择 Spring...总结说明:当有多个参数时,前后端进行参数匹配时,是以参数的名称进行匹配的,因此参数的位置 是不影响后端获取参数的结果 Ⅱ、传递对象 当参数个数过多时,可以进行传递对象,将参数封装成一个类。...这个时候就很莫名其妙,也找不到错误。 如果我们将int换成它的包装类时: 正常传递参数可以正常显示: 没有传递参数时它则会显示null,这就会很明显发现错误的来源。...因此,浏览器在每次访问网站时将所有与该网站相关的Cookie传送给后端,以便服务器能够根据这些Cookie识别用户并提供相应的服务。
领取专属 10元无门槛券
手把手带您无忧上云