当前位置: 首页 > news >正文

asp网站没有数据库连接国内最大的网页模板网站

asp网站没有数据库连接,国内最大的网页模板网站,水印网站,关键词拓展工具有哪些Spring Boot 是一个用于简化 Spring 应用程序配置和部署的框架。它提供了一种快速开发的方式#xff0c;通过默认配置、自动化配置等特性#xff0c;使得开发者能够更快捷地构建和部署基于 Spring 的应用。 Spring Boot Web 是 Spring Boot 的一个子模块#xff0c;它专注于…Spring Boot 是一个用于简化 Spring 应用程序配置和部署的框架。它提供了一种快速开发的方式通过默认配置、自动化配置等特性使得开发者能够更快捷地构建和部署基于 Spring 的应用。 Spring Boot Web 是 Spring Boot 的一个子模块它专注于 Web 应用的构建。它简化了创建 Web 应用的过程包括 RESTful 服务、Web 层的支持、嵌入式服务器等功能。Spring Boot Web 是 Spring Boot 中处理 Web 相关应用的一个功能模块通常包含 Spring MVC、嵌入式 Tomcat、Jetty 或 Undertow 服务器等。 Spring Boot 是一个完整的框架而 Spring Boot Web 是其中一个子模块专注于 Web 开发。文章目录 一、创建SpringBoot 工程二、 HTTP协议2.1 请求协议2.2 响应协议2.2.1 状态码 描述 三、分层解耦3.1 三层架构1. 表示层2. 业务逻辑层3. 数据访问层组件之间的协作完整流程示例 3.2 各层中的职责和关系各层的职责和关系工作流程 3.3 IOC控制反转和DI依赖注入 四、自写一个案例4.1 数据库结构4.2 服务端代码4.2.0 在测试阶段的问题发现4.2.1 POJO4.2.2 Mapper4.2.3 Controller4.2.4 Service4.2.5 Apipost调试 一、创建SpringBoot 工程 package com.itdt.controller;import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RestController public class HelloController {RequestMapping(/hello)public String hello() {System.out.println(sout Hello World);return return Hello World;} } 在其中内嵌了tomcat服务器 查看依赖 二、 HTTP协议 HTTPHypertext Transfer Protocol是一种用于传输超文本的应用层协议。它是Web的基础用于在Web浏览器和Web服务器之间传输数据。 2.1 请求协议 请求行Request Line包括请求方法GET、POST 等、请求的URL和使用的HTTP协议版本。请求头部Headers包含了各种标识信息如Accept、User-Agent、Content-Type 等。请求体Body对于 POST 请求请求体中包含了实际要发送给服务器的数据。对于 GET 请求通常为空 !DOCTYPE html html headtitleTest Hello Controller/title /head bodyform actionhttp://localhost:8081/hello methodPOSTlabel fornameName:/labelinput typetext idname namenamebutton typesubmitSubmit/button/form /body /html GET请求数据格式 GET请求将数据附加在URL之后以?分隔URL和传输数据。 参数之间使用连接由键值对组成如key1value1key2value2。 GET请求适合传输少量数据因为数据会暴露在URL中有长度限制。 1从服务器获取数据且数据量较小且不敏感时可以使用GET请求。 2向服务器请求资源如获取网页、图片等。 3通过URL直接传递参数方便在浏览器中进行测试和调试。 POST请求数据格式 POST请求的数据在请求体中不会暴露在URL中。请求头中会包含Content-Type: application/x-www-form-urlencoded来指示数据格式。参数同样以键值对的形式传输但不会显示在URL中。POST请求适合传输大量数据或敏感信息如表单提交等。 例如GET 例如POSTPOST请求将请求的参数放入请求体中 Accept: 指定客户端能够接收的内容类型如text/html、application/json等。 Content-Type: 指定请求体中的数据类型如application/json、application/x-www-form-urlencoded等。 User-Agent: 包含了客户端的应用程序、操作系统、版本等信息用于标识客户端身份。 Host: 指定请求的目标主机和端口号。 Cookie: 包含了客户端的Cookie信息用于在客户端和服务器之间保持状态。Referer: 指定了当前请求的来源页面URL。 Origin: 指定了发起请求的源。、、 2.2 响应协议 2.2.1 状态码 描述 状态码英文描述中文描述1xxInformational信息性状态码。服务器收到请求需要请求者继续操作100Continue客户端应继续其请求101Switching Protocols服务器根据客户端的请求切换协议2xxSuccess成功状态码。请求成功被服务器接收和理解200OK请求已成功处理201Created请求已经成功并且服务器创建了新资源202Accepted已接受。请求已接受但尚未处理203Non-Authoritative Information非权威信息。服务器已成功处理请求但返回的信息可能来自另一来源204No Content服务器成功处理请求但未返回任何内容205Reset Content重置内容。服务器成功处理请求需要重置视图206Partial Content服务器成功处理了部分GET请求3xxRedirection重定向状态码。需要客户端采取进一步操作以完成请求300Multiple Choices请求的资源存在多种选择服务器返回列表供选择301Moved Permanently请求的资源已被永久移动到新位置302Found找到。请求的资源临时从不同位置响应303See Other查看其他。请求的资源存在另一个URI应使用GET、POST方法获取304Not Modified资源未被修改客户端可使用缓存数据305Use Proxy使用代理。请求必须通过指定的代理才能访问307Temporary Redirect临时重定向。请求的资源临时从不同位置响应4xxClient Error客户端错误状态码。请求包含语法错误或无法完成请求400Bad Request错误请求。服务器无法理解请求的语法401Unauthorized未授权。请求要求用户的身份认证403Forbidden禁止访问。服务器理解请求但拒绝执行404Not Found未找到。服务器无法找到请求的资源405Method Not Allowed方法不允许。请求中指定的方法不被允许406Not Acceptable不可接受。服务器无法根据请求的内容特性完成请求407Proxy Authentication Required需要代理身份验证。客户端必须先使用代理认证408Request Timeout服务器等待请求时发生超时409Conflict请求导致服务器上的冲突410Gone消失。请求的资源不再可用411Length Required需要长度。缺少Content-Length头信息412Precondition Failed请求头中指定的前提条件无法满足413Payload Too Large请求的负载过大服务器拒绝处理414URI Too Long请求的URI长度超过服务器能处理的长度415Unsupported Media Type不支持的媒体类型。请求的格式不受支持416Range Not Satisfiable范围不符合要求。服务器无法满足请求的Range头信息417Expectation Failed服务器无法满足请求中Expect请求头信息418I’m a teapot我是茶壶。服务器拒绝尝试用茶壶煮咖啡421Misdirected Request误导的请求。服务器无法生成适用于请求的响应422Unprocessable Entity无法处理的实体。请求格式正确但无法处理请求423Locked已锁定。资源被锁定当前操作无法完成424Failed Dependency依赖关系失败。请求失败因为请求的先决条件失败425Too Early服务器不愿意处理请求因为可能导致重放426Upgrade Required需要升级。客户端应切换到TLS/1.0428Precondition Required需要前提条件。请求失败因为缺少必需的前提条件429Too Many Requests请求过多。客户端发送的请求过多431Request Header Fields Too Large请求头字段太大。服务器无法处理请求因为请求头字段太大451Unavailable For Legal Reasons由于法律原因不可用。资源因法律原因不可用5xxServer Error服务器错误状态码。服务器无法完成请求500Internal Server Error服务器内部错误。服务器遇到意外情况无法完成请求501Not Implemented未实现。服务器不支持请求的功能502Bad Gateway错误网关。服务器作为网关或代理从上游服务器接收到无效响应503Service Unavailable服务不可用。服务器当前无法处理请求504Gateway Timeout网关超时。服务器作为网关或代理但未及时从上游服务器收到响应505HTTP Version Not SupportedHTTP版本不支持。服务器不支持请求中所用的HTTP版本507Insufficient Storage存储空间不足。服务器无法存储完成请求所必须的内510Not Extended未扩展。客户端需要对请求进一步扩展511Network Authentication Required需要网络身份验证。客户端需要进行身份验证才能获得网络访问权限 三、分层解耦 耦合是指不同模块或类、组件之间的依赖关系。它衡量的是模块之间的紧密程度。低耦合意味着模块之间的依赖关系较少模块之间的变化不会相互影响这通常是设计中的目标。高耦合则意味着模块之间的依赖关系过多任何一个模块的变化都会影响到其他模块增加了维护和修改的难度。内聚是指一个模块内部的各个元素之间的紧密程度。它衡量的是模块内部元素的相关性或者说是模块内部各个功能的联系度。高内聚意味着模块内部的功能高度相关模块内部的代码是为了实现一个单一的、明确的功能而组织的。低内聚则意味着模块内部的功能没有明确的目标模块中的各个元素职责分散缺乏相关性。 3.1 三层架构 在软件开发中三层架构Three-Tier Architecture是一种常见的设计模式用于将应用程序的不同职责分离以提高系统的可维护性、可扩展性和重用性。三层架构通常分为 表示层、业务逻辑层 和 数据访问层。 1. 表示层 职责表示层负责处理用户的输入和输出。它是与用户交互的部分通常通过 Web 页面前端来展示信息接收用户的请求并返回响应。组件通常包含 Controller或 RestController它负责接收 HTTP 请求并将其委派给业务逻辑层Service。Controller 会根据用户的请求调用相应的服务并返回响应结果。 RestController RequestMapping(/user) public class UserController {Autowiredprivate UserService userService;GetMapping(/{id})public ResponseEntityUser getUser(PathVariable Long id) {User user userService.getUserById(id);return ResponseEntity.ok(user);} }2. 业务逻辑层 职责业务逻辑层负责处理应用程序的核心业务逻辑它充当了表示层和数据访问层之间的中介。所有复杂的计算、规则判断和数据转换等任务都在这一层进行。业务逻辑层通常包含接口和其实现类如 Service 和 ServiceImpl它们负责调用数据访问层Mapper来进行数据库操作并处理返回结果。组件Service接口和 ServiceImpl实现类Service 定义了业务操作的接口ServiceImpl 提供实际的业务逻辑实现。技术Spring Service、业务逻辑编写等。 Service public class UserServiceImpl implements UserService {Autowiredprivate UserMapper userMapper;Overridepublic User getUserById(Long id) {return userMapper.findById(id);} }3. 数据访问层 职责数据访问层负责与数据库进行交互执行 CRUD 操作创建、读取、更新、删除等。它直接与数据库进行通信封装了所有的 SQL 操作。数据访问层通常由 Mapper 或 DAOData Access Object类组成。Mapper 是 MyBatis 中的接口而 DAO 在其他框架中通常代表数据访问的类。组件Mapper 或 DAO这些类负责数据持久化操作定义数据库查询语句并将数据库结果返回给业务逻辑层。技术MyBatis、JPAHibernate、JDBC、Spring Data JPA 等。 Mapper public interface UserMapper {User findById(Long id); }组件之间的协作 表示层 (Controller) 接收用户请求调用业务逻辑层 (Service) 进行处理。业务逻辑层 (ServiceImpl) 通过调用数据访问层 (Mapper) 来获取或更新数据。数据访问层 (Mapper) 负责与数据库进行交互执行 SQL 操作。处理结果返回到 表示层 (Controller)最终响应给用户。 层级主要职责主要组件类主要技术表示层处理用户请求和响应Controller、RestControllerSpring MVC、JSP、Thymeleaf业务逻辑层处理业务逻辑Service、ServiceImplSpring Service数据访问层与数据库交互执行数据操作Mapper、DAOMyBatis、JPA、JDBC 完整流程示例 前端发起请求用户通过 Web 浏览器或其他客户端发起请求如 GET 或 POST。Controller 处理请求Controller 接收请求调用相应的业务逻辑层 (Service) 来处理业务。Service 进行业务逻辑处理ServiceImpl 处理复杂的业务逻辑并可能需要通过 Mapper 与数据库进行交互。Mapper 查询数据库Mapper 执行 SQL 查询获取数据并返回。业务层处理数据ServiceImpl 对数据库返回的数据进行处理和转换。Controller 返回响应Controller 将处理结果通常是数据返回给前端。 3.2 各层中的职责和关系 ----------- ----------- ---------------- ------------- ------------- | Controller| ----- | Service | ----- | ServiceImpl | ----- | Mapper | ----- | POJO | ----------- ----------- ---------------- ------------- -------------↑ ↑ ↑ ↑ ↑(调用接口) (调用实现) (调用数据库操作) (持久化数据) (封装数据)各层的职责和关系 Controller: – 负责接收请求调用 Service 层的接口。 职责接收前端请求调用 Service 层进行处理并返回处理结果给前端。与其他组件的关系Controller 接收到前端请求后调用 Service 接口中的方法进行业务处理最终返回处理结果。 Service (业务层接口): – 定义业务逻辑的接口。 职责定义业务逻辑的抽象接口。Service 层提供了一系列业务方法用于业务操作的声明但不包含具体实现。与其他组件的关系Service 层由 ServiceImpl 实现Controller 调用 Service 接口提供的业务方法。Service 只定义接口不涉及具体的业务实现细节。 ServiceImpl (服务实现类): – 实现业务逻辑调用 Mapper 层的数据库操作。 职责ServiceImpl 是 Service 接口的具体实现负责处理具体的业务逻辑。它可以调用 Mapper 层进行数据库操作并封装业务操作。与其他组件的关系ServiceImpl 调用 Mapper 进行数据库操作获取或更新数据并将结果返回给 Controller。它的作用是将数据库访问与业务逻辑分开。 Mapper (数据访问层): – 负责数据库的操作将数据存取到 POJO 中。 职责Mapper 是与数据库交互的层通常定义了数据库的查询、插入、更新和删除操作。实现通常MyBatis POJO (数据模型): – 表示数据模型封装数据。 职责POJO 是普通的 Java 对象通常用于表示数据库中的一行记录或者某些数据结构。它封装了数据并为这些数据提供 getter 和 setter 方法。与其他组件的关系POJO 作为数据模型通常用于与数据库交互它由 Mapper 来操作ServiceImpl 会将 POJO 作为处理结果传递给 Controller。 工作流程 用户请求用户通过前端发起请求Controller 接收请求。调用 Service 接口Controller 调用 Service 接口定义的方法来执行业务操作。业务实现ServiceImpl 作为 Service 接口的实现负责具体的业务逻辑并调用 Mapper 进行数据操作。数据库操作Mapper 执行数据库操作将数据从数据库加载到 POJO 中或者将 POJO 中的数据保存到数据库。返回结果ServiceImpl 将结果通常是 POJO 对象或集合返回给 ControllerController 将处理结果返回给前端。 3.3 IOC控制反转和DI依赖注入 IOC控制反转是一种设计原则它将控制权从应用程序代码中转移出来由框架或容器来管理对象之间的依赖关系。在IOC中对象的创建、组装和管理都由框架来完成而不是由程序员手动管理。 控制反转指将对象的控制权交给IOC容器由IOC容器来创建和管理这些对象IOC里的这些对象也被称为Bean对象。 将Dao 及 Service层的实现类交给IOC容器管理为Controller 及 Service注入运行时所依赖的对象。 声明bean的注解有Controller、Service、Repository、Component DI依赖注入是IOC的一种实现方式它指的是通过外部注入的方式来提供一个对象所依赖的其他对象。依赖注入可以通过构造函数、属性或方法来实现目的是减少类之间的耦合度使代码更易于维护和测试。 DIIOC容器要为应用程序提供运行时所依赖的资源。资源指的是对象。 Autowired注解默认是按照类型进行注入的。 如果存在多个相同类型的bean将会报出如下错误方案一Primary、方案二Qualifier、方案三Resource Resource 与 Autowired区别 ? Autowired是Spring框架提供的注解而Resource是JavaEE规范提供的 Autowired默认是按照类型注入而Resource默认是按照名称注入 总的来说IOC是一种设计原则而DI是实现这一原则的具体方式之一。通过使用IOC和DI可以使代码更加灵活、可扩展和易于测试。 四、自写一个案例 4.1 数据库结构 create table users (id int auto_incrementprimary key,username varchar(50) not null comment 用户名,password varchar(255) default 12345678 not null comment 加密后的密码,email varchar(100) not null comment 用户邮箱,phone varchar(11) not null,user_type int not null comment 用户类型(landlord, tenant, buyer, seller),created_at timestamp default CURRENT_TIMESTAMP not null comment 创建时间,updated_at timestamp default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment 更新时间,avatar_url varchar(255) null comment 用户头像URL,gender int null comment 用户性别男、女 )comment 用户表存储所有用户信息; 下面是模拟数据 4.2 服务端代码 POM 安装分页查询分页插件PageHelperJAXBJava类映射到XML表示形式 创建项目 我的application.yml spring:application:name: GraduationProdatasource:url: 填写你的实际urldriver-class-name: com.mysql.cj.jdbc.Driverusername:填写你的实际usernamepassword: 填写你的实际passwordservlet:multipart:#最大单个文件大小max-file-size: 10MB#最大请求大小(包括所有文件和表单数据)max-request-size: 100MB#Mybatis的相关配置 mybatis:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl#开启驼峰命名映射开关map-underscore-to-camel-case: true#配置事务管理日志级别 logging:level:org.springframework.jdbc.support.JdbcTransactionManager: debugserver:port: 8081 4.2.0 在测试阶段的问题发现 这是由于pom.xml把下面的这个删去然后在右侧的maven配置中clean一下重新刷maven最终重新build一下代码即可 4.2.1 POJO package com.example.pojo;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.format.annotation.DateTimeFormat;import java.sql.Timestamp;Data NoArgsConstructor AllArgsConstructor public class User {private Integer id;private String username;private String password;private String email;private String phone;private Integer userType;DateTimeFormat(pattern yyyy-MM-dd HH:mm:ss)private Timestamp createdAt;DateTimeFormat(pattern yyyy-MM-dd HH:mm:ss)private Timestamp updatedAt;private String avatarUrl;private Integer gender; }统一相应结果 public class Result {private Integer code; //编码1成功0为失败private String msg; //错误信息private Object data; //数据public static Result success() {Result result new Result();result.code 1;result.msg success;return result;}public static Result success(Object object) {Result result new Result();result.data object;result.code 1;result.msg success;return result;}public static Result error(String msg) {Result result new Result();result.msg msg;result.code 0;return result;}}4.2.2 Mapper package com.example.mapper;import com.example.pojo.User; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select;Mapper public interface UserMapper {Select(select * from user where id #{id})User getUserById(Integer id);void save(User user); } 在resoucrs资源下新建一个同级的包切记是以‘/分割的 在其中同名的xml写(此为复杂情况使用mybatis) ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.example.mapper.UserMapper!-- 批量分隔符-- !-- UserMapper.xml -- insert idsave parameterTypecom.example.pojo.UserINSERT INTO user (username, password, email, phone, user_type, created_at, updated_at, avatar_url, gender) VALUES (#{username}, #{password}, #{email}, #{phone}, #{userType}, #{createdAt}, #{updatedAt}, #{avatarUrl}, #{gender}) /insert/mapper 4.2.3 Controller package com.example.controller;import com.example.pojo.Result; import com.example.pojo.User; import com.example.service.UserService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*;Slf4j RestController RequestMapping(/users) public class UserController {Autowiredprivate UserService userService; // 查询指定用户GetMapping(/{id})public Result getUserById(PathVariable Integer id) {log.info(正在查询id为{}的用户, id);User user userService.getUserById(id);return Result.success(user);}PostMappingpublic Result save(RequestBody User user) {log.info(用户{}注册, user);userService.save(user);return Result.success();}} 4.2.4 Service package com.example.service;import com.example.pojo.User;public interface UserService {void save(User user);User getUserById(Integer id); } 其实现类 package com.example.service.impl;import java.time.LocalDateTime;Service public class UserServiceImpl implements UserService {Autowiredprivate UserMapper userMapper;Overridepublic void save(User user) {user.setCreatedAt(LocalDateTime.now());user.setUpdatedAt(LocalDateTime.now());userMapper.save(user);}Overridepublic User getUserById(Integer id) {return userMapper.getUserById(id);}} 4.2.5 Apipost调试 还有json格式的新增用户
http://www.dnsts.com.cn/news/240057.html

相关文章:

  • 网站建设维护课件ppt阿里云可以建设多个网站
  • 如何建设网站 知乎常州网站建设方案书
  • 上海建设局网站首页哈尔滨市建设厅网站
  • 网站集约化建设的优点wordpress 获取首页
  • 搭建网站平台如何做分录中国芯片三巨头
  • 建公司网站要多久大连网站制作最好的公司
  • 个人简历空白表可编辑防控政策优化
  • 怎么设计门户网站2021网站建设前景怎么样
  • 做网站ui阿里巴巴做网站找谁
  • php的网站电子商务有限公司网站
  • 营销型网站哪家做的好wordpress对配置的要求
  • 网站 备案 注销 影响品牌授权书模板
  • 备案信息修改网站名称建筑设计图纸
  • 服务高端网站建设单位建设网站需要的材料
  • 公司网站建设价格贵阳网站开发招聘
  • 为什么网站开发成本高荥阳市
  • 联邦快递网站建设的目标网站设计开发网站
  • 生产企业做网站有用吗wordpress做x站主题
  • 新农村建设投诉网站禁止下载app网站
  • 网站开发验收确 认书免费seo网站诊断
  • 工业设计相关网站网站改版效果图怎么做
  • 计算机应用技术 网站开发网站需备案吗
  • 简单网站响应式网站制作
  • 手机版网站建设费用清单怎么制作自己的网站
  • 网络诚信 网站应怎么做重庆自助建站系统哪家好
  • 石家庄购物网站排名四川建设网站首页
  • 定西市城乡建设局网站成都记者留言网站
  • 行唐县网站建设wordpress自带高亮
  • 门户网站建设情况简介网址大全汽车之家
  • 长清做网站公司wordpress服务器外国