目录
2、模板/静态目录种均无相应错误页面,直接响应SpringBoot默认错误页面
一、Web介绍
Web课程通常涵盖与Web开发相关的各个方面。以下是一些常见的Web课程主题:
- HTML/CSS:这是Web开发的基础,介绍如何使用HTML和CSS创建和设计网页。
- JavaScript:介绍JavaScript编程语言,以及如何使用它来为网页添加动态功能和交互性。
- Web服务器:介绍如何使用服务器端语言(如PHP、Python、Ruby等)来处理Web请求,并生成动态内容。
- 数据库:介绍如何使用数据库来存储和检索Web应用程序的数据。
- Web框架:介绍一些流行的Web开发框架,如Django、Ruby on Rails等,以帮助开发者更高效地构建Web应用程序。
- Web安全:介绍Web应用程序的安全性问题和常见的安全漏洞,如跨站脚本攻击(XSS)和SQL注入等。
- Web性能优化:介绍如何优化Web应用程序的性能,包括减少加载时间、提高响应速度等。
- Web设计和用户体验:介绍如何设计和构建易于使用和访问的Web界面,包括对不同设备的支持。
- Web开发工具:介绍一些常用的Web开发工具和技术,如版本控制系统(如Git)、自动化测试工具等。
- 实践项目:通过实践项目来应用所学知识,通常包括构建个人网站或Web应用程序等。
二、常用注解
在Web开发中,注解(Annotation)是一种重要的工具,用于简化代码和提高开发效率。以下是一些常用的Java Web注解及其示例代码:
1、@RequestMapping
用于将HTTP请求映射到特定的处理器方法。它允许开发者将请求的URL和HTTP方法与处理器方法关联起来,从而简化路由逻辑。用于映射HTTP请求到特定的处理器方法。
2、@GetMapping
用于处理HTTP GET请求,将请求映射到特定的处理器方法。它相当于@RequestMapping(method = RequestMethod.GET)。当用户通过GET方法发送请求时,Spring MVC会根据@GetMapping注解将请求路由到相应的处理器方法。
3、@PostMapping
用于处理HTTP POST请求,将请求映射到特定的处理器方法。它也相当于@RequestMapping(method = RequestMethod.POST)。当用户通过POST方法发送请求时,Spring MVC会根据@PostMapping注解将请求路由到相应的处理器方法。
4、@ApiModelProperty
Swagger的注解之一,用于在生成的API文档中定义和描述接口的属性信息。在使用@ApiModelProperty注解时,可以在属性上方添加该注解,指定属性的描述、数据类型、是否必需等信息。
5、@Override
在 Spring 中,@Override
注解可以用于以下情况:
(1)重写 Spring 框架中的接口方法:Spring 框架中的许多接口都定义了方法,这些方法可以被实现类重写。使用 @Override
注解可以确保实现类正确地重写了接口中的方法。
(2)重写 Spring 框架中的抽象方法:如果一个类继承了 Spring 框架中的抽象类或实现了其中的抽象方法,那么这些方法需要被重写。使用 @Override
注解可以确保这些方法被正确地重写。(3)重写 Spring 框架中的回调方法:Spring 框架提供了许多回调方法,如 BeanPostProcessor
、BeanFactoryPostProcessor
等。这些方法可以在 Spring 容器初始化时被调用。如果需要在这些方法中进行自定义操作,可以使用 @Override
注解来重写这些方法。
三、应用分层
根据业务架构实践,结合业界分层规范与流行技术框架分析,推荐应用分层如图所示。默认上层依赖于下层,箭头关系表示可以直接依赖。
开放API层:可直接封装Service接口暴露成RPC接口;通过Web封装成http接口;网关控制层等。
终端显示层:隔断模板渲染显示层。
Web层:主要对访问控制进行转发,各类基本参数校验,或不服用的业务简单处理。
Service层:具体的业务逻辑服务。
DAO层:数据访问层,与底层MySQL、SQL Server、Mango DB等进行数据交互。
外部数据接口:外部(应用)数据存储服务提供的接口(如:数据迁移应用场景)
四、自定义异常处理
1、有模板引擎
精确匹配error状态码,通过将错误页面命名为具体的错误状态码,例如:404.html放在引擎目
录templates/error目录中,当发生对应状态码错误时,就可以响应对应的模板页
模糊匹配error状态码,通过定义4xx或5xx,匹配对应类型的所有错误
此种方式,精确匹配优先于模糊匹配。
timestamp:时间戳 status:状态码 error:错误提示 exception:异常对象 message:异常消息 errors:JSR303数据校验错误 |
2、模板/静态目录种均无相应错误页面,直接响应SpringBoot
默认错误页面
如果BasicErrorController的errorhtml方法没有找到对应的view对象,将前往error定义在
ErrorMvcAutoConfiguation的defaultErrorView中
五、业务对象建模
1、相关知识
Jpa
JavaPersistenceAPI,Java的持久层API,Jpa定义了一系列标准,让实体类和数据库中的表建立
对应关系。Jpa的实现思想是ORM(ObjectRelationMapping),对象关系映射,用于在关系数据库
和业务实体对象之间作映射。
Jpa不是一个具体的框架,是一类框架的总称,持久层框架Hibernate是Jpa的一个具体实现,
springdatajpa是在Hibernate基础之上的封装实现。
springdatajpa的集成开发,可以规避sql语句的编写,侧重于java编码实现,另一个数据库层框
架mybatis则是比较专注sql语句。
引入依赖
/pom.xml配置如下:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.14</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!--H2Database为开源嵌入式数据库引擎,提供便捷的web控制台用于操作和管理数据库内容,可以兼容
主流数据库-->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
Jpa配置
spring:
#配置数据源
datasource:
driver-class-name:com.mysql.cj.jdbc.Driver
url:jdbc:mysql://localhost:3306/dev_practices?characterEncoding=UTF-
8&userSSL=false&serverTimezone=UTC%2B8
username:root
password:123456
jpa:
#JPA配置,hibernate.ddl-auto,完成自动建表规则的设置,并确认是否打印sql,便于console
查看定位
hibernate:
ddl-auto:update
show-sql:true
server:
port:8081
#日志处理为展示mybatis运行sql语句
logging:
level:
cn.edu.lzzy:debug
file:
name:dev.log
Spring data Jpa注解
注解 | 说明 |
@Entity | 类注解。注解该类是一个实体类,用于进行实体类和数据库中的表建立关 联关系 |
@Table | 类注解。注解该类可以修改表名称,此注解可以忽略不用 |
@Id | 属性注解。注解属性字段是主键,系必备注解,不可缺少 |
@GeneratedValue | 属性注解。和@Id注解一起使用,用于定义主键呈现方式 @GeneratedValue(strategy=GenerationType.IDENTITY):自增主键 (mysql使用最频繁,oracle不支持) @GeneratedValue(strategy=GenerationType.AUTO):默认主键生成策略 (mysql默认自增主键) @GeneratedValue(strategy=GenerationType.SEQUENCE):根据底层数 据库序列生成主键(oracle支持,mysql不支持) @GeneratedValue(strategy=GenerationType.TABLE):用特定数据库表 格保存主键,很少使用 |
@Column | 属性注解。定义字段映射到数据库的特征(字段名称、字段长度等) |
@Transient | 属性注解。标注字段不会被映射到数据库中 |
@OneToOne | 类与类之间的关联关系。一对一关系 |
@ManyToOne | 类与类之间的关联关系。多对一关系 |
@OneToMany | 类与类之间的关联关系。一对多关系 |
@ManyToMany | 类与类之间的关联关系。多对多关系 |