目录
一、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)运行程序
万维网(WWW,World Wide Web),也常常简称为Web。
用户访问资源的步骤:
其中:
用户输入的网址称为统一资源定位符(URL),是资源存放在网络上的唯一地址。
浏览器与服务器之间的交互方式需要遵循超文本传输协议(HTTP),协议指定浏览器发送给服务器什么请求以及得到什么响应。
HTTP是一种协议,全称为超文本传输协议。客户端与服务器端建立连接后,客户端可以向服务器发送请求,这种请求叫做HTTP请求。
HTTP请求方法有8种(其中GET,POST是最为常用的两种 。):
服务器端接收到请求后会做出相应的响应,这种响应被称为HTTP响应。
HTTP协议是一种纯文本的无状态协议!
简单概括为以下几个步骤:
客户端发起请求:客户端向服务器发起HTTP请求,包括要访问的资源信息和请求头部等。
服务器处理请求:服务器接收请求,根据请求信息进行处理,可能涉及查询数据库、计算、验证等操作。
服务器返回响应:服务器生成HTTP响应,包含状态码、响应头部和响应体等信息,并发送给客户端。
客户端接收响应:客户端接收服务器的HTTP响应,根据响应信息进行处理,可能是渲染页面、显示数据等操作。
1XX(信息性状态码):表示请求已被接收,继续处理。
2XX(成功状态码):表示请求已成功被服务器接收、理解和处理。
3XX(重定向状态码):表示需要进一步操作以完成请求。
4XX(客户端错误状态码):表示客户端发出的请求有误。
5XX(服务器错误状态码):表示服务器无法完成有效的请求。
Web服务器的作用是处理HTTP请求并提供Web服务
这些Web服务器都有自己的特点和适用场景,常用的是Apache和Nginx。选择哪种Web服务器取决于你的需求和技术栈。如果你需要一个稳定可靠的通用Web服务器,Apache是一个不错的选择。如果你关注性能和高并发处理,Nginx可能更适合。此外,如果你使用Java开发,Tomcat是一个常见的选择。
1、src
目录在 Java 项目的 src
目录中,一些常见的文件夹及其用途可以简化描述如下:
com.example.project
:主要代码包。model
:模型相关的类。service
:服务相关的类。dao
:数据访问对象相关的类。controller
:控制器相关的类。util
:工具类。exception
:异常处理类。config
:配置类。test
:单元测试相关的类。resources
:资源文件夹。@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是一个流行的Java服务器端模板引擎,可以用于构建Web应用程序的前端视图。它与Spring框架无缝集成,并提供了丰富的功能来处理动态内容的渲染和展示。
Thymeleaf是Java服务器端模板引擎,用于构建Web应用程序的前端视图
1. 渲染动态内容:Thymeleaf可以将动态数据与静态模板结合,生成最终的HTML输出。
2. 处理表单:Thymeleaf提供了简便的方式来处理表单的渲染、绑定和验证。
3. 支持多种模板布局:Thymeleaf允许使用片段和布局定义来构建可重用的模板结构。
4. 国际化支持:Thymeleaf提供了国际化和本地化功能,使得应用程序可以根据用户的语言环境进行内容展示。
5. 安全性:Thymeleaf支持对模板中的HTML标签进行转义,以防止跨站点脚本攻击(XSS)
6. 可扩展性:Thymeleaf支持自定义标签和方言,可以扩展其功能以满足特定需求。
在Maven项目中,在pom.xml文件中添加以下依赖:
org.springframework.boot
spring-boot-starter-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
在模板文件中,可以使用Thymeleaf提供的标签来渲染动态内容。
Thymeleaf Example
使用Thymeleaf来渲染模板并生成HTML输出。
@Controller
public class MyController {
@GetMapping("/")
public String home(Model model) {
model.addAttribute("message", "Hello World!");
return "home";
}
}
MyBatis 是一个基于 Java 的持久层框架,它是 Apache 软件基金会下的一个开源项目。它通过 XML 或注解的方式将 SQL 语句与 Java 对象进行映射,可以方便地进行数据库操作。
SQL映射:将数据库表的列与Java对象的属性进行映射,通过操作Java对象执行数据库操作,避免编写繁琐的SQL语句。
参数处理:支持各种参数类型,如基本类型、自定义对象、集合等,并自动进行类型转换。
SQL执行:提供插入、更新、删除和查询等SQL操作的功能,通过API调用执行SQL语句并获取结果。
缓存管理:支持缓存机制,提高查询性能,包括一级缓存和二级缓存。
事务管理:与事务管理器整合,确保数据库操作的原子性和一致性。
完整小案例
创建一个名为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)
);
在Maven项目的pom.xml
文件中引入MyBatis的依赖:
org.mybatis
mybatis
3.5.7
mysql
mysql-connector-java
8.0.27
创建mybatis-config.xml
文件,并放置在项目的资源目录下(例如src/main/resources
)。配置文件内容如下:
注意将url
中的数据库连接信息(例如用户名、密码)修改为你自己的。
创建一个名为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方法
}
创建一个名为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);
}
创建一个名为StudentMapper.xml
的XML文件,编写SQL语句和映射规则。在com.example
包下创建StudentMapper.xml
文件,内容如下:
INSERT INTO student (name, age, gender)
VALUES (#{name}, #{age}, #{gender})
UPDATE student SET name = #{name}, age = #{age}, gender = #{gender}
WHERE id = #{id}
DELETE FROM student WHERE id = #{id}
创建一个名为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();
}
}
}
运行Main.java
文件,可以看到控制台输出相应的结果,表示数据库操作已成功执行。
这是一个简单的MyBatis小案例,涉及数据库创建、表结构定义、MyBatis配置、Java代码编写等。