Java教程

LMER的JAVAWeb笔记

本文主要是介绍LMER的JAVAWeb笔记,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

JAVAWeb笔记

  • 一些基本概念
    • IP地址
    • 端口
    • Web应用程序
    • 静态Web
    • 动态Web
  • Web服务器
    • 技术的实现
  • TomCat
    • 目录
  • HTTP
    • 什么是HTTP
    • HTTP1.0/1.1
    • HTTP请求
    • HTTP响应
  • IDEA中JavaWeb项目的创建
  • Servlet
    • 什么是Servlet
    • 通过实现Servlet接口去实现Servlet程序的构建
    • Servlet的生命周期
    • 通过继承HttpServlet来实现Servlet程序
    • 使用IDEA菜单生成
    • Servlet总继承关系
  • ServletConfig类
    • 三大作用

一些基本概念

  1. 网络编程中的两个问题:
    • 如何精确的定位到网络上的一台或多台主机
    • 找到主机后如何进行通信
  2. 网络编程中的要素
    • IP 和 端口号
    • 网络通信协议

IP地址

InetAddress类

  • 唯一定位一台网络上的计算机
  • 127.0.0.1:本机 localhost
public class test {
    public static void main(String[] args)  {
        try {
            //查询本机地址
            InetAddress ia1 = InetAddress.getByName("127.0.0.1");
            System.out.println(ia1);///127.0.0.1
            InetAddress ia2 = InetAddress.getByName("localhost");
            System.out.println(ia2);//localhost/127.0.0.1
            InetAddress ia3 = InetAddress.getLocalHost();
            System.out.println(ia3);//LAPTOP-PP239F6P/10.115.38.34

            //查询网站地址
            InetAddress ia4 = InetAddress.getByName("www.baidu.com");
            System.out.println(ia4);//www.baidu.com/110.242.68.4

        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    }
}

端口

端口表示计算机上的一个程序的进程

  • 不同的进程有不同的端口号;用来区分软件
  • TCP/UDP

端口的分类:

  1. 公有端口: 0-1023
    • HTTP:80
    • HTTPS:443
    • FTP:21
    • Telent:23
  2. 程序注册端口: 1024-49151(分配给用户和程序的)
    • Tomcat:8080
    • Mysql:3306
    • Oracle:1521
  3. 动态、私有的: 49152-65535

Web应用程序

概念:可以供浏览器访问的程序;

  1. 静态Web
    • html css
    • 提供给所有人看的数据不会发生变化
  2. 动态Web
    • 几乎所有的网站
    • 提供给所有人看的数据会发生变化,每个人在不同时间、地点看到的信息不同
    • 技术栈:Servlet/ISP、ASP、PHP

在Java中,动态Web资源开发的技术统称为JavaWeb

组成(静态Web和动态Web):

- html , css , js
- jsp , servlet
- Java程序
- jar包
- 配置文件(Properties)

Web应用程序在编写完毕后,需要一个服务器来统一管理以便给外界访问

静态Web

htm和html后缀的文件都是网页的后缀,只有在服务器上存放了这些文件客户端才能访问

  • 缺点
    • Web页面无法动态更新,用户看到的都是同一个页面
      • 点击特效类的都是属于伪动态
      • JavaScript
      • VBScript
    • 无法与数据库交互,数据无法持久化

动态Web

在这里插入图片描述

缺点
- 假如服务器的动态Web资源出现了错误,就需要重新编写后台程序

优点

  • Web页面实现动态更新,用户看到的都是不同的页面
  • 可以与数据库交互,数据实现了持久化

Web服务器

解释:服务器是一种被动的操作,用来给用户的一些请求和给用户一些响应信息

技术的实现

C/S架构:客户端和服务器

B/S架构:浏览器和服务器

ASP

  • 在HTML中嵌入VB的脚本,ASP+COM
  • 一个页面的实现需要高达千行多的代码,极其混乱,维护成本极高
  • IIS服务器
  • C#

PHP

  • 开发速度快,功能强大,可跨平台,代码简单
  • 无法承载大的数据访问量(局限性)

JSP/Servlet

  • 采用B/S架构
  • 基于Java实现
  • 可以承载高并发,高可用,高性能带来的影响

TomCat

目录

bin: 存放tomcat服务器的可执行程序
conf: 存放tomcat的配置文件
lib: 存放jar包
logs: 存放服务器运行时输出的日志信息
temp: 存放临时数据
webapps: 存放部署的web工程
work:tomcat工作时的目录,存放tomcat运行时jsp翻译为Servlet的源码,和Session的钝化目录

HTTP

什么是HTTP

HTTP(超文本传输协议)是一个简单的请求-相应协议,通常运行在TCP之上

  • 文本:html,字符,字符串,txt…
  • 超文本:图片,音乐,视频,定位…
  • 默认端口:80

HTTPS(s:安全的)

  • 默认端口:443

HTTP1.0/1.1

Http1.0:客户端与Web服务器连接后,只能获得一个Web资源,然后就会断开连接

Http1.1:客户端与Web服务器连接后,可以获得多个Web资源

HTTP请求

  • 客户端–发送请求–服务端

百度:

Request URL: https://www.baidu.com/   //请求地址
Request Method: GET			//get方法/post方法
Status Code: 200 OK				//状态码:200
Remote Address: 110.242.68.4:443

请求行中的请求方式:GET,POST,HEAD,DELLET…

  • get:请求所能携带的参数少,大小有限制,会在浏览器的URL地址栏显示数据内容,不安全,但相对高效
  • post:请求所能携带的参数没有限制,大小没有限制,不会在浏览器的URL地址栏显示数据内容,安全,但相对不高效

HTTP响应

  • 服务端–响应–客户端

百度:

Cache-Control: private	缓存控制
Connection: keep-alive	连接
Content-Encoding: gzip	编码
Content-Type: text/html;charset=utf-8	类型

响应的状态码:

  • 200:请求响应成功
  • 3XX:重定向
  • 4XX:找不到资源(404)
  • 5XX:服务器代码错误(500 502:网关错误)

IDEA中JavaWeb项目的创建

在这里插入图片描述
新建项目
在这里插入图片描述
然后就是自定义名字和路径,然后来看项目中各目录的作用
在这里插入图片描述

Servlet

什么是Servlet

  • Servlet是JavaEE规范(接口)之一;是一个运行在服务器的小程序,可以接受客户端发送过来的请求,并响应数据给服务端
  • JavaWeb三大组件:Servlet程序;Filter过滤器;Listener监听器

通过实现Servlet接口去实现Servlet程序的构建

在src目录下创建Servlet类的包,然后创建Servlet类
在这里插入图片描述

import javax.servlet.*;
import java.io.IOException;

public class HelloServlet implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    //service方法是专门用来处理请求和响应的
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("HelloServlet 被访问了");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}

然后需要去web的配置文件中进行修改
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <!-- servlet标签给tomcat配置Servlet程序 -->
    <servlet>
        <!-- 起别名 -->
        <servlet-name>servlet1</servlet-name>
       <!-- servlet的全类名 -->
        <servlet-class>com.lmer.HelloServlet</servlet-class>
    </servlet>

    <!-- servlet-mapping标签给servlet程序配置访问地址 -->
    <servlet-mapping>
        <!-- 告诉服务器当前配置的地址是给谁使用的 -->
        <servlet-name>servlet1</servlet-name>
        <!-- 配置访问地址 </br>
             /表示的地址是http://ip:port/工程路径
        -->
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
    
</web-app>

Servlet的生命周期

  1. 执行 Servlet 的构造器方法
  2. 执行 init 初始化方法

第一和第二步是在第一次访问Servlet程序时会调用的

  1. 执行service方法

每次访问都会调用

  1. 执行 destroy 销毁方法

在Web工程停止时调用

package com.lmer;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;

public class HelloServlet implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    //service方法是专门用来处理请求和响应的
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("HelloServlet 被访问了");
        //HttpServletRequest是ServletRequest的一个子类,调用其getMethod方法来获得请求的类型
        HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
        String method = httpServletRequest.getMethod();
        
        if("GET".equals(method)){
            doGet();
        }else if("POST".equals(method)){
            doPost();
        }
    }

    public void doPost() {
        System.out.println("执行POST请求的访问响应");
    }

    public void doGet() {
        System.out.println("执行GET请求的访问响应");
    }

    
    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}

通过继承HttpServlet来实现Servlet程序

  1. 写一个类去继承HTTPServlet
  2. 重写doGet和doPost方法
  3. 去配置文件中进行修改操作
public class HelloServlet2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {     
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        
    }
}

使用IDEA菜单生成

在这里插入图片描述
然后设置名字
在这里插入图片描述
配置
在这里插入图片描述
然后就可以访问了

Servlet总继承关系

ServletConfig类

从类名上解析就是Servlet类的配置信息类

Servlet和ServletConfig类都是由Tomcat来进行创造,我们负责使用的。

在第一次访问Servlet对象的时候,就会创建该Servlet对象,其对应的ServletConfig对象也随之创建

三大作用

  1. 获得Servlet程序的别名–>servlet-name的值
  2. 获取初始化参数init-param
  3. 获取servletContext对象

获得Servlet程序的别名–>servlet-name的值:
在这里插入图片描述
获取初始化参数init-param:

首先需要去配置文件中配置Servlet程序的初始化参数

在这里插入图片描述

然后再在Servlet程序中使用

在这里插入图片描述
获取servletContext对象:

System.out.println(servletConfig.getServletContext());
//org.apache.catalina.core.ApplicationContextFacade@4541df9b

注意!!!!!!
如果是用继承HttpServlet的方式来实现Servlet程序的话,在重写init(ServletConfig config)方法的时候,需要注意以下问题:

在这里插入图片描述

这篇关于LMER的JAVAWeb笔记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!