2、JavaWeb的笔记(1版本)

该文件的JavaWeb代码文件目录

JavaWeb代码文件在idea中的study_JaveWeb中:D:\idea\study_JavaWeb

参考JavaWeb的文档博客网址:https://blog.csdn.net/z1427094386/article/details/120557573

学习前端HTML、CSS、JavaScript、jQuery、Ajax、JSON网页:https://www.w3cschool.cn/html/

对于JavaWeb,我们需要掌握的知识有:
Servlet,JSP,MVC设计模式,Cookie,Session,JavBean组件技术
,EL表达式,JSTL表达式,过滤器Filter,监听器Listener,文件的上传下载,国际化。

Java基础的代码在D:\idea\study_Java_basics

HTML在线运行器网址

HTML在线运行器网址:https://www.5axxw.com/tools/web/web_run.html

前后端不分离、前后端半分离、前后端分离阶段的解读

网址:https://www.xjx100.cn/news/385345.html?action=onClick

问题

1、URI和URL的区别

网址:http://news.sohu.com/a/525677594_121124376

2、GET和POST的区别

网址:https://blog.csdn.net/weixin_36332320/article/details/114190801

GET:从服务器上获取数据

POST:向服务器传送数据

3、资源跳转方式:重定向和转发

网址:https://blog.csdn.net/weixin_44606952/article/details/126104207

4、Java命名规范

一、命名规范

1、 项目名全部小写

2、 包名全部小写

3、 类名首字母大写,如果类名由多个单词组成,每个单词的首字母都要大写。

如:public class MyFirstClass{}

4、 变量名、方法名首字母小写,如果名称由多个单词组成,每个单词的首字母都要大写。

如:int index=0;

       public void toString(){}

5、 常量名全部大写

如:public static final String GAME_COLOR=”RED”;

6、所有命名规则必须遵循以下规则:

1)、名称只能由字母、数字、下划线、$符号组成

2)、不能以数字开头

3)、名称不能使用JAVA中的关键字。

4)、坚决不允许出现中文及拼音命名。

 

二、注释规范

1、   类注释

在每个类前面必须加上类注释,注释模板如下:

/**

* Copyright (C), 2006-2010, ChengDu Lovo info. Co., Ltd.

* FileName: Test.java

* 类的详细说明

*

* @author 类创建者姓名
    * @Date    创建日期

* @version 1.00

*/

 

2、   属性注释

在每个属性前面必须加上属性注释,注释模板如下:

/** 提示信息 */

private String strMsg = null;

 

3、   方法注释

在每个方法前面必须加上方法注释,注释模板如下:

/**

* 类方法的详细使用说明

*

* @param 参数1 参数1的使用说明

* @return 返回结果的说明

* @throws 异常类型.错误代码 注明从此类方法中抛出异常的说明

*/

4、   构造方法注释

在每个构造方法前面必须加上注释,注释模板如下:

/**

* 构造方法的详细使用说明

*

* @param 参数1 参数1的使用说明

* @throws 异常类型.错误代码 注明从此类方法中抛出异常的说明

*/

 

5、   方法内部注释

在方法内部使用单行或者多行注释,该注释根据实际情况添加。

如://背景颜色

       Color bgColor = Color.RED

5、SDK JDK JRE JVM 四者的关系

SDK JDK JRE JVM 四者的关系

一:SDK与JDK的关系(可以认为jdk只是sdk的一种子集)

SDK是Software Development Kit的缩写,中文意思是“软件开发工具包”。这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做“SDK”。SDK是一系列文件的组合,它为软件的开发提供一个平台(它为软件开发使用各种API提供便利)。

JDK(Java Development Kit,Java开发工具包)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK(Software development kit)。可以认为jdk只是sdk的一种(子集),因为它是开发java程序的一个平台,开发其他程序的sdk可以没有jdk。

二:JDK JRE JVM的关系(如图)

JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库。JRE(Java Runtime Environment)是运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。JVM是Java Virtual Machine(Java虚拟机)的缩写,是整个java实现跨平台的最核心的部分,能够运行以Java语言写作的软件程序。

image-20230711010910827

JDK中包含JRE,在JDK的安装目录下有一个名为jre的目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。

JDK是整个JAVA的核心,包括了Java运行环境JRE(Java Runtime Envirnment)、一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。

①SE(J2SE),standard edition,标准版,是我们通常用的一个版本,从JDK 5.0开始,改名为Java SE。

②EE(J2EE),enterprise edition,企业版,使用这种JDK开发J2EE应用程序,从JDK 5.0开始,改名为Java EE。

③ME(J2ME),micro edition,主要用于移动设备、嵌入式设备上的java应用程序,从JDK 5.0开始,改名为Java ME

JRE(Java Runtime Environment)

是运行基于Java语言编写的程序所不可缺少的运行环境。也是通过它,Java的开发者才得以将自己开发的程序发布到用户手中,让用户使用。

JRE中包含了Java virtual machine(JVM),runtime class libraries和Java application launcher,这些是运行Java程序的必要组件。

与大家熟知的JDK不同,JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器),只是针对于使用Java程序的用户。

JVM:Java Virtual Mechinal(JAVA虚拟机)。JVM是JRE的一部分,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM 的主要工作是解释自己的指令集(即字节码)并映射到本地的 CPU 的指令集或 OS 的系统调用。Java语言是跨平台运行的,其实就是不同的操作系统,使用不同的JVM映射规则,让其与操作系统无关,完成了跨平台性。JVM 对上层的 Java 源文件是不关心的,它关注的只是由源文件(Java源文件就是以.java为扩展名的文件)生成的类文件( class file )。类文件的组成包括 JVM 指令集,符号表以及一些补助信息。

JVM即Java虚拟机,是一种抽象计算机,它有一个指令集,在运行时操作各种内存区域。虚拟机有很多种,不同厂商提供了不同实现,只要遵循虚拟机规范即可,目前我们所说的虚拟机一般指的是Hot Spot。JVM对Java语言一无所知,只知道一种特定的二进制格式,即类文件格式,我们写好的程序最终交给JVM执行的时候会被编译成二进制格式,JVM只认识二进制格式,所以任何语言只要编译后的格式符合要求,都可以在JVM上运行。一个Java类在经过编译好类加载之后,会将加载后的数据放入运行时数据区域,这样我们在运行程序时就可以直接从运行时数据区域中读取信息。

image-20230905215654199

JavaWeb(正文)

一、Java Web简介

web: 前端的一些内容,在浏览器中展示的内容,html + css + js
Java Web: 使用Java语言来编写前端页面 ;

jsp属于Java ,所以学习jsp实际上就是学习Java的一个类/接口 Servlet

jsp 全名称:java server page Java服务器页面 ( 动态资源页面)

静态资源页面:当这个页面写完之后,内容就固定死了,不管在何时何地打开,页面展示的内容都是一样的;页面中的数据是死的;
动态资源页面:页面中的数据会变化,写完之后,在不同时间、不同条件下,打开页面展示的内容可能会不一样;页面中的数据不是死的;将html原本内容和从数据库中查询出来的内容重新合并组成一个新的html页面,来进行展示。

()创建javaweb项目,并配置tomcat

1、创建web项目,然后添加tomcat(具体版本),并且配置jdk和jre和sdk的版本,这三个版本都是一样的。

JDK 就是Java Development Kit.简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。

SDK 是Software Development Kit 一般指软件开发包,可以包括函数库、编译程序等。
JRE 是Java Runtime Enviroment是指Java的运行环境,是面向Java程序的使用者,而不是开发者。

image-20230711004346000

2、运行并且访问

image-20230711004802248

image-20230711010210391

image-20230711004841993

index.jsp文件

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
    <title>JSP - Hello World</title>
</head>
<body>
<h1><%= "Hello World!" %>
</h1>
<br/>
<a href="hello-servlet">Hello Servlet</a>
</body>
</html>

HelloServlet文件

package com.example.study_javaweb;

import java.io.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;

@WebServlet(name = "helloServlet", value = "/hello-servlet")
public class HelloServlet extends HttpServlet {
    private String message;

    public void init() {
        message = "Hello World!";
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.setContentType("text/html");//设置请求以及响应的内容类型

        // Hello
        PrintWriter out = response.getWriter();
        out.println("<html><body>");
        out.println("<h1>" + message + "</h1>");
        out.println("</body></html>");
    }

    public void destroy() {
    }
}

web.xml文件

<?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">
</web-app>

二、认识Servlet

JavaWeb程序 --> 将一个请求路径( 网络地址 ) 变成一条sql语句,发送给数据库进行查询;

1、什么是Servlet?

什么是Servlet? JavaWeb的三大组件 ( Servlet Filter过滤器 Listener监听器 )
    小服务,小组件,
主要作用:
    接收用户发来的请求( 路径及数据 ),给用户响应对应内容( 页面 );

2、请求路径

一般来讲,请求路径指的是 网络访问路径 (不带盘符,基本格式为:协议://ip地址:端口号/路径 )
网络路径:
http://192.168.15.52:8080/web01/hello.html
http://220.181.38.149:80 --> 百度首页 www.baidu.com (域名商)
本机路径:带盘符的路径
D:\工作\apache\apache-tomcat-8.5.57

将一个本地路径,变成网络路径
需要使用到服务器:tomcat服务器服务 服务器机器

3、tomcat

tomcat的安装,百度搜索tomcat,去官网下载core中的zip格式,解压版
解压之后的tomcat分布:
bin:放置的都是可执行文件,包含启动执行文件startup.bat( 如果点击之后,出现闪退的情况,说明jdk的环境变量java_home没有配置好 )、
关闭执行文件shutdown.bat;
conf:放的都是tomcat的配置文件,tomcat的端口号、编码格式、服务配置、支持的文件配置;server.xml web.xml
lib:tomcat也是Java编写的,在执行的时候,同样需要Java jar包的支持,都存放在这;编写servlet时需要的jar包
logs:日志记录文件夹,在使用tomcat过程,出现问题,或者没有问题是,形成的日志文档,都在这个文件夹中;
temp:临时文件,可以删除,但每次执行时都会自动创建
webapps:tomcat实际执行过程中,所访问的文件地址,所有的页面文件都保存在这个文件夹中;ROOT表示没有项目名
work:在执行tomcat时,程序中如果有jsp文件,会在这个文件夹中转换成.java文件

4、Servlet的使用

jdk java开发工具包 --> ( jre java运行环境 --> ( JVM + java运行jar包,jdk自带jar包 ) + java开发工具 )
Servlet是Java中的接口,不属于jdk自带jar包,需要导入第三方的jar包( tomcat ) ;
1、先导入tomcat的jar包,到项目中;
2、创建一个AServlet,实现Servlet接口

将一个类变成Servlet的三种方式
1、实现Servlet接口,重写接口中的全部方法;
重写五个方法init(),service(),destroy(),getServletInfo(),getServletConfig()
注:生命周期方法{init(),service(),detroy()}会自动执行;
service()方法有一次请求就会执行一次。
2、继承GenericServlet抽象类,重写抽象方法;
注:GenericServlet类是一个抽象类,但是它有一个抽象方法为service(),继承GenericServlet类后,需要重写service()方法。
3、继承HttpServlet抽象类,根据需要进行重写;
注:HTTPServlet()类是一个抽象类,但没有抽象方法。我们可以根据自己的需求去重写doget()或dopost()方法。doget()或dopost()方法都是接收前端数据的方法,本质上都是请求方法,最表面的区别是doget()是参数跟在url地址,并直接显示参数的值,dopost()不显示具体参数的值。
HttpServlet 是一个抽象类,继承自 GenericServlet 类,提供了处理 HTTP 请求和响应的方法,并且扩展了服务的方法,比如 doGet()、doPost() 等。
doGet(),doPost(),service()都是处理请求的方法,区别如下

doGet():处理get请求
doPost():处理post请求
service():处理get/post方式请求。如果servlet中同时定义了这三种方法,那么servlet会调用service方法。

三、Servlet简单应用

Servlet是 javaweb的三大组件之一,接受请求,给出响应;

1、创建Servlet的方式:

3种创建Servlet的方式:

通过实现Servlet接口,重写全部方法;
通过继承GenericServlet抽象类,重写service()方法;
通过继承HttpServlet抽象类,重写自己需要的方法;(开发种常用)
一般情况下,Java程序,想要执行需要通过main方法,声明对象,使用对象进行调用方法; Servlet的使用

编写完成Servlet之后,需要将Servlet类与路径相互绑定;

2、Serlvet的生命周期

Serlvet的生命周期: Servlet对象从出生、使用、死亡; Servlet会自己创建对象,然后自己调用自己 的生命周期方法;

3个生命周期方法;

1、init(ServletConfig servletConfig) 初始化方法,看成servlet对象的出生; 当servlet对象一旦被创建时,就会马上执行init方法
2、service(ServletRquest request , ServletResponse response) 服务方法,是servlet的主要方法,每当路径被请求时,就会执行此方法;
3、destroy() 结束方法,当Servlet对象一被销毁,在销毁之前的时间执行此方法;

3、路径与servlet绑定的方式(配置servlet访问路径)

1>、使用web.xml配置文件进行绑定; 比较复杂

servlet * * cn. hp. Aservlet * *

servlet * * /a * *
1.1 使用web.xml配置文件绑定的访问过程

image-20230706101215952

2>、使用注解的方式:简单

(在Servlet类中设置后面这个注解)在类的名称上一行,@WebServlet(“/b”);

注解的话比较简单,只用写出注解,填写name和urlPatterns就好了,name是类名,urlPatterns是网页要提交的对应地址,但是我一般只写urlPatterns。

import javax.servlet.annotation.WebServlet;

@WebServlet(“/demo01”)
public class demo01 extends HttpServlet {}

image-20230706101551679

1.1、urlPattern配置拓展

Servlet类编写好后,要想被访问到,就需要配置其访问路径(urlPattern)

  • 一个Servlet,可以配置多个URLPattern

    image-20230706101729366

    package com.aDiao.servlet;

    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(urlPatterns = {“/demo04”,“/aDiao04”})
    public class ServletDemo04 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    System.out.println(“demo04 get…”);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    doGet(req, resp);
    }
    }

上附代码中"/demo04","/aDiao04"这两个地址都能访问到。(也就是通过网址访问)

  • urlPattern配置规则

    1.1、精确匹配

    image-20230706102421196

    package com.aDiao.servlet;

    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(“/user/demo05”)
    public class ServletDemo05 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    System.out.println(“demo05 get…”);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    doGet(req, resp);
    }
    }
    image-20230706102617812

1.2、目录匹配

image-20230706102701893

package com.aDiao.servlet;

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("/user/*")
public class ServletDemo06 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("demo06 get...");
    }
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    doGet(req, resp);
}
}

image-20230706102748495

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值