JavaWeb学习笔记

这篇博客详细介绍了JavaWeb的基础知识,包括Web概念、Tomcat服务器的安装配置、Http协议、Maven的使用、IDEA创建项目、Servlet开发流程、Cookie与Session、JSP原理和语法,以及Filter和监听器的应用。通过实例解析各个技术点,适合初学者入门。
摘要由CSDN通过智能技术生成

JavaWeb

1、Web基本概念

1.1、静态web

  • html,css
  • 无法动态更新,数据始终不变
  • 缺点:无法动态更新、无法和数据库交互

在这里插入图片描述

1.2、动态web

  • Servlet/JSP,ASP,PHP

  • 动态更新,数据始终会发生变化

  • 可以和数据库交互(持久化)

  • 缺点:加载动态资源出错,需要重新编写后台程序,重新发布,停机维护

在这里插入图片描述

2、web服务器

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

  • ASP
    • 微软
    • 在HTML中嵌入了VB的脚本
    • 维护成本高
    • 常见:C#
  • jSP/Servlet:
    • B/S、C/S
    • 基于java语言
    • Tomcat 服务器是一个免费的开放源代码的Web应用服务器
  • PHP
    • 开发速度很快,功能很强大,跨平台
    • 无法承载大访问量的情况(局限性)

3、Tomcat

3.1、下载安装

  • 下载地址:http://tomcat.apache.org/
  • apache-tomcat-10.0.10-windows-x64.zip

3.2、目录说明

  • bin:启动、关闭的脚本文件
  • conf:配置
  • lib:依赖的jar包
  • logs:日志
  • webapps:存放网站(把网站放到该目录下就可以访问)

3.3、启动、关闭、配置

  • 启动:运行 bin/startup.bat

    • 启动后访问:http://localhost:8080/(默认是8080)
  • 停止:运行 bin/shutdown.bat

  • 服务器核心配置:conf/server.xml

    • 配置端口号
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    
    • 配置主机名称
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
    

3.4、配置环境变量

  • 新增CATALINA_BASE:tomcat目录

  • 新增CATALINA_HOME:tomcat目录

  • 系统ClassPath新增:%CATALINA_HOME%\lib\servlet-api.jar

  • 系统path新增

    • %CATALINA_HOME%\bin
    • %CATALINA_HOME%\lib
  • 检测tomcat是否安装配置成功命令:startup。若启动成功说明配置成功。

4、Http

4.1、简述

  • 概念(http):超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。
  • 概念(https):通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。
  • http发展史
    • http1.0:客户端可以与web服务器连接后,只能获得一个web资源,断开连接
    • http2.0:客户端可以与web服务器连接后,可以获得多个web资源

4.2、http请求

  • 请求行(请求方式)

    • get:可带参数比较少,大小有限制,参数拼接到url中不安全,但高效
    • post:可带参数没有限制,大小没有限制,url中不显示参数,安全,但不高效
    • HEAD,DELETE,PUT,TRACT.…(不常用)
  • 请求头

    Accept:支持的数据类型
    Accept-Encoding:支持的编码格式:GBK、UTF-8、GB2312、ISO8859-1
    Accept-Language:语言环境
    Content-Type:内容类型的标识
    Cache-Control:缓存控制
    Connection:请求完成是断开还是保持连接
    HOST:主机
    
  • 请求体

4.3、http响应

  • 响应头

    Accept:支持的数据类型
    Accept-Encoding:支持的编码格式:GBK、UTF-8、GB2312、ISO8859-1
    Accept-Language:语言环境
    Cache-Control:缓存控制
    Connection:请求完成是断开还是保持连接
    HOST:主机
    Refresh:多久刷新一次
    Location:让网页重新定位
    
  • 响应体

4.4、常见响应状态码

  • 1xx: 信息提示

  • 2xx:成功(200:请求响应成功)

  • 3xx:请求重定向

  • 4xx:找不到资源(404:资源不存在)

  • 5xx:服务器代码错误(502:网关错误)

5、Maven

5.1、作用

  • Maven是一款构建项目的工具,只需要告诉Maven需要哪些jar 包,它会帮助我们下载所有的jar包,极大提升开发效率。
  • 核心思想:约定大于配置

5.2、下载安装

  • 下载地址:https://maven.apache.org/
  • apache-maven-3.8.1-bin.zip

5.3、配置环境变量

  • 新增M2_HOME:maven目录\bin

  • 新增MAVEN_HOME:maven目录

  • 系统path新增:%MAVEN_HOME%\bin

  • 检测maven是否安装配置成功命令:mvn -version

5.4、setting.xml配置

  • 路径:conf/setting.xml

  • 配置镜像(加速下载jar包的速度)

<!-- 阿里云镜像 -->
<mirror>
    <id>nexus-aliyun</id>  
    <mirrorOf>*,!jeecg,!jeecg-snapshots</mirrorOf>  
    <name>Nexus aliyun</name>  
    <url>http://maven.aliyun.com/nexus/content/groups/public</url> 
</mirror>
  • 配置本地仓库(下载的jar默认是在C盘,配置本地仓库来保存)
<!-- 本地仓库 -->
<localRepository>D:\AboutWork\SW\java\apache-maven-3.8.1\maven-repo</localRepository>

5.5、资源导出失败问题

在pom.xml中加入以下内容

<!-- 在build中配置resources,避免出现资源导出失败的问题 -->
<resources>
  <resource>
    <directory>src/main/resources</directory>
    <includes>
      <include>**/*.properties</include>
      <include>**/*.xml</include>
    </includes>
  </resource>
  <resource>
    <directory>src/main/java</directory>
    <includes>
      <include>**/*.properties</include>
      <include>**/*.xml</include>
    </includes>
  </resource>

6、IDEA创建和配置项目

6.1、创建maven项目

  • 创建maven项目(使用模板)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 若是构建成功后,本地仓库中没有新增jar包,则需要在idea中手动配置一下相关路径

在这里插入图片描述

  • 在src\main下新建两个文件夹,java、resource
    • java:Mark Dictionary as —> Source Root
    • resource:Mark Dictionary as —> Resource Root

6.2、配置tomcat

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 警告处理

在这里插入图片描述

6.2、pom.xml

  • properties:配置
  • dependencies:项目依赖
  • build:项目构建用的

7、Servlet

7.1、简介

  • Servlet是一门动态web技术
  • 实现了Servlet接口的Java程序叫做Servlet

7.2、Servlet的开发流程

7.2.1、构建项目准备
  • 创建一个普通的maven项目(不带模板),删除src文件夹

  • pom.xml添加servlet依赖

    • 搜索依赖地址:https://mvnrepository.com/
    • 若是低于tomcat10,jakarta换成javax
    <!-- https://mvnrepository.com/artifact/jakarta.servlet/jakarta.servlet-api -->
            <dependency>
                <groupId>jakarta.servlet</groupId>
                <artifactId>jakarta.servlet-api</artifactId>
                <version>5.0.0</version>
                <scope>provided</scope>
            </dependency>
            <!-- https://mvnrepository.com/artifact/jakarta.servlet.jsp/jakarta.servlet.jsp-api -->
            <dependency>
                <groupId>jakarta.servlet.jsp</groupId>
                <artifactId>jakarta.servlet.jsp-api</artifactId>
                <version>3.0.0</version>
                <scope>provided</scope>
            </dependency>
    
  • 新建module(此时选择maven的webapp模板),项目工程为主工程,module为子工程。

  • 将新建的module底下的web.xml换成最新的(可以到tomcat安装目录\conf\web.xml复制)

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
                          https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
             version="5.0">
    </web-app>
    
  • 将maven环境搭建完整。在src\main下新建两个文件夹,java、resource

    • java:Mark Dictionary as —> Source Root
    • resource:Mark Dictionary as —> Resource Root
7.2.2、编写Servlet程序
  • 编写一个java类,继承HttpServlet类
  • 重写HttpServlet类的doGet方法和doPost方法
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

//继承HttpServlet
public class HelloServlet extends HttpServlet {
   

    //重写doGet方法
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        //设置响应的类型和字符集
        resp.setContentType("text/html;charset=utf-8");
        //响应流
        PrintWriter writer = resp.getWriter();
        writer.print("<h1>Hello 第1个Servlet </h1>");
    }

    //重写doPost方法
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        super.doPost(req, resp);
    }
}
7.2.3、编写Servlet的映射

作用:编写的是JAVA程序,但是要通过浏览器访问,而浏览器需要连接web服务器,所以需要再web服务中注册我们写的Servlet,还需给他一个浏览器能够访问的路径

  • web.xml新增以下内容

    <!--注册Servlet-->
    <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>com.leijiao.test.HelloServlet</servlet-class>
    </servlet>
    <!--Servlet的请求路径-->
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
    

最后配置tomcat,执行即可!

7.3、servlet的工作原理

在这里插入图片描述

7.4、mapping映射路径

  • 指定一个映射路径

    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
    
  • 指定多个映射路径

    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello1</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello2</url-pattern>
    </servlet-mapping>
    
  • 指定通用映射路径

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

aoliaoliaoo

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

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

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

打赏作者

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

抵扣说明:

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

余额充值