美文网首页
开发Web应用

开发Web应用

作者: yuq329 | 来源:发表于2020-06-06 22:01 被阅读0次

开发Web应用

展现信息

  • MVC模型
    • Controller:获取和处理数据
    • View:将数据渲染到HTML中并在浏览器中展现
    • Model
  • 构建领域类
    • 应用的领域指的是它要解决的主题范围
    • Lombok
      • lombok项目的产生就是为了省去我们手动创建gettersetter方法等等一些基本组件代码的麻烦,它能够在我们编译源码的时候自动帮我们生成gettersetter方法
      • 常用注解
        • @Setter 注解在类或字段,注解在类时为所有字段生成setter方法,注解在字段上时只为该字段生成setter方法。
        • @Getter 使用方法同上,区别在于生成的是getter方法。
        • @ToString 注解在类,添加toString方法。
        • @EqualsAndHashCode 注解在类,生成hashCodeequals方法。
        • @NoArgsConstructor 注解在类,生成无参的构造方法。
        • @RequiredArgsConstructor 注解在类,为类中需要特殊处理的字段生成构造方法,比如final和被@NonNull注解的字段。
        • @AllArgsConstructor 注解在类,生成包含类中所有字段的构造方法。
        • @Data 注解在类,为类的所有字段注解@ToString@EqualsAndHashCode@Getter的便捷方法,同时为所有非final字段注解@Setter
      • 使用
        • 依赖安装

          <dependency>
              <groupId>org.projectlombok</groupId>
              <artifactId>lombok</artifactId>
              <optional>true</optional>
          </dependency>
          
        • IDEA插件的安装(搜索Lombok plugin),重启

        • IDEA设置中编译器栏下启用annotation processors

      • @Data可以很好地处理字段的泛型参数。
        • 为了在为具有泛型的类构造对象时减少样板,可以使用staticConstructor参数来生成私有构造函数,以及返回新实例的静态方法。
        • 通过这样声明:
          • @Data(staticConstructor =“of”)class Foo {private T x;}
          • 可以通过写入来创建Foo的新实例:Foo.of(5); 而不必写:new Foo(5);
  • 创建控制器类(Controller
    • @Slf4j:Lombok提供的注解

      • 在类中自动生成一个SLF4J(Simple Logging Facade for Java)Logger

      • 等同于

        private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(YourController.class);
        
    • @Controller:将类识别为控制器,并且将其作为组件扫描的候选者

    • @RequestMapping:指定Controller处理的请求类型

      • Spring MVC的请求映射注解

        注解 描述
        @RequestMapping 通用的请求处理
        @GetMapping 处理HTTP GET请求
        @PostMapping 处理HTTP POST请求
        @PutMapping 处理HTTP PUT请求
        @DeleteMapping 处理HTTP DELETE请求
        @PatchMapping 处理HTTP PATCH请求
    • Model:负责在控制器和展现数据的视图之间传递数据。实际上,Model属性中的数据将会复制到Servlet Response属性

  • 设计视图
    • 常用视图模版
      • JavaServer Pages(JSP)
      • Thymeleaf
        • 增加一些额外元素属性的HTML,这些属性能够指导模版如何渲染request数据
        • th:text:执行替换过程,将${}中的某个请求属性替换到指定位置
        • th:each:迭代一个元素集合,为集合中的每个条目渲染HTML
        • th:field
        • th:errors
        • th:if
      • FreeMarker
      • Mustache
      • Groovy
    • 视图库一般与特定的Web框架解耦
      • 无法感知Spring模型的抽象,因此无法与控制器放到Model中的数据协同工作
      • 它们可以与Servletrequest属性协作
        • Spring将请求转移到视图之前,他会将模型数据复制到request属性中,这样视图模版就能访问到它们了
  • 校验表单输入
    • 在处理代码中加入检验规则(例如if/then代码块

    • Spring支持Java的Bean校验APIBean Validation API,也称为JSR-303

      • 更容易地声明检验规则,不必在应用程序代码中显示编写声明逻辑
    • Validation API以及Validation API的Hibernate实现

      验证注解 验证的数据类型 说明
      @AssertFalse Boolean,boolean 验证注解的元素值是false
      @AssertTrue Boolean,boolean 验证注解的元素值是true
      @NotNull 任意类型 验证注解的元素值不是null
      @Null 任意类型 验证注解的元素值是null
      @Min(value=值) BigDecimalBigInteger,
      byte,short, int, long
      等任何NumberCharSequence
      (存储的是数字)子类型
      验证注解的元素值大于等于@Min指定的value
      @Max(value=值) @Min要求一样 验证注解的元素值小于等于@Max指定的value
      @DecimalMin(value=值) @Min要求一样 验证注解的元素值大于等于@DecimalMin指定的value
      @DecimalMax(value=值) @Min要求一样 验证注解的元素值小于等于@DecimalMax指定的value
      @Digits(integer=
      整数位数, fraction=
      小数位数)
      @Min要求一样 验证注解的元素值的整数位数和小数位数上限
      @Size(min=
      下限,max=上限)
      字符串、Collection
      Map、数组等
      验证注解的元素值的在minmax(包含)指定区间之内,如字符长度、集合大小
      @Past java.util.Date,
      java.util.Calendar;
      Joda Time类库的日期类型
      验证注解的元素值(日期类型)比当前时间早
      @Future @Past要求一样 验证注解的元素值(日期类型)比当前时间晚
      @NotBlank CharSequence子类型 验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty@NotBlank只应用于字符串且在比较时会去除字符串的首位空格
      @Length(min=
      下限, max=上限)
      CharSequence子类型 验证注解的元素值长度在minmax区间
      @NotEmpty CharSequence子类型、
      CollectionMap
      数组
      验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)
      @Range(min=
      最小值, max=
      最大值)
      BigDecimal,BigInteger,
      CharSequence,
      byte, short, int, long
      原子类型和包装类型
      验证注解的元素值在最小值和最大值之间
      @Email(regexp=
      正则表达式,flag=
      标志的模式)
      CharSequence子类型
      (如String
      验证注解的元素值是Email,也可以通过regexpflag指定自定义的email格式
      @Pattern(regexp=
      正则表达式,flag=
      标志的模式)
      String,任何
      CharSequence的子类型
      验证注解的元素值与指定的正则表达式匹配
      @Valid 任何非原子类型 指定递归验证关联的对象如用户对象中有个地址对象属性,如果想在验证用户对象时一起验证地址对象的话,在地址对象上加@Valid注解即可级联验证

使用视图控制器

  • 只将请求转发到视图而不做其他事情的控制器
  • 实现WebMvcConfigurer接口
    • 提供了所有方法的默认实现,只需要覆盖所需要的方法即可
    • addViewControllers():使用它注册一个或多个视图控制器

选择视图模版库

  • 如果使用JSP,需要将应用构建成WAR文件并部署到传统的Servlet容器
  • 关闭模版缓存
    • application.properties中添加
      • spring.thymeleaf.cache=false

Reference

相关文章

  • spring boot模板引擎

    web应用开发-模板引擎spring boot的web应用开发,是基于spring mvcSpring boot ...

  • 2021-03-07 关于Chrome DevTools 调试技

    目标读者 WEB 应用 设计& 开发 & 测试 & 重度用户 关于调试 WEB应用开发者中,设计=》开发=》测试=...

  • 第12章 使用Kotlin开发Web应用《Kotin 编程思想·

    第12章 使用Kotlin开发Web应用 12.1 Kotlin集成Spring Boot开发Web应用 12.1...

  • Python基础(一)

    Python应用场景 Web应用开发Python经常被用于Web开发。比如,通过mod_wsgi模块,Apache...

  • 第四章 Spring Boot功能特性(三)

    全集 4.7 开发Web应用 Spring Boot同样适合开发Web应用。您可以使用嵌入式Tomcat,Jett...

  • Learn Python 3 :Flask Web开发小记

    最近看了Flask Web开发:基于Python的Web应用开发实战,书中详细介绍了Web程序的开发、测试、部署过...

  • 前言

    近年来,随着Web应用突飞猛进的发展,促使了Web应用开发语言的不断普及,越来越多的开发者开始学习与使用Web应用...

  • Flaks 开发案例

    flask 是一个基于python的基础web应用开发框架。利用flask可以快速的开发web应用,便携易上手。 ...

  • 离线检测

    离线Web应用概念 离线Web应用,就是在设备不能上网的情况下任然可以运行的应用。 开发离线Web应用步骤 首先,...

  • 使用Vue语法渲染你的Koa视图文件?

    前言 Koa是Express团队开发新一代Node Web应用开发框架,当你使用她开发你的Web应用时,一件很重要...

网友评论

      本文标题:开发Web应用

      本文链接:https://www.haomeiwen.com/subject/wxqgzhtx.html