Servlet核心技术(上)

基本概念

  1. C/S架构(Client/Server,客户端/服务器模式),是一种比较早的软件体系结构,也是生活中很常见的结构。这种结构将需要处理的业务合理地分配到客户端和服务器端,客户端通常负责完成与用户的交互任务,服务器通常负责数据的管理。 – QQ软件app
  2. 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协议

  1. 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  // 请求体
  1. 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请求

  1. GET请求
    发出GET请求的主要方式:
    (1)在浏览器输入URL按回车
    (2)点击超链接
    (3)点击submit按钮,提交 表单
    GET请求特点:会将请求数据添加到请求URL地址的后面,只能提交少量的数据、不安全
  2. 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方法运行");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

花花叔叔

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

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

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

打赏作者

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

抵扣说明:

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

余额充值