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

一、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)

在这里插入图片描述

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、概述

在这里插入图片描述

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
支持Servlet和JSP 规范,且最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现。

2.2、Tomcat版本

tomcat 目前存在很多版本,希望大家了解tomcat的版本,从而知道自己的创建的项目使用的是几版本规范,不同版本的规范技术可能不同。

官网地址
本站地址&本文所需资料下载

2.3、安装Tomcat

步骤一:.下载一个tomcat服务器软件
步骤二:解压下载好的zip文件.
将解压后的文件copy到一个没有中文和空格的路径下即可.(不要有中文路径和空格以及特殊符号)

2.4、Tomcat目录结构

在这里插入图片描述

2.5、Tomcat启动和访问、关闭

2.5.1、启动(双击)

在这里插入图片描述

2.5.2、访问

(访问http://localhost:8080/ 如果出现一只猫,代表启动成功)

在这里插入图片描述

2.5.3、关闭

2.5.3.1、 正常关闭

双击

在这里插入图片描述

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项目存在一定的目录结构,具体结构如下:
在这里插入图片描述

一个项目只要有classes才可能有动态WEB资源
只要WEB项目符合规范,放置在webapps目录中,服务器就会将其顺利发布网络
WEB-INF 是一个保护目录 浏览器不能去访问它下边的资源

2.8、eclipse & idea和tomcat整合

在开发中,都是使用eclipse或idea和tomcat整合使用,方便开发测试。

eclipse & idea和tomcat整合

三、 Maven(后面会详细介绍)

3.1 什么是maven

在这里插入图片描述

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

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

全部确定,然后打开黑窗口,输入cmd——>mvn -v
出现如下证明安装成功

在这里插入图片描述

四、使用Servlet技术完成一个用户登录

4.1、需求说明

若用户名和密码正确,判定为登录成功,则控制台输出登录成功;
若用户名或密码错误,判定为登录失败,则控制台输出登录失败。

4.2、需求分析

4.3、知识讲解-Servlet

4.3.1、什么是Servlet

在这里插入图片描述

Servlet就是运行到服务器端的小程序
可以使用浏览器进行访问获取数据

入口:

用来接收浏览器的数据
Servlet它是JavaWeb三大组件之一(Filter 、 Listener)

4.3.2、Servlet的作用

在这里插入图片描述
作用:

相当于程序的入口

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方法?
在这里插入图片描述

3.0版本的servlet如何创建
(1)
在这里插入图片描述
(2)无需配置web.xml,只需在上面添加注解@WebServlet("/servlet") 即可

在这里插入图片描述

4.3.4、Request接收请求参数

4.3.4.1、Request接收请求参数的概述

请求参数:
Request对象的方法

方法名描述
String getParameter(String name)获得指定参数名对应的值。如果参数列表没有该参数, 返回值是null如果参数列表有同名的参数,返回值是第一次出现的参数值

4.4、登录流程分析

在这里插入图片描述

4.5、案例原型准备及代码实现

在这里插入图片描述
(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) 案例结构

所需资料下载

在这里插入图片描述

(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) 登录成功失败显示(后台)

在这里插入图片描述

五、Servlet发展史和生命周期

5.1 发展史

Servlet也是由复杂难用、功能单一,逐步发展到目前的操作简单,功能强大的。
Servlet的发展史,完全就是一部人类由猿人的进化史。

在这里插入图片描述

体系结构:
在这里插入图片描述

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

5.2 url-pattern

问题: 一个servlet是否可以配置多个访问路径? 可以

在这里插入图片描述
匹配方式(2.5版本)

在这里插入图片描述
3.0版本 如何配置多个访问路径?

在这里插入图片描述

六、HTTP协议

在这里插入图片描述

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:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<form action="/servlet" method="get">
        用户名:<input type="text" name="username"><br/>
    密码:<input type="password" name="password"><br/>
    <input type="submit" value="登录">
</form>
<hr/>

<form action="/servlet3/servlet" method="post">
    用户名:<input type="text" name="username"><br/>
    密码:<input type="password" name="password"><br/>
    <input type="submit" value="登录">
</form>

</body>
</html>

浏览器开发者模式查看(F12)

Get请求
在这里插入图片描述
Post请求
在这里插入图片描述
Get请求和Post请求的区别:

1.get请求数据在请求行上,Post请求在请求体中
在这里插入图片描述
2.Get请求安全性较低, Post请求安全较高
3.Get请求提交数据有限制(不能超过4KB), Post请求数据量无限制

6.2.1、HTTP请求的详解

请求头:由键值对组成
在这里插入图片描述

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 文档声明

<?xml version="1.0" encoding="UTF-8"?>

1.它是以<?xml 开头 , ?>结尾.
2.是放在文件的开头部分
3.两个属性:
(1)Version 代表 版本
(2)Encoding 编码格式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Daniel521-Spark

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

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

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

打赏作者

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

抵扣说明:

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

余额充值