#|Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)


文章目录

  • 一、WEB开发概述
    • 1.1、WEB资源介绍
    • 1.2、软件架构
    • 1.3、WEB通信模式 (B/S)
    • 1.4、URL请求路径
    • 1.5、WEB服务器软件
  • 二、TOMCAT
    • 2.1、概述
    • 2.2、Tomcat版本
    • 2.3、安装Tomcat
    • 2.4、Tomcat目录结构
    • 2.5、Tomcat启动和访问、关闭
      • 2.5.1、启动(双击)
      • 2.5.2、访问
      • 2.5.3、关闭
        • 2.5.3.1、 正常关闭
        • 2.5.3.2、 非正常关闭
    • 2.6、Tomcat常见问题
      • 2.6.1、JAVA_HOME的配置
      • 2.6.2、端口号冲突
    • 2.7、web项目目录结构
    • 2.8、eclipse & idea和tomcat整合
  • 三、 Maven(后面会详细介绍)
    • 3.1 什么是maven
    • 3.2 maven 的作用
    • 3.3 maven 的使用(配置)
      • 3.3.1 下载
  • 四、使用Servlet技术完成一个用户登录
    • 4.1、需求说明
    • 4.2、需求分析
    • 4.3、知识讲解-Servlet
      • 4.3.1、什么是Servlet
      • 4.3.2、Servlet的作用
      • 4.3.3、Servlet的入门
        • 4.3.3.1、准备工作
        • 4.3.3.2、编写步骤
        • 4.3.3.3、Servlet的执行的流程详解
      • 4.3.4、Request接收请求参数
        • 4.3.4.1、Request接收请求参数的概述
    • 4.4、登录流程分析
    • 4.5、案例原型准备及代码实现
  • 五、Servlet发展史和生命周期
    • 5.1 发展史
    • 5.2 url-pattern
  • 六、HTTP协议
    • 6.1、HTTP协议的概述:
      • 6.1.1、什么是HTTP协议
      • 6.1.2、HTTP协议的作用及特点
      • 6.1.3、HTTP协议的组成:
    • 6.2、HTTP协议入门
      • 6.2.1、HTTP请求的详解
      • 6.2.3、HTTP响应的详解
  • 七、XML
    • 7.1 什么是xml
    • 7.2 xml的作用
    • 7.3 如何书写xml
      • 7.3.1 文档声明

一、WEB开发概述 1.1、WEB资源介绍
WEB:网页 因特网开发/web开发/网站开发
Web资源:在浏览器上看到的任何资源(数据信息)都称作为web资源
作用:展示数据
分类:静态资源
源代码不变,展示效果不变(html/css/js 图片 视频)
动态资源
展示内容会根据数据的改变而改变(由程序来控制) servlet 、jsp
应用: 时间网页 微博热搜 天气网页
1.2、软件架构 目前市场上有两种流行的软件架构:
C/S架构:Client/Server 客户端/服务器。要求用户安装一个客户端程序。
常见应用:qq音乐、王者荣耀、网易云、消消乐、抖音、快手、头条
优点:
1.用户体验好,效果炫
2.对信息安全的控制较强
3.应用服务器运行数据负荷较轻,部分计算功能在客户端完成。
缺点:(客户端程序上)
1.占用硬盘空间
2.维护麻烦
3.安装使用依赖其他条件
B/S架构:Browser/Server 浏览器/服务器 。通过浏览器与服务器交互,不需要安装其他程序
常见应用:12306、淘宝、京东、去哪儿
优点:(没有客户端,直接使用浏览器即可)
1.维护和升级简单,无缝升级。
2.不用必须安装程序,操作系统内置了浏览器。大大减少了使用成本
缺点:(效果一般、体验一般、服务器压力极大)
1.动画效果受浏览器限制
2.对信息安全控制较差。例如:网银就需要使用U盾,在浏览器端加密。
3.应用服务器运行数据负荷较重。大部分计算都在服务器端,增加服务器压力。使用Ajax可以改善部分用户体验。
1.3、WEB通信模式 (B/S) #|Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)
文章图片

1、浏览器向服务器发送请求,去请求某些资源
2、服务器接收到请求之后,处理请求
3、寻找对应的资源,将对应资源响应给浏览器
4、浏览器拿到这些资源,负责解析,展示结果
请求和响应是成对出现的。 而且必须先有请求,再有响应 (类似与一问一答)
1.4、URL请求路径
URL (Uniform Resource Locator) ,统一资源定位符(器),是对互联网上资源位置的一种表示,互联网上的每个文件都有一个唯一的URL。
用于标识互联网上某个资源的具体位置,相当于内网路径中的绝对路径
完整格式如下:
协议://域名:端口号/资源位置?参数=值
协议,http、https、ftp等 【必须写】
域名,域名或IP地址,都可以访问WEB资源【必须写】
端口号,程序必须使用端口号,才可以让另一个计算机访问
资源位置,用于描述WEB资源再服务器上的位置。
参数=值,浏览器和服务器交互传递的数据
例如:
https://www.baidu.com/
1.5、WEB服务器软件
服务器:在电脑上安装一个服务器软件,你的电脑就是一台服务器。
J2EE 企业级开发Java规范。标准规范包括:servlet、jsp、jdbc、xml、jta、javamail等。在java中规范就是接口。J2EE又称为JavaEE。
WEB服务器对JavaEE规范部分或全部支持(实现),也就是WEB服务器实现部分或全部接口。
常见的WEB服务器:
1.Tomcat:Apache组织提供一个免费的小型的服务器软件。支持Servlet和JSP规范。
应用范围最广
2.WebLogic:Bea公司的一个收费的大型的服务器软件,后被Oracle收购。支持EE的所有的规范
运算能力较强、稳定性较高
3.WebSphere:IBM公司的一个收费的超大型的服务器软件,支持EE的所有的规范。
数据库使用DB2,机器使用IBM系列
银行、金融、证券
运算能力无人出其左右,
稳定性极强
4.JBoss:是一个基于J2EE的开放源代码的应用服务器。JBoss是一个管理EJB的容器和服务器,JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。(总体均一般)
二、TOMCAT 2.1、概述 #|Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)
文章图片

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
支持Servlet和JSP 规范,且最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现。
2.2、Tomcat版本
tomcat 目前存在很多版本,希望大家了解tomcat的版本,从而知道自己的创建的项目使用的是几版本规范,不同版本的规范技术可能不同。
官网地址
本站地址&本文所需资料下载
2.3、安装Tomcat
步骤一:.下载一个tomcat服务器软件
步骤二:解压下载好的zip文件.
将解压后的文件copy到一个没有中文和空格的路径下即可.(不要有中文路径和空格以及特殊符号)
2.4、Tomcat目录结构 #|Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)
文章图片

2.5、Tomcat启动和访问、关闭 2.5.1、启动(双击)
#|Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)
文章图片

2.5.2、访问
(访问http://localhost:8080/ 如果出现一只猫,代表启动成功)
#|Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)
文章图片

2.5.3、关闭
2.5.3.1、 正常关闭
双击
#|Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)
文章图片

2.5.3.2、 非正常关闭
Ctrl + c 进行关闭
点叉直接关闭
电脑关机(从任务管理器关闭)
2.6、Tomcat常见问题 2.6.1、JAVA_HOME的配置
问题:窗口一黑,一闪而过
解决:配置JAVA_HOME环境变量
2.6.2、端口号冲突
问题:端口号被占用
解决:
1.更换端口号
2.关闭已开启的服务器
2.7、web项目目录结构 在JavaEE规范中,WEB项目存在一定的目录结构,具体结构如下:
#|Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)
文章图片

一个项目只要有classes才可能有动态WEB资源
只要WEB项目符合规范,放置在webapps目录中,服务器就会将其顺利发布网络
WEB-INF 是一个保护目录 浏览器不能去访问它下边的资源
2.8、eclipse & idea和tomcat整合 在开发中,都是使用eclipse或idea和tomcat整合使用,方便开发测试。
eclipse & idea和tomcat整合
三、 Maven(后面会详细介绍) 3.1 什么是maven #|Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)
文章图片

Maven 是 Apache 软件基金会组织维护的一款自动化构建工具,专注服务于 Java 平 台的项目构建和依赖管理。Maven 这个单词的本意是:专家,内行。读音是 ['me v( )n] 或 ['mevn]。
3.2 maven 的作用
可以对项目需要的jar包进行引入,并且进行统一化的管理;可以解决jar包之间的依赖;可以进行模块化的开发
3.3 maven 的使用(配置) 3.3.1 下载
官网
本地
1.环境变量配置:
变量名:M2_HOME 变量值:maven解压的文件的bin目录; 变量名添加到path;
2.修改jar包存放的路径:settting.xml: D:\ssm\maven\apache-maven-3.6.0\repository
#|Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)
文章图片

#|Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)
文章图片

全部确定,然后打开黑窗口,输入cmd——>mvn -v
出现如下证明安装成功
#|Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)
文章图片

四、使用Servlet技术完成一个用户登录 4.1、需求说明
若用户名和密码正确,判定为登录成功,则控制台输出登录成功;
若用户名或密码错误,判定为登录失败,则控制台输出登录失败。
4.2、需求分析 4.3、知识讲解-Servlet 4.3.1、什么是Servlet
#|Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)
文章图片

Servlet就是运行到服务器端的小程序
可以使用浏览器进行访问获取数据
入口:
用来接收浏览器的数据
Servlet它是JavaWeb三大组件之一(Filter 、 Listener)
4.3.2、Servlet的作用
#|Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)
文章图片

作用:
相当于程序的入口
1、搜集页面提交过来的数据
2、然后进行一系列的逻辑处理
3、将结果响应给页面进行展示
4.3.3、Servlet的入门
4.3.3.1、准备工作
Servlet规范要求:Servlet程序需要编写实现类,并在web.xml进行配置。
实现类:通常继承javax.servlet.http.HttpServlet类,并复写doGet和doPost方法。
doGet()方法用于处理get请求。
doPost()方法用于处理post请求。
4.3.3.2、编写步骤
1、先创建一个类,让这个类继承HttpServlet
2、重写doGet和doPost方法
3、配置web.xml中的路径
注意:以上这三步缺一不可。
1、如果servlet没有继承HttpServlet,会报错
2、如果没有重写doGet和doPost方法
3、如果不配置web.xml中的路径
eclipse &idea中创建web项目
4.3.3.3、Servlet的执行的流程详解 问题:为什么访问该路径http://localhost:8080/servlet可以执行到Demo3 Servlet doGet方法?
#|Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)
文章图片

3.0版本的servlet如何创建
(1)
#|Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)
文章图片

(2)无需配置web.xml,只需在上面添加注解@WebServlet("/servlet") 即可
#|Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)
文章图片

4.3.4、Request接收请求参数
4.3.4.1、Request接收请求参数的概述 请求参数:
Request对象的方法
方法名 描述
String getParameter(String name) 获得指定参数名对应的值。如果参数列表没有该参数, 返回值是null如果参数列表有同名的参数,返回值是第一次出现的参数值
4.4、登录流程分析 #|Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)
文章图片

4.5、案例原型准备及代码实现 #|Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)
文章图片

(1)sql准备:
CREATE DATABASES login; use login; CREATE TABLE USER( uid VARCHAR(32) PRIMARY KEY, username VARCHAR(100), PASSWORD VARCHAR(100) ); INSERT INTO USER VALUES ('001','Daniel','123'),('002','Jenny','123');

(2) 案例结构
所需资料下载
#|Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)
文章图片

(3)源代码
User 代码:
package com.zql.pojo; import java.io.Serializable; public class User implements Serializable{ private String uid; private String username; private String password; public User() { super(); // TODO Auto-generated constructor stub } public User(String uid, String username, String password) { super(); this.uid = uid; this.username = username; this.password = password; } public String getUid() { return uid; } public void setUid(String uid) { this.uid = uid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User [uid=" + uid + ", username=" + username + ", password=" + password + "]"; } }

Userservlet代码:
package com.zql.servlet; import java.io.IOException; 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 com.zql.pojo.User; import com.zql.service.UserService; @WebServlet("/login") public class UserServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { String username = request.getParameter("username"); String password = request.getParameter("password"); System.out.println(username+"--------------"+password); UserService service = new UserService(); User user = service.login(username,password); if(user != null) { System.out.println(username+"22--------------"+password); System.out.println("登录成功"); System.out.println(username+"33--------------"+password); }else {System.out.println("登录失败"); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response); }}

UserService代码:
package com.zql.service; import com.zql.dao.UserDao; import com.zql.pojo.User; public class UserService { public User login(String username, String password) throws Exception {UserDao dao = new UserDao(); User user = dao.login(username,password); return user; }}

UserDao 代码:
package com.zql.dao; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.BeanHandler; import com.zql.pojo.User; import com.zql.utils.C3P0Utils; public class UserDao { public User login(String username, String password) throws Exception {QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource()); String sql = "select * from user where username=? and password=?"; Object [] param = {username,password}; User user = qr.query(sql, new BeanHandler<>(User.class),param); return user; } }

(4) 登录成功失败显示(后台)
#|Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)
文章图片

五、Servlet发展史和生命周期 5.1 发展史
Servlet也是由复杂难用、功能单一,逐步发展到目前的操作简单,功能强大的。
Servlet的发展史,完全就是一部人类由猿人的进化史。
#|Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)
文章图片

体系结构:
#|Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)
文章图片

生命周期:
创建(出生):第一次请求servlet时被创建
工作:每次请求该servlet时都会被创建一次
销毁(死亡):服务器正常关闭时

5.2 url-pattern
问题: 一个servlet是否可以配置多个访问路径? 可以
#|Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)
文章图片

匹配方式(2.5版本)
#|Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)
文章图片

3.0版本 如何配置多个访问路径?
#|Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)
文章图片

六、HTTP协议 #|Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)
文章图片

6.1、HTTP协议的概述: 6.1.1、什么是HTTP协议
HTTP协议: 超文本传输协议 它是互联网运用最广泛的一种网络协议
HTTP协议: 专门用来进行超文本信息传输, 规定 和 规范 浏览器与服务器之间的数据传输格式
协议: 规范 规定 规则
6.1.2、HTTP协议的作用及特点
作用: 似的浏览器与服务器之间 请求-响应之间传递的 超文本数据信息 更加快捷 高效
特点:
1.简单快捷
2.灵活
3.无连接
4.无状态
6.1.3、HTTP协议的组成:
协议组成两种: 请求协议和响应协议
6.2、HTTP协议入门
请求协议: 请求行 请求头 请求体
请求行:
DemoServlet1
package com.zql; 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("/servlet") public class DemoServlet1 extends HttpServlet {@Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println(111); }@Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { super.doPost(req, resp); } }

Login:
Title
用户名:
密码:
用户名:
密码:

浏览器开发者模式查看(F12)
Get请求
#|Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)
文章图片

Post请求
#|Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)
文章图片

Get请求和Post请求的区别:
1.get请求数据在请求行上,Post请求在请求体中
#|Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)
文章图片

2.Get请求安全性较低, Post请求安全较高
3.Get请求提交数据有限制(不能超过4KB), Post请求数据量无限制
6.2.1、HTTP请求的详解
【#|Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)】请求头:由键值对组成
#|Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)
文章图片

6.2.3、HTTP响应的详解
HTTP/1.1
状态码:
200: 响应成功
404: 路径找不到(检查路径)
500: 服务器内部代码出现异常(通过debug断点测试)
304: 缓存 (清除浏览器缓存)
302: 重定向 (后边讲)
405: 方法找不到
服务器缓存:(需要进行clean服务中缓存,然后进行重新发布)
响应体,传递的是请求需要查看的资源数据,数据量无限
响应体,就是服务器发送给浏览器的资源数据。
如果访问的是一个html页面,那么响应回来的就是一个页面
七、XML 7.1 什么是xml
HTML : 超文本标记语言 预定义好的标签
XML: 可扩展标记语言 可以随意定义 <哈哈>
7.2 xml的作用
  1. 传输数据 (json格式)
  2. 存储数据 (有数据库存储数据)
  3. 作为配置文件(重点) (以注解为主, 2.5版本配置 已配置为辅)
7.3 如何书写xml
Xml 文件数据分为5个组成元素构成 分别是文档声明 元素element 属性 注释 CDATA区域
7.3.1 文档声明
1.它是以结尾.
2.是放在文件的开头部分
3.两个属性:
(1)Version 代表 版本
(2)Encoding 编码格式

    推荐阅读