http&tomcat&Servlet WEB开发介绍

什么是web

WEB,在英语中web即表示网页的意思,它用于表示Internet主机(服务器)上供外界访问的资源

C/S架构

Client / Server,客户端和服务器端,用户需要安装专门客户端程序。(QQ、微信、LOL)

B/S架构

Browser / Server,浏览器和服务器端,不需要安装专门客户端程序,浏览器是操作系统内置。(微信网页版、购物网站)

  • 相同点

    都是基于请求-响应交互模型:即浏览器(客户端) 向 服务器发送 一个 请求。服务器 向 浏览器(客户端)回送 一个响应 。

  • 不同点

    实现C/S模型需要用户在自己的操作系统安装各种客户端软件(百度网盘、腾讯QQ等);实现B/S模型,只需要用户在操作系统中安装浏览器即可。

注:B/S模型可以理解为一种特殊C/S模型。

B/S:使用方便,更加通用,易于维护,不稳定,依赖网络、安全性相对较差。

C/S:稳定性较好,软件资源可以提前加载,安全性相对较高,更新维护成本较高(xp、win7、win8、win10、安卓、ios、ipad)

 

  1. 浏览器必须先请求服务器, 服务器处理请求, 给浏览器响应

  2. 浏览器和服务器之间通信是基于HTTP协议

  3. 一次请求,一次响应

  4. 先有请求,后有响应

什么是服务器

服务器就是提供服务的机器(电脑),提供数据库服务我们就称为数据库服务器,提供WEB服务我们就称为WEB服务器。(MySQL服务器=MySQL软件+电脑)

服务器就是一个软件,任何电脑只需要安装上了服务器软件, 我们的电脑就可以当做一台服务器了. 安装了MySQL软件的电脑就是一台数据库服务器,可以向外提供数据存储查询的服务。

服务器: 硬件(电脑)+软件(mysql, tomcat,nginx)

MySQL+主机:MySQL服务器 提供外部存储和访问的服务

tomcat+主机:web服务器 提供外部访问资源【静态资源+动态资源】的服务

常见web服务器

  • WebLogic

    Oracle公司的产品,是目前应用比较多的Web服务器,支持J2EE规范。WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。

  • Glass Fish

    最早是Sun公司的产品,后来被Oracle收购,开源免费,中型服务器。

  • JBoss

    JBoss公司产品,开源,支持JavaEE规范,占用内存、硬盘小,安全性和性能高。

Tomcat

中小型的应用系统,免费,开源,效率特别高, 适合扩展(搭集群)支持JSP和Servlet.

  1. 服务器:软件+硬件

    • MySQl+主机:数据库服务器 提供外部进行数据存储查询的服务

    • tomcat+主机:web服务器 通过外部访问静态资源和动态资源的服务

HTTP是HyperText Transfer Protocol(超文本传输协议)的简写,传输HTML文件。就是规范.

HTTP是互联网上用的最多的一个协议, 所有的www开头的都是遵循这个协议的(可能是https 超文本传输安全协议)

HTTP协议的作用

HTTP作用:用于定义WEB浏览器与WEB服务器之间交换数据的过程和数据本身的内容

浏览器和服务器交互过程: 浏览器请求, 服务器处理请求响应

请求(请求行,请求头,请求体)

响应(响应行,响应头,响应体)

  1. 响应行

    1. 协议版本 HTTP/1.1

    2. HTTP状态码

      1. 200:请求成功

      2. 404:请求资源不存在 【路径写错 或 资源真的不存在】

      3. 500:服务器内部错误 【java代码运行出错】

  2. 响应头:服务器告诉浏览器一些信息

    1. location:重新设置请求地址

    2. refresh:定时刷新

    3. content-Type:服务器告诉浏览器我响应给你的内容类型

    4. content-disposition:服务器告诉浏览器你给我去下载

  3. 响应体:服务器响应给浏览器的内容

1什么是Servlet

Servlet 运行在服务端(tomcat)的Java小程序,是sun公司提供一套规范. 就是动态资源

Servlet是充当于服务器(tomcat)和java程序之前沟通的桥梁中介

Servlet作用

用来接收客户端请求信息、处理客户端请求、响应给浏览器的动态资源。

但servlet的实质就是java代码,通过java的API动态的向客户端输出内容

2.3 servlet与普通的java程序的区别

  1. 必须实现servlet接口

  2. 必须在servlet容器(服务器 tomcat)中运行

  3. servlet程序可以接收用户请求参数以及向浏览器输出数据

Servlet生命周期描述

  1. 常规【重点】

    init:默认情况下, 来了第一次请求, 会调用init()方法进行初始化 【调用一次】

    service:每次请求 都会调用service()方法处理这个请求 【多次调用】

    destroy:服务器正常关闭或者项目从服务器移除, 调用destory()方法进行销毁【调用一次】

  2. 扩展

    servlet是单例多线程的, 尽量不要在servlet里面使用全局(成员)变量,可能会导致线程不安全,但是可以使用一些公共对象。

    单例: 在程序运行期间,有且仅有一个对象。

    多线程: 服务器会针对每次请求, 开启一个线程调用service()方法处理这个请求

  1. 创建web项目,创建两个Servlet CountServlet和ShowServlet 使用ServletContext存储网站访问的次数

  2. 编写CountServlet

//计数  记录网站访问人数
//1.获取当前访问次数 +1 

编写ShowServlet

//显示  显示你是当前第几位访问用户
CountServlet

package com.itheima.web;

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
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;

/**
 * 记录用户访问次数
 * 用户访问次数存在ServletContext对象中  实现数据共享
 */
@WebServlet("/count")
public class CountServlet extends HttpServlet {

    @Override
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
        //设置第一次访问之前 访问次数为0   
        config.getServletContext().setAttribute("count",0);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.获取之前的访问次数 
        ServletContext servletContext = this.getServletContext();
        Integer count = (Integer) servletContext.getAttribute("count");
        //2.将访问次数+1 
        count++;
        //3.将新的访问次数重新存入到ServletContext对象中
        servletContext.setAttribute("count",count);

        response.getWriter().print("Welcome...");
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}

package com.itheima.web;

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;

/**
 *显示用户访问次数
 */
@WebServlet("/show")
public class ShowServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.获取访问次数 
        Object count = this.getServletContext().getAttribute("count");
        //2.显示  你是第几个访问的用户
        // 解决响应中文乱码问题
        response.setContentType("text/html;charset=UTF-8");
        response.getWriter().print("你是第"+count+"个访问的用户");
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值