1. 基本概念
1.1 前言
1.2 Web应用程序
1.3 静态Web
1.4 动态Web
缺点:
- 假如服务器的动态Web资源出现了错误,我们需要重新编写我们的后台程序,重新发布
优点:
- Web页面可以动态更新,所有用户看到的都不一定是同一个页面
- 他可以与数据库交互(数据持久化: 注册,商品信息,用户信息…)
2. Web服务器
2.1 技术讲解
三高问题: 高并发,高可用,高性能
2.2 Web服务器
服务器是一种被动的操作,用来处理用户的一些请求和给用户一些响应信息.
3. Tomcat
3.1 安装Tomcat
3.2 Tomcat启动和配置
可能遇到的问题:
- Java环境变量没有配置
- 闪退问题: 需要配置兼容性
- 乱码问题: 配置文件中设置
3.3 配置
面试题:
3.4 发布一个Web网站
4. HTTP
4.1 什么是HTTP
4.2 两个时代
4.3 Http请求
1. 请求行
2. 消息头
4.4 Http响应
1. 响应体
2. 响应状态码(重点)
常见面试题:
? 当你的浏览器中地址栏输入地址并回车的一瞬间到页面能够展示回来,经历了什么?
5. Maven
5.1 Maven项目架构管理工具
5.2 下载Maven
官网:https://maven.apache.org/
这里我下的是3.8.1的版本!
注意!!!:
- IDEA 2021 兼容maven 3.8.1及之前的所用版本
- IDEA 2020 兼容Maven 3.6.3及之前所有版本
- IDEA 2018 兼容Maven3.6.1及之前所有版本
5.3 配置环境变量
测试Maven是否安装成功, 保证必须配置完毕!
5.4 阿里云镜像
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
5.5 本地仓库
建立一个本地仓库: localRepository
<localRepository>D:\myMaven\apache-maven-3.8.1\maven-repo</localRepository>
5.6 在IDEA中使用Maven
- 启动IDEA
- 创建一个MavenWeb项目
- 等待项目初始化完毕
-
观察maven仓库中多了什么 -
在IDEA中配置Maven 注意:IDEA项目创建成功后,看一眼Maven的配置 -
到这里,Maven在IDEA中的配置和使用就OK了!
5.7 创建一个普通的Maven项目
这个只有在Web应用下才会有!
5.8 在IDEA中标记文件夹功能
5.9 在IDEA中配置Tomcat
解决警告问题:
**必须要的配置:**为什么会有这个问题:我们访问-一个网站,需要指定一个文件夹名字;
5.10 pom文件
pom.xml 是Maven的核心配置文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xz.study</groupId>
<artifactId>javaweb-01-maven</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>javaweb-01-maven Maven Webapp</name>
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>javaweb-01-maven</finalName>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
maven由于他的约定大于配置, 我们之后可能遇到我们写的配置文件, 无法被导出或者生效的问题, 解决方案:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>**/*.properties</exclude>
<exclude>**/*.xml</exclude>
</excludes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
6. Servlet
6.1 Servlet简介
6.2 Hello Servlet
Servlet接口Sun公司有两个默认的实现类: HttpServlet, GenericServlet
-
构建一 个普通的Maven项目,删掉里面的src目录,以后我们的学习就在这个项目里面建立Moduel; 这个空的工程就是Maven主工程; -
关于Maven父子工程的理解: 父项目中会有 <modules>
<module>servlet-01</module>
</modules>
子项目中会有(如果没有需要手动添加) <parent>
<artifactId>javaweb-02-servlet</artifactId>
<groupId>com.xz</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
父项目中的jar包子项目可以直接使用 -
Maven环境优化
- 修改web.xml为最新的
- 将maven的结构搭建完整
-
编写一个Servlet程序
- 编写一个普通类
- 实现一个Servlet接口,这里我们继承HttpServlet
package com.xz.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter writer = resp.getWriter();
writer.println("Hello,Servlet!");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
-
编写Servlet映射 为什么需要映射:我们写的是AVA程序,但是要通过浏览器访问,而浏览器需要连接web服务器,所以我们需 要在web服务中注册我们写的Servlet,还需给他一个浏览器能够访问的路径;
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.xz.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
-
配置Tomcat 注意:配置项目发布的路径就可以了 -
启动测试
6.3 Servlet原理
Servlet是由Web服务器调用,Web服务器在收到浏览器请求之后,会:
6.4 Mapping问题
6.5 ServletContext
两种方式:
访问测试即可;
6.6 HTTPServletResponse
响应的状态码:
int SC_CONTINUE = 100;
int SC_SWITCHING_PROTOCOLS = 101;
int SC_OK = 200;
int SC_CREATED = 201;
int SC_ACCEPTED = 202;
int SC_NON_AUTHORITATIVE_INFORMATION = 203;
int SC_NO_CONTENT = 204;
int SC_RESET_CONTENT = 205;
int SC_PARTIAL_CONTENT = 206;
int SC_MULTIPLE_CHOICES = 300;
int SC_MOVED_PERMANENTLY = 301;
int SC_MOVED_TEMPORARILY = 302;
int SC_FOUND = 302;
int SC_SEE_OTHER = 303;
int SC_NOT_MODIFIED = 304;
int SC_USE_PROXY = 305;
int SC_TEMPORARY_REDIRECT = 307;
int SC_BAD_REQUEST = 400;
int SC_UNAUTHORIZED = 401;
int SC_PAYMENT_REQUIRED = 402;
int SC_FORBIDDEN = 403;
int SC_NOT_FOUND = 404;
int SC_METHOD_NOT_ALLOWED = 405;
int SC_NOT_ACCEPTABLE = 406;
int SC_PROXY_AUTHENTICATION_REQUIRED = 407;
int SC_REQUEST_TIMEOUT = 408;
int SC_CONFLICT = 409;
int SC_GONE = 410;
int SC_LENGTH_REQUIRED = 411;
int SC_PRECONDITION_FAILED = 412;
int SC_REQUEST_ENTITY_TOO_LARGE = 413;
int SC_REQUEST_URI_TOO_LONG = 414;
int SC_UNSUPPORTED_MEDIA_TYPE = 415;
int SC_REQUESTED_RANGE_NOT_SATISFIABLE = 416;
int SC_EXPECTATION_FAILED = 417;
int SC_INTERNAL_SERVER_ERROR = 500;
int SC_NOT_IMPLEMENTED = 501;
int SC_BAD_GATEWAY = 502;
int SC_SERVICE_UNAVAILABLE = 503;
int SC_GATEWAY_TIMEOUT = 504;
int SC_HTTP_VERSION_NOT_SUPPORTED = 505;
3.验证码功能
6.7 HTTPServletRequest
HttpServletRequest代表客户端的请求,用户通过Http协议访问服务器,HTTP请求中的所有信息会被封装到HttpServletRequest,通过这个HttpServletRequest的方法,获得客户端的所有信息;
7. Cookie, Session
7.1 会话
会话: 用户打开一个浏览器,点击了很多超链接,访问多个web资源,关闭浏览器,这个过程可以称之为会话;
**有状态会话:**一个同学来过教室,下次再来教室,我们会知道这个同学,曾经来过,称之为有状态会话;
7.2 保存会话的两种技术
cookie
session
- 服务器技术,利用这个技术,可以保存用户的会话信息.我们可以把信息或者数据放在Session中!
**常见应用: **网站登录之后,你下次不用再登录了,第二次访问直接就上去了!
7.3 Cookie
7.4 Session(重点)
Session和cookie的区别: .
- Cookie是把用户的数据写给用户的浏览器,浏览器保存(可以保存多个)
- Session把用户的数据写到用户独占Session中,服务器端保存(保存 重要的信息,减少服务器资源的浪费)
- Session对象由服务创建;
使用场景:
- 保存一个登录用户的信息;
- 购物车信息;
- 在整个网站中经常会使用的数据,我们将它保存在Session中
8. JSP
8.1 什么是JSP
Java Server Page : Java服务器端页面, 也和Server一样, 用于动态Web技术!
8.2 JSP原理
8.3 JSP基础语法
任何语言都有自己的语法,JAVA中有。 JSP 作为java技术的一种应用,它拥有一些自己扩充的语法(了解,知道即可! ) Java所有语法都支持!
8.4 JSP指令
8.5 九大内置对象
8.6 JSP标签, JSTL标签, EL表达式
9. JavaBean
10. MVC三层架构
什么是MVC: Model view Controller 模型、视图、控制器
10.1 早期
10.2 MVC三层架构
11. Filter(重点)
Filter开发步骤:
-
导包 -
编写过滤器
-
导包不要错 -
实现Filter接口,重写对应的方法即可 -
在web.xml中配置 Filter
12. 监听器
实现一个监听器的接口
-
编写一个监听器 实现监听器的接口 -
web.xml中注册监听器 -
看情况是否使用
13. 过滤器,监听器常见应用
监听器: GUI编程中经常使用
14. JDBC
- JDBC详细介绍请看:https://blog.csdn.net/WXxz0/article/details/123343981
JDBC(Java Database Connection): Java连接数据库!
需要jar包的支持
-
导入数据库依赖 -
IDEA中连接数据库 -
JDBC固定步骤(重点!)
- 加载驱动
- 连接数据库,代表数据库
- 向数据库发送SQL的对象Statement: CRUD
- 编写SQL(根据业务编写不同的SQL语句)
- 执行SQL
- 关闭连接
|