springboot-web总结

一、web概述

  1. 基本概念

Java Web 开发是指使用 Java 技术开发 Web 应用程序的过程。Web 应用程序是指通过浏览器访问的应用程序,通常包括前端页面和后端服务两个部分。

  1. 技术栈

Java Web 开发主要使用的技术栈包括 Java EE、Servlet、JSP、Spring、Hibernate 等技术。其中,Java EE 是 Java Enterprise Edition 的缩写,是一套用于企业级应用开发的规范和标准;Servlet 是 Java Web 开发中最基本的组件之一,用于处理 HTTP 请求和响应;JSP 是 Java Server Pages 的缩写,是一种在 HTML 页面中嵌入 Java 代码的技术;Spring 是一款轻量级的 Java 开发框架,提供了依赖注入、AOP 等功能;Hibernate 是一款 ORM 框架,用于将 Java 对象映射到数据库表中。

二、Web 应用程序的架构

Web 应用程序的架构通常包括用户界面层、业务逻辑层和数据访问层三个部分。用户界面层负责展示前端页面,业务逻辑层负责处理业务逻辑,数据访问层负责与数据库进行交互。下面我将结合代码来详细介绍这三个部分。

1·用户界面

用户界面层负责与用户进行交互,展示前端页面。通常使用 HTML、CSS 和 JavaScript 进行开发。以下是一个简单的用户界面层的代码示例:

  1. <!DOCTYPE html>
    <html>
    <head>
        <title>Web应用程序</title>
        <link rel="stylesheet" href="styles.css">
    </head>
    <body>
        <h1>欢迎访问Web应用程序</h1>
        <form action="/login" method="post">
            <label for="username">用户名:</label>
            <input type="text" id="username" name="username" required><br>
            <label for="password">密码:</label>
            <input type="password" id="password" name="password" required><br>
            <input type="submit" value="登录">
        </form>
        <script src="script.js"></script>
    </body>
    </html>

    以上代码是一个简单的 HTML 页面,包含了一个表单用于用户登录。用户可以输入用户名和密码,并点击登录按钮提交表单/

2·业务逻辑

业务逻辑层负责处理应用程序的业务逻辑,对用户的请求进行处理和相应。在 Java Web 开发中,通常使用 Servlet 或 Spring MVC 来实现业务逻辑层。以下是一个使用 Servlet 实现的业务逻辑层的代码示例:

@WebServlet("/login")
public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        
        if ("admin".equals(username) && "123456".equals(password)) {
            response.sendRedirect("/home");
        } else {
            response.sendRedirect("/error");
        }
    }
}

以上代码是一个简单的 Servlet 类,处理了用户登录的请求。从请求中获取到用户名和密码,并进行验证。如果用户名和密码正确,则重定向到主页;否则重定向到错误页面

3·数据访问层

数据访问层负责与数据库进行交互,执行数据库操作。在 Java Web 开发中,通常使用 JDBC 或者 ORM 框架(如 Hibernate)来实现数据访问层。以下是一个使用 JDBC 实现的数据访问层的代码示例:

public class UserDao {
    public boolean checkUser(String username, String password) {
        // 连接数据库,执行查询操作
        // ...
        // 返回查询结果
        // ...
    }
}

以上代码是一个简单的 UserDao 类,提供了一个方法用于检查用户是否存在。在该方法中,可以编写 JDBC 代码连接数据库并执行查询操作,然后返回查询结果。

综上所述,Web 应用程序的架构包括用户界面层、业务逻辑层和数据访问层三个部分。用户界面层负责展示前端页面,业务逻辑层负责处理用户的请求并执行相应的业务逻辑,数据访问层负责与数据库进行交互。通过这种架构,可实现良好的分层和解耦,提高代码的可维护性和可扩展性。

三、Java Web 应用程序的开发流程

1·阶段分析

Java Web 应用程序的开发流程通常包括项目搭建、设计数据库、编写后端代码、编写前端代码、测试和部署等步骤。

在需求分析阶段,需要明确应用程序的功能和需求;在设计阶段,需要设计应用程序的架构和模型;在编码阶段,需要编写代码实现功能;在测试阶段,需要对应用程序进行测试,包括单元测试、集成测试和系统测试等;在部署阶段,需要将应用程序部署到服务器上进行运行。

2·开发流程

  • 项目搭建

首先,我们需要创建一个新的 Java Web 项目。可以使用 IDE(如 Eclipse、IntelliJ IDEA)来创建项目,也可以使用命令行工具(如 Maven)来创建项目。以下是一个使用 Maven 创建 Java Web 项目的代码示例:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>my-web-app</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <dependencies>
        <!-- 添加所需的依赖 -->
    </dependencies>

    <build>
        <plugins>
            <!-- 配置构建插件 -->
        </plugins>
    </build>
</project>

在以上代码中,我们使用 Maven 创建一个名为 "my-web-app" 的 Java Web 项目,并指定了一些基本配置,例如项目的 groupId、artifactId 和版本号

  • 设计数据库

接下来,我们需要设计和创建数据库。可以使用关系型数据库(如 MySQL、Oracle)或非关系型数据库(如 MongoDB)来存储数据。以下是一个简单的 MySQL 数据库表的创建语句的代码示例:

CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
    password VARCHAR(50) NOT NULL
);

以上代码创建了一个名为 "users" 的表,包含了 id、username 和 password 字段。

  • 编写后端代码

接下来,我们需要编写后端代码,处理用户的请求和执行相应的业务逻辑。在 Java Web 开发中,通常使用 Servlet 或 Spring MVC 来实现后端代码。以下是一个使用 Servlet 实现用户登录功能的代码示例:

@WebServlet("/login")
public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        
        // 验证用户名和密码,代码略
        
        if (isValidUser) {
            // 登录成功,重定向到主页
            response.sendRedirect("/home");
        } else {
            // 登录失败,重定向到错误页面
            response.sendRedirect("/error");
        }
    }
}

创建了一个名为 "LoginServlet" 的 Servlet 类,处理了用户登录的请求。从请求中获取到用户名和密码,并进行验证。根据验证结果,可以重定向到主页或错误页面。

  • 编写前端代码

然后,我们需要编写前端代码,与用户进行交互并展示页面。通常使用 HTML、CSS 和 JavaScript 来编写前端代码。以下是一个简单的登录页面的代码示例:

<!DOCTYPE html>
<html>
<head>
    <title>登录页面</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <h1>欢迎登录</h1>
    <form action="/login" method="post">
        <label for="username">用户名:</label>
        <input type="text" id="username" name="username" required><br>
        <label for="password">密码:</label>
        <input type="password" id="password" name="password" required><br>
        <input type="submit" value="登录">
    </form>
    <script src="script.js"></script>
</body>
</html>

创建了一个简单的登录页面,包含了一个表单用于用户输入用户名和密码,并提交表单进行登录。

  • 测试和部署

最后,我们需要对应用程序进行测试,并将其部署到服务器中。可以使用单元测试框架(如 JUnit)对后端代码进行测试,使用浏览器或其他工具对前端页面进行测试。部署时,可以将项目打包为 WAR 文件,并将其部署到 Web 服务器(如 Tomcat)中。

综上所述,Java Web 应用程序的开发流程包括项目搭建、设计数据库、编写后端代码、编写前端代码、测试和部署等步骤。通过以上步骤,我们可以开发出一个完整的 Java Web 应用程序。

四、springboot开发入门


1.概述


做Java开发的人一提起Spring,首先在脑海中浮现出的就是“IoC”,“AOP”,“Spring MVC”,“Spring Security”等等这些名词,甚至大有“无Spring不Java”的感慨。
实际上,时至今日Spring已不再是一个简单的编程框架了,从最初的“SSH框架”发展到今天,Struts和Hibernate都几乎快要从程序员视野中消失了,而Spring却发展成了一个非常庞大且完整的生态。
所以说,除非特别指明是Spring生态中的某个具体框架,否则提起“Spring”应该指的是整个Spring生态。
说句不夸张的话,Java程序员只要精通了Spring,也就掌握了Java开发的精髓。

在整个Spring生态中包含了许多应用在特定场景的具体框架,如:“Spring Framework”,“Spring Security”,“Spring Boot”,“Spring Cloud”等等,其中“Spring Framework”框架是整个生态的核心基础,其他框架都需要依赖“Spring Framework”提供的基础功能,而且每个框架都有自己独立的代码仓库。

2. Spring 框架介绍


Spring是一个开源的Java应用程序框架,由Rod Johnson创建并首次发布于2003年。它提供了一种全面的编程和配置模型,旨在简化企业级应用程序的开发。

Spring框架的核心特性是依赖注入(Dependency Injection)和面向切面编程(Aspect-Oriented Programming)。依赖注入通过解耦组件之间的依赖关系,使得代码更加可测试、可维护,并且降低了组件之间的耦合度。面向切面编程允许开发者将与业务逻辑无关的横切关注点(如事务管理、安全性等)从核心业务逻辑中分离出来,以提高代码的可重用性和可维护性。

Spring框架还提供了许多其他功能和模块,如数据访问、Web开发、消息传递、任务调度等。它支持各种应用程序类型,包括传统的单体应用、分布式系统、微服务架构等。

随着时间的推移,Spring框架的生态系统不断壮大,涌现出许多与Spring集成的项目和解决方案。例如,Spring Boot是Spring生态系统中的一个子项目,旨在简化Spring应用程序的开发和部署。Spring Cloud则提供了一套用于构建分布式系统的工具和组件。此外,Spring框架还与其他流行的开源技术(如Hibernate、MyBatis、Thymeleaf等)集成,以提供更全面的解决方案。

总之,Spring框架通过提供强大而灵活的特性,帮助开发者构建高效、可扩展且易于维护的Java应用程序。它在Java开发社区中具有广泛的影响力,并被许多企业和开发团队广泛采用。

五、 Spring Boot框架


1. Spring Boot框架介绍


Spring Boot是一款用于简化Java应用程序开发的开源框架,它是由Pivotal软件公司(现为VMware)的工程师们开发的。Spring Boot的目标是简化传统Spring框架的配置和部署过程,提供一个更快速、更易于使用的开发环境。

Spring Boot的发展可以追溯到2013年。当时,Spring框架已经成为Java开发领域最受欢迎的框架之一,但在配置和部署方面存在一些繁琐的问题。为了解决这些问题,Spring团队决定开发一个新的框架,即Spring Boot。

Spring Boot的设计初衷是让开发者能够以最小的配置快速搭建一个可运行的Java应用程序。它通过自动配置和约定大于配置的原则,减少了开发者在项目配置方面的工作量,并提供了丰富的特性和开箱即用的功能,如自动化的依赖管理、内嵌服务器、健康检查、监控等。同时,Spring Boot也保留了Spring框架的优势,如依赖注入、AOP等。

随着时间的推移,Spring Boot逐渐获得了广泛的认可和应用。它的简洁性和高效性使得开发者能够更专注于业务逻辑的实现,而无需过多关注配置和部署的细节。Spring Boot也积极采纳了开发者的反馈和贡献,不断更新和改进自身的功能。

截至当前,Spring Boot已经成为Java应用程序开发中最流行的框架之一。许多企业和开发团队都在使用它来开发各种类型的应用,包括Web应用、批处理应用、微服务等。同时,Spring Boot也与其他技术生态系统(如Spring Cloud、Spring Data等)密切结合,为开发者提供了全面的解决方案。

2.Spring Boot的缺点


学习曲线:尽管Spring Boot简化了配置和开发过程,但仍然需要掌握Spring框架的基础知识。对于初学者来说,仍需要一定的学习曲线和理解Spring框架的概念和原则。

复杂性:尽管Spring Boot简化了很多配置,但对于复杂的应用场景,仍然需要深入了解底层的Spring框架和原理。在某些情况下,需要手动进行配置或调整。

内置容器限制:Spring Boot内嵌的Web服务器默认适合开发和测试环境使用,对于高并发或特殊需求的生产环境可能不够灵活。在这种情况下,可能需要考虑使用自定义的容器进行部署。

六、Spring boot核心配置


1.启动器:  

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
   pom.xml:项目依赖文件



配置文件application.properties

#设置端口号
server.port=8082
#设置访问应用的上下文路径,contextpath
server.servlet.context-path=/myboot


yml不是以键=值的方式,而是 键:值,并且还有层级关系。

推荐使用yml的方式来写,删除application.properties

配置文件的优先级:application.properties>application.yml>appllication.yaml

2.Spring boot基本的包


1.Entity层


entity层又被称为实体类层,实体类通常包含私有成员变量和公共访问方法(getter 和 setter)可以用@Data注解轻松实现,用于存储和访问数据。在实体类中,成员变量通常与表中的列相对应,而访问方法则用于操作这些数据。

2.Service层


Service层通常是用来处理业务逻辑的部分,它还负责调用dao层,实现对数据的处理和业务逻辑的实现,然后返回给controller层。

3.Controller层


Controller层又称为控制类,处理HTTP请求。

4.Dao(Mapper)层


Dao又称为数据访问层,主要作用是实现对数据库的增删改查操作。 

5.连接数据库

引入依赖:

<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
        </dependency>
        <!-- 导入Mybatis-Plus依赖 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.0</version>
        </dependency>
        <!-- 导入lombok依赖 -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <scope>provided</scope>
        </dependency>

 .yml连接数据库:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/db02?ServerTimezone=UTC
    username: root  
    password: ***
    driver-class-name: com.mysql.cj.jdbc.Driver
spring:
  #  mysql配置信息
  datasource:
      #                 数据库地址  端口  数据库名
    url: jdbc:mysql://127.0.0.1:3306/springboot_demo?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
    username: root    # 账号
    password: root    # 密码
    driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
  mapper-locations: mapper/*.xml #这个配置是用来连接mapper接口和mapper配置类的
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #运行日志
    map-underscore-to-camel-case: true #驼峰转换
  type-aliases-package: com.example.springbootdemo.model #实体类扫描包


七、mybatis、mybatis-plus、Jpa的原理和简单使用


1. mybatis依赖

mybatis:是一个优秀的持久层的框架, 通过Dao层将业务逻辑和数据访问逻辑分离,是系统的设计更清晰,系统更容易维护和进行单元测试。它对JDBC操作数据库的过程进行封装,使得开发者只需要关注SQL语句本身,不需要再花费精力去处理其他的东西,如:注册驱动、创connection、创建statement、手动设置参数、结果集检索等JDBC繁杂的过程代码。mybatis通过XML配置文件或注解的方式配置要执行的各种Statement或preparedStatement,并通过Java对象和Statement中的SQL语句进行映射,最终生成执行的SQl语句,最后由mybatis执行SQL语句并将结果映射成Java对象返回。

 mybatis依赖:

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.2</version>
</dependency>

 而mybatis-plus是一个增强工具,它在mybatis的基础上只做增强不做改变,是为简化开发、提高效率而生。

使用spring-boot整合mybatis时,要注意mybatis的映射文件的位置,而mybatis-plus不同,它里面包含了常见的数据库核心操作,一般不需要配置映射文件。

 mybatis-plus依赖:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.3.1</version>
</dependency>


2.JPA

JPA:是一种规范或标准,用来操作实体对象,执行CRUD操作,使得框架在后台替代用户完成所有事情,Spring Data JPA是Spring提供的一套简化JPA开发的框架,提供了许多功能,如:分页、排序以及复杂查询等···

 JPA为我们提供以下功能:                                                                                                                ORM元数据:JPA支持XML和注解两种元数据形式,元数据用来描述对象和关系表之间的映射关系,框架据此将实体对象持久化到数据库中,如@Entity、@Table、@Transient等注解。

        JPA的API:用来操作实体对象,执行CRUD操作,使框架在后台替我们完成所有的事情,是开发者从烦琐的JDBC和SQL代码中解脱出来

        JPQL:通过面向对象而非面向数据库的查询语言来查询数据,避免程序的SQL语句过于读。

JPA依赖:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

       

 

JPA配置:

#jpa配置
  jpa:
    show-sql: false
    hibernate:
      ddl-auto: create
     
    properties:
      hibernate:
        dialect: org.hibernate.dialect.MySQL5Dialect

八、前端模板引擎Thymeleaf的整合和使用

         Thymeleaf:是一款支持HTML、XML、TEXT、Javascript、CSS、raw等的模板引擎,它可以完全取代JSP,与其他模板引擎相比,Thymeleaf是开箱即用的,不需要启动整个Web项目,其模板语法并不会破坏文档的结构,使用方便。

1.Thymelea依赖:

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
        <version>2.1.6.RELEASE</version>
</dependency>

2.Thymelea模板:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link href="https://cdn.staticfile.org/twitter-bootstrap/5.1.1/css/bootstrap.min.css" rel="stylesheet">
    <script src="https://cdn.staticfile.org/twitter-bootstrap/5.1.1/js/bootstrap.bundle.min.js"></script>
</head>
<body>
 
</body>
</html>


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值