java web所学到的知识

目录

一、Web应用程序的工作原理

二、HTTP协议简介

1、什么是http协议

2、http协议的工作原理

 3、HTTP协议常见状态

三、Web服务器 

1、Web服务器的作用

2、Web服务器有哪些

 四、java常识

1、src 目录

 2、常用的Spring 注解

五、Thymeleaf 

1、什么是Thymeleaf 

2、Thymeleaf的作用

3、Thymeleaf如何使用 

(1)添加Thymeleaf依赖

(2)配置Thymeleaf

(3)编写Thymeleaf模板

(4)在Java中使用Thymeleaf

六、MyBatis

1、MyBatis是什么

2、MyBatis作用

3、如何使用

(1)创建数据库和表

(2)引入MyBatis的依赖

(3)配置MyBatis

(4)创建Java实体类

(5)创建Mapper接口

(6)编写Mapper的XML文件

(7)编写Java代码

(8)运行程序


一、Web应用程序的工作原理

万维网(WWW,World Wide Web),也常常简称为Web。

用户访问资源的步骤:

  1. 在浏览器地址栏输入网址
  2. 浏览器向目标服务器发出请求
  3. 服务器接收到请求后进行业务处理,生成处理结果
  4. 服务器将处理结果返回给浏览器
  5. 浏览器以网页的形式将结果展示给用户

 

其中:

  • 用户输入的网址称为统一资源定位符(URL),是资源存放在网络上的唯一地址。

  • 浏览器与服务器之间的交互方式需要遵循超文本传输协议(HTTP),协议指定浏览器发送给服务器什么请求以及得到什么响应。

二、HTTP协议简介

1、什么是http协议

HTTP是一种协议,全称为超文本传输协议。客户端与服务器端建立连接后,客户端可以向服务器发送请求,这种请求叫做HTTP请求

HTTP请求方法有8种(其中GET,POST是最为常用的两种 。):

  • GET:从服务器获取资源。
  • POST:向服务器提交数据,用于创建新的资源或处理数据。
  • PUT:向服务器发送数据,用于更新或替换现有资源。
  • DELETE:从服务器删除指定的资源。
  • PATCH:向服务器发送部分更新的数据,用于对资源进行局部修改。
  • HEAD:与GET方法类似,但只返回响应头部信息,不返回响应体。
  • OPTIONS:获取目标资源支持的通信选项。
  • TRACE:对目标资源执行一个消息环回测试,用于追踪和调试。

服务器端接收到请求后会做出相应的响应,这种响应被称为HTTP响应。

 HTTP协议是一种纯文本的无状态协议!

2、http协议的工作原理

简单概括为以下几个步骤:

  1. 客户端发起请求:客户端向服务器发起HTTP请求,包括要访问的资源信息和请求头部等。

  2. 服务器处理请求:服务器接收请求,根据请求信息进行处理,可能涉及查询数据库、计算、验证等操作。

  3. 服务器返回响应:服务器生成HTTP响应,包含状态码、响应头部和响应体等信息,并发送给客户端。

  4. 客户端接收响应:客户端接收服务器的HTTP响应,根据响应信息进行处理,可能是渲染页面、显示数据等操作。

 3、HTTP协议常见状态

1XX(信息性状态码):表示请求已被接收,继续处理。

  • 100 Continue: 服务器已经接收到请求的头部,并且客户端可以继续发送请求的主体部分。

2XX(成功状态码):表示请求已成功被服务器接收、理解和处理。

  • 200 OK: 请求成功,服务器正常返回所请求的资源。
  • 201 Created: 请求成功并且服务器创建了新的资源。
  • 204 No Content: 服务器成功处理请求,但没有返回任何内容。

3XX(重定向状态码):表示需要进一步操作以完成请求。

  • 301 Moved Permanently: 请求的资源已永久移动到新的URL。
  • 302 Found: 请求的资源暂时移动到新的URL。
  • 304 Not Modified: 资源未修改,可使用缓存的版本。

4XX(客户端错误状态码):表示客户端发出的请求有误。

  • 400 Bad Request: 请求无效,服务器无法理解。
  • 401 Unauthorized: 请求要求身份验证。
  • 403 Forbidden: 服务器拒绝请求。
  • 404 Not Found: 请求的资源不存在。

5XX(服务器错误状态码):表示服务器无法完成有效的请求。

  • 500 Internal Server Error: 服务器内部错误。
  • 502 Bad Gateway: 作为网关或代理的服务器从上游服务器接收到无效响应。
  • 503 Service Unavailable: 服务器暂时无法处理请求,通常是由于过载或维护。

三、Web服务器 

1、Web服务器的作用

Web服务器的作用是处理HTTP请求并提供Web服务

2、Web服务器有哪些
  • Apache是一个开源、稳定可靠的通用Web服务器,Nginx是一个高性能、适用于高并发环境的开源Web服务器。
  • Microsoft IIS是微软开发的Web服务器软件,专门用于在Windows操作系统上提供Web服务;
  • Lighttpd是一个轻量级的开源Web服务器软件,适用于低端硬件和嵌入式设备;
  • Tomcat是一个开源的Java Servlet容器,也可以作为独立的Web服务器使用,适用于运行Java Web应用程序。

这些Web服务器都有自己的特点和适用场景,常用的是Apache和Nginx。选择哪种Web服务器取决于你的需求和技术栈。如果你需要一个稳定可靠的通用Web服务器,Apache是一个不错的选择。如果你关注性能和高并发处理,Nginx可能更适合。此外,如果你使用Java开发,Tomcat是一个常见的选择。 

 四、java常识

1、src 目录

在 Java 项目的 src 目录中,一些常见的文件夹及其用途可以简化描述如下:

  • com.example.project:主要代码包。
  • model:模型相关的类。
  • service:服务相关的类。
  • dao:数据访问对象相关的类。
  • controller:控制器相关的类。
  • util:工具类。
  • exception:异常处理类。
  • config:配置类。
  • test:单元测试相关的类。
  • resources:资源文件夹。
 2、常用的Spring 注解
  • @Component:通用的注解,用于标识一个类为 Spring 组件。Spring 会自动扫描并将带有该注解的类注册为 bean。

  • @Controller:用于标识一个类作为 Spring MVC 中的控制器组件。

  • @Service:用于标识一个类作为业务逻辑层的组件。

  • @Repository:用于标识一个类作为数据访问层(DAO)的组件。

  • @Autowired:用于自动装配 bean,可以用在字段、构造方法和方法上。

  • @Qualifier:与@Autowired配合使用,指定注入的 bean 名称。

  • @Value:用于注入外部配置文件中的值到 bean 的属性中。

  • @Configuration:用于定义配置类,类似于 XML 配置文件。

  • @Bean:在@Configuration类中使用,用于声明一个 bean。

  • @Scope:用于指定 bean 的作用域,如 singleton、prototype 等。

  • @ComponentScan:用于指定 Spring 在何处寻找组件类。

  • @RequestMapping:用于映射 HTTP 请求到控制器的处理方法。

  • @RequestParam:用于从请求中获取参数值。

  • @PathVariable:用于从 URL 中获取参数值。

  • @ResponseBody:用于将方法返回的对象直接作为 HTTP 响应正文返回。

五、Thymeleaf 

1、什么是Thymeleaf 

Thymeleaf是一个流行的Java服务器端模板引擎,可以用于构建Web应用程序的前端视图。它与Spring框架无缝集成,并提供了丰富的功能来处理动态内容的渲染和展示。

2、Thymeleaf的作用

Thymeleaf是Java服务器端模板引擎,用于构建Web应用程序的前端视图

1. 渲染动态内容:Thymeleaf可以将动态数据与静态模板结合,生成最终的HTML输出。

2. 处理表单:Thymeleaf提供了简便的方式来处理表单的渲染、绑定和验证。

3. 支持多种模板布局:Thymeleaf允许使用片段和布局定义来构建可重用的模板结构。

4. 国际化支持:Thymeleaf提供了国际化和本地化功能,使得应用程序可以根据用户的语言环境进行内容展示。

5. 安全性:Thymeleaf支持对模板中的HTML标签进行转义,以防止跨站点脚本攻击(XSS)

6. 可扩展性:Thymeleaf支持自定义标签和方言,可以扩展其功能以满足特定需求。

3、Thymeleaf如何使用 

  • (1)添加Thymeleaf依赖

在Maven项目中,在pom.xml文件中添加以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
  • (2)配置Thymeleaf

在Spring Boot项目中,可以在application.properties或application.yml文件中配置Thymeleaf的相关属性。

# 设置模板路径
spring.thymeleaf.prefix=classpath:/templates/
# 设置模板后缀
spring.thymeleaf.suffix=.html
# 开启缓存
spring.thymeleaf.cache=true
# 设置默认编码
spring.thymeleaf.encoding=UTF-8
  • (3)编写Thymeleaf模板

在模板文件中,可以使用Thymeleaf提供的标签来渲染动态内容。

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Thymeleaf Example</title>
</head>
<body>
    <h1 th:text="${message}"></h1>
</body>
</html>
  • (4)在Java中使用Thymeleaf

使用Thymeleaf来渲染模板并生成HTML输出。

@Controller
public class MyController {

    @GetMapping("/")
    public String home(Model model) {
        model.addAttribute("message", "Hello World!");
        return "home";
    }
}

六、MyBatis

1、MyBatis是什么

MyBatis 是一个基于 Java 的持久层框架,它是 Apache 软件基金会下的一个开源项目。它通过 XML 或注解的方式将 SQL 语句与 Java 对象进行映射,可以方便地进行数据库操作。

2、MyBatis作用

  • SQL映射:将数据库表的列与Java对象的属性进行映射,通过操作Java对象执行数据库操作,避免编写繁琐的SQL语句。

  • 参数处理:支持各种参数类型,如基本类型、自定义对象、集合等,并自动进行类型转换。

  • SQL执行:提供插入、更新、删除和查询等SQL操作的功能,通过API调用执行SQL语句并获取结果。

  • 缓存管理:支持缓存机制,提高查询性能,包括一级缓存和二级缓存。

  • 事务管理:与事务管理器整合,确保数据库操作的原子性和一致性。

3、如何使用

        完整小案例 

  • (1)创建数据库和表

创建一个名为student_management的数据库,并在该数据库中创建一个名为student的表,表结构如下:

CREATE DATABASE student_management;

USE student_management;

CREATE TABLE student (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(50),
  age INT,
  gender VARCHAR(10)
);
  • (2)引入MyBatis的依赖

在Maven项目的pom.xml文件中引入MyBatis的依赖:

<dependencies>
    <!-- MyBatis -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.7</version>
    </dependency>
    <!-- MySQL Connector/J -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.27</version>
    </dependency>
</dependencies>
  • (3)配置MyBatis

创建mybatis-config.xml文件,并放置在项目的资源目录下(例如src/main/resources)。配置文件内容如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/student_management?useSSL=false&amp;serverTimezone=UTC"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="com/example/StudentMapper.xml"/>
  </mappers>
</configuration>

注意将url中的数据库连接信息(例如用户名、密码)修改为你自己的。

  • (4)创建Java实体类

创建一个名为Student的Java类,表示学生对象,包括id、name、age和gender属性。在com.example包下创建Student.java文件,内容如下:

package com.example;

public class Student {
    private Long id;
    private String name;
    private Integer age;
    private String gender;
    
    // 省略getter和setter方法
}
  • (5)创建Mapper接口

创建一个名为StudentMapper的Mapper接口,定义对学生信息的增删改查操作。在com.example包下创建StudentMapper.java文件,内容如下:

package com.example;

public interface StudentMapper {
    void insertStudent(Student student);
    void updateStudent(Student student);
    void deleteStudent(Long id);
    Student getStudentById(Long id);
}
  • (6)编写Mapper的XML文件

创建一个名为StudentMapper.xml的XML文件,编写SQL语句和映射规则。在com.example包下创建StudentMapper.xml文件,内容如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.StudentMapper">
  <insert id="insertStudent" parameterType="com.example.Student">
    INSERT INTO student (name, age, gender)
    VALUES (#{name}, #{age}, #{gender})
  </insert>
  
  <update id="updateStudent" parameterType="com.example.Student">
    UPDATE student SET name = #{name}, age = #{age}, gender = #{gender}
    WHERE id = #{id}
  </update>
  
  <delete id="deleteStudent" parameterType="java.lang.Long">
    DELETE FROM student WHERE id = #{id}
  </delete>
  
  <select id="getStudentById" parameterType="java.lang.Long" resultType="com.example.Student">
    SELECT * FROM student WHERE id = #{id}
  </select>
</mapper>
  • (7)编写Java代码

创建一个名为Main的Java类,用于测试数据库操作。在src/main/java目录下创建Main.java文件,内容如下:

import com.example.Student;
import com.example.StudentMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class Main {
    public static void main(String[] args) {
        // 加载MyBatis配置文件
        try (InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml")) {
            // 创建SqlSessionFactory
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            
            // 创建SqlSession
            try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
                // 获取Mapper对象
                StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
                
                // 插入学生信息
                Student student = new Student();
                student.setName("Alice");
                student.setAge(20);
                student.setGender("Female");
                studentMapper.insertStudent(student);
                System.out.println("Inserted student id: " + student.getId());
                
                // 更新学生信息
                student.setName("Bob");
                studentMapper.updateStudent(student);
                
                // 查询学生信息
                Student retrievedStudent = studentMapper.getStudentById(student.getId());
                System.out.println("Retrieved student: " + retrievedStudent);
                
                // 删除学生信息
                studentMapper.deleteStudent(retrievedStudent.getId());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
  • (8)运行程序

运行Main.java文件,可以看到控制台输出相应的结果,表示数据库操作已成功执行。

这是一个简单的MyBatis小案例,涉及数据库创建、表结构定义、MyBatis配置、Java代码编写等。

  • 19
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

娃哈哈哈哈呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值