基本概念
- C/S架构(Client/Server,客户端/服务器模式),是一种比较早的软件体系结构,也是生活中很常见的结构。这种结构将需要处理的业务合理地分配到客户端和服务器端,客户端通常负责完成与用户的交互任务,服务器通常负责数据的管理。 – QQ软件app
- B/S架构(Browser/Server,浏览器/服务器模式),是互联网兴起后的软件体系结构,该结构将系统功能实现的主要业务逻辑集中到服务器端,极少数业务逻辑在浏览器实现,浏览器通常负责完成与用户的交互任务,服务器通常负责数据的管理。-- 网页版QQ
B/S架构
Tomcat服务器
java 代码的一个很重要的作用就是进行数据的处理,但是目前来说我们运行编写的代码,只有一次性,也就是运行完毕后,如果需要再次运行则需要再次手动启动代码的执行。但是我们无法提前用户会何时发送请求,也就无法决定我们编写的 java 代码应该什么时候启动运行。而且手动运行也变得不现实。根据 java 的网络编程内容,我们可以使用代码编写一个容器(对象),这个容器可以根据客户的请求来启动并运行我们编写的数据逻辑代码。
所谓服务器其实就是代码编写的一个可以根据用户请求实时的调用执行对应的逻辑代码的一个容器。在普通用户看来就是一个安装程序。我们只需要将服务器在操作系统上进行安装,并将我们事先编写好的逻辑处理代码根据规则放到服务器的指定位置,启动服务器,那么服务器就自动的会根据接收到请求调用并执行对象的逻辑代码进行处理。
管理和布置web应用
响应针对静态页面或图片的请求
将动态请求委托给其他程序(Servlet容器、CGI等等技术)
Servlet容器
如果浏览器中请求的是动态资源的话,web服务器就无法处理了。Server Applet(Servlet)来对动态请求进行处理返回动态资源。所有就有一套叫做Servlet容器的东西来统一加载和管理Servlet。
这样一来HTTP服务器不直接跟servlet打交道,而是把请求交给Servlet容器去处理,Servlet容器会将请求转发到具体的Servlet,如果这个Servlet还没创建,就加载并实例化这个Servlet,然后调用这个Servlet的接口方法。
HTTP协议
- HTTP请求格式
POST /task01_demo01/demo1.html HTTP/1.1
Host: localhost:8088
Content-Length: 21
Cache-Control: max-age=0
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64)
name=scott&pwd=123456 // 请求体
- HTTP响应格式
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 588
Date: Thu, 08 Sep 2021 12:59:54 GMT
<html><head><title>示例1</title></head> // 响应体
<body><h1>这是一个HTML页面</h1></body>
</html>
POST和GET请求
- GET请求
发出GET请求的主要方式:
(1)在浏览器输入URL按回车
(2)点击超链接
(3)点击submit按钮,提交 表单
GET请求特点:会将请求数据添加到请求URL地址的后面,只能提交少量的数据、不安全 - POST请求
发出POST请求的方法如下:
点击submit按钮,提交 表单
POST请求的特点: 请求数据添加到HTTP协议体中,可提交大量数据、安全性好
案例
在浏览器中输入表单信息,之后将表单信息打印到idea的控制台,并且将获得的数据响应到浏览器中。
创建项目 – java enterprise 勾选web 之后配合服务器 将代码部署到服务器中
编写.html文件 action的值为服务器的地址,每一个表单都是需要使用name属性的。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="demo01" method="get">
名字:<input type="text" name="name" /> <br/>
<input type="submit" value="提交">
</form>
</body>
</html>
编写servlet类 – 使用@WebServlet注解,地址就是浏览器要输入的地址,前面要写一个/ 该类继承HttpServlet方法。并且重写doget和dopost方法。
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet(urlPatterns = "/demo01")
public class demo02 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=UTF-8");
String name = req.getParameter("name");
System.out.println(name);
PrintWriter writer = resp.getWriter();
writer.print(name);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doPost方法运行");
}
}