当前位置: 移动技术网 > IT编程>开发语言>Java > SpringBoot(1)

SpringBoot(1)

2019年08月02日  | 移动技术网IT编程  | 我要评论

springboot 8/2

crud

  1. 发送put请求修改数据有三个步骤:

    1. springmvc中配置hiddenhttpmethodfilter
    2. 页面上创建一个post请求(form标签只能写get和post)
    3. 创建一个input项目,name="_method",值就是我们所指定方式
    4. <input type="hidden" name="_method" value="put" th:if="${emp!=null}" / >
    5. <input type="hidden" name="id" th:if="${emp!=null}" th:value="${emp.id}">

错误处理机制

  1. 错误提示有状态码,类型,时间....

  2. 默认效果:返回一个错误的页面。

  3. 如果是其他客户端,默认响应一个json数据,时间戳、状态码、错误提示、错误信息、访问路径。

  4. 如何定制错误信息:

    1. 一个是定义错误页面
    2. 一个是定义json数据
  5. external libiaries->spring-boot-auto-configure-web-errormvcautoconfigure容器中四个组件非常重要,分别是:

    1. defaulterrorattributes
    2. basicerrorcontroller:默认/error请求
    @controller
    @requestmapping({"${server.error.path:${error.path:/error}}"})
    public class basicerrorcontroller extends abstracterrorcontroller {
            @requestmapping(
            produces = {"text/html"}
        )//产生html页面
        public modelandview errorhtml(httpservletrequest request, httpservletresponse response) {
            httpstatus status = this.getstatus(request);
            map<string, object> model = collections.unmodifiablemap(this.geterrorattributes(request, this.isincludestacktrace(request, mediatype.text_html)));
            response.setstatus(status.value());
            modelandview modelandview = this.resolveerrorview(request, response, status, model);
            return modelandview != null ? modelandview : new modelandview("error", model);
        }
    
        @requestmapping
        @responsebody//返回json数据
        public responseentity<map<string, object>> error(httpservletrequest request) {
            map<string, object> body = this.geterrorattributes(request, this.isincludestacktrace(request, mediatype.all));
            httpstatus status = this.getstatus(request);
            return new responseentity(body, status);
        }

    但是它是如何区分是网页浏览,还是其它客户端浏览呢?

可以看到浏览器在访问时的请求头accept属性为text/html,

  1. errorpagecustomizer
@value("${error.path:/error}")
private string path = "/error"; //系统出现错误以后,到error进行请求,
  1. defaulterrorviewresolver

一旦发生4..或者5..错误,errorpagecustomizer定制错误页面。

配置嵌入式servlet容器

springboot使用的是默认的servlet容器(tomcat)

问题:

  1. 如何定制和修改servlet容器的相关配置

    1. 在application.properties当中修改server相关的配置

    2. server.port=8081
      server.context-path=/crud
      
      //通用的server设置
      server.xxx
      
      //tomcat的设置
      server.tomcat.uri-encoding=utf-8
      
    3. 编写一个embeddedservletcontainercustomizer:嵌入式的servlet容器的定制器,来修改servlet容器的配置。

    4. (以上两种方式实际上在底层是一样的,都是embeddedservletcontainercustomizer

  2. 能不能支持其他的servlet容器

注册servlet、filter、listener

servlet:servletregistrationbean

filter:filterregistrationbean

listener:servletlistenerregistrationbean

由于springboot默认是以jar包方式启动嵌入式的servlet容器来启动springboot的web应用,没有web.xml文件。

注册三大组件用如下的方式:

 //注册三大组件
    @bean
    public servletregistrationbean myservlet(){
        servletregistrationbean servletregistrationbean = new servletregistrationbean(new myservlet(),"/myservlet");
        return servletregistrationbean;
    }

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网