1、基本概念
1.1、前言
web开发:
- web:网页的意思
- 静态web
- html,css
- 提供给所有人看的数据始终不会发生变化
- 动态web
- 提供给所有人看的数据会发生变化 每个人在不同的事件,不同的地点看到的信息各不相同!
- 几乎所有的网站都是动态的
- 技术栈:Servlet/JSP,ASP,PHP等
在Java中,动态web资源开发的技术统称为JavaWeb;
1.2、web应用程序
web程序:可以提供浏览器访问的程序;
- a.html、b.html等多个web资源,这些web资源可以被外界访问,对外界提供服务;
- 你们能访问到的任何一个页面或者资源,都存在于这个世界的某一个角落的计算机上;
- URL
- 这些统一的web资源会被放在同一个文件夹下,web应用程序--->Tomcat:服务器
- 一个web应用由多部份组成(静态web,动态web)
- html,css,js
- jsp,servlet
- Java程序
- jar包
- 配置文件(Properties)
web应用程序编写完毕后,若想提供给外界访问:需要一个服务器来统一管理;
1.3、静态web
- *。htm,*。html这些都是网页的后缀,如果服务器上一直存在这些东西,我们就可以直接进行读取,通络
- 静态web存在的缺点
- web页面无法动态更新,所有用户看到的都是同一个页面
- 轮播图,点击特效:伪动态
- JavaScript[实际开发中,它用的最多]
- VBScript
- 它无法和数据库交互(数据无法持久化,用户无法交互)
- web页面无法动态更新,所有用户看到的都是同一个页面
1.4、动态web
页面会动态展示:“web的页面展示的效果因人而异”;
缺点:
假如服务器的动态web资源出现了错误,我们需要重新编写我们的后台程序,重新发布(停机维护)
优点:
- web页面可以动态更新,所有用户看到的都是同一个页面
- 可以与数据库交互(数据持久化:注册,商品信息,用户信息)
2、web服务器
2.1技术讲解
ASP:
- 微软:国内最早流行的就是ASP;
- 在HTML中嵌入了VB的脚本,ASP+COM;
- 在ASP开发中,基本一个页面都有几千行的业务代码,页面及其混乱
- 维护成本高!
- C#
- IIS
php:
- PHP开发速度很快,功能很强大,跨平台,代码很简单(70%,WP)
- 无法承载大访问量的情况(局限性)
JSP/Servlet:
B/S:浏览器和服务器
C/S:客户端和服务器
- sun公司主推的B/S架构
- 基于Java语言(所有的大公司,或者一些开源的组件,都是用Java写的)
- 承载三高(高并发,高可用,高性能)问题带来的影响;
- 语法像ASP
2.2、web服务器
服务器是一种被动的操作,用来处理用户的一些请求和给用户的一些响应信息;
IIS:
微软的;ASP...,windows中自带的
Tomcat:
面向百度编程;工作3-5年之后,开源尝试手写Tomcat服务器;
下载tomcat:
- 安装 or 解压
- 了解配置文件及目录结构
- 作用
3、Tomcat
3.1安装tomcat
略
3.2Tomcat启动和配置
文件夹作用
启动,关闭tomcat
bin目录下:startup.sh为启动 shutdown.bat为关闭
访问测试:http://localhost:8080/
可能遇到的问题:
Java环境变量没有配置
闪退问题:需要配置兼容性
乱码问题:配置文件中设置
3.3配置
可以配置启动的端口号
- tomcat的默认端口号为:8080
- mysql:3306
- http:80
- https:443
可以配置主机的名称
- 默认的主机名为:local->127.0.0.1
- 默认网站应用存放的位置为:webapps
3.4发布一个web网站
步骤
将自己写的网站,放到服务器(Tomcat)中指定的web应用的文件下(webapps)下,就可以访问了。
网站应该有的结构
4、Http
4.1、什么是HTTP
HTTP超文本传输协议(Hyper Text Transfer Protocol)是一个简单的请求-响应协议,它通常运行在TCP之上。
- 文本:html,字符串,.....
- 超文本:图片,音频,视频,定位,地图,....
- 80
Https:安全的
- 443
4.2、两个时代
- http1.0
- HTTP/1.0:客户端与web服务器连接后,只能获得一个web资源,断开连接
- http2.0
- HTTP/1.1:客户端与web服务器连接后,可以获得多个web资源
4.3、HTPP请求
客户端---发请求---服务器
1、请求行
- 请求行中的请求方式:GET
- 请求方式:Get,Post,HEAD,DELETE,PUT,TRACT....
- get:请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址显示数据内容,不安全,但高效
- post:请求能够携带的参数没有限制,大小没有限制,不会再浏览器的URL地址栏显示数据内容,安全,但不高效
2、消息头
- Accept:告诉浏览器,它所支持的数据类型
- Accept-Encoding:支持哪种编码格式 GBK,UTF-8,GB2312,ISO8859-1
- Accpet-Language:告诉浏览器,它的语言环境
- Cache-Control:缓存控制
- Connection:告诉浏览器,请求完成是断开还是保持链接
- HOST:主机...
4.4、HTTP响应
服务器---响应----客户端
1、响应体
- Accept:告诉浏览器,它所支持的数据类型
- Accept-Encoding:支持哪种编码格式 GBK,UTF-8,GB2312,ISO8859-1
- Accpet-Language:告诉浏览器,它的语言环境
- Cache-Control:缓存控制
- Connection:告诉浏览器,请求完成是断开还是保持链接
- HOST:主机...
- Refrush:告诉客户端,多久刷新一次
- Location:让网页重新定位
2、响应状态码
200:请求响应成功
3xx:请求重定向
- 重定向:你重新到我给你的新位置去
4xx:找不到资源 404
- 资源不存在
5xx:服务器代码错误 500 502:网关错误
5、Maven
为什么要学习这个技术?
- 在javaweb开放中,需要使用大量的jar包,我们需要手动的导入
- 如何能够让一个东西自动帮我导入和配置这个jar包
由此Maven诞生了
5.1、Maven项目架构管理工具
我们目前用来就是方便导入jia包的!
Maven的核心思想:约定大于配置(有约束,不要去违反)
Maven会规定好你如何去编写我们的Java代码,必须要按照这个规范来
5.2、下载安装Maven
官网下载 ,下载完成后解压
5.3、配置环境变量
在我们的系统环境变量中
配置如下配置:
- M2_HOME maven目录下的bin目录
- MAVEN_HOME maven的目录
- 在系统的path中配置MAVEN_HOME
测试
5.4、阿里云镜像
镜像:mirrors
作用:加速我们的下载
国内建议使用阿里云的镜像
5.5、本地仓库
在本地的仓库,远程仓库;
建立一个本地仓库
6、Servlet
Serlvet接口Sun公司有两个默认的实现类:HttpServlet,GenericServlet
6.1、Servlet简介
- Servlet就是sun公司开发动态web的一门技术
- sun公司在这些API中提供了一个接口叫做:Servlet,如果你想开发一个Servlet程序,只需完成两个小步骤:
- 编写一个类,实现Servlet接口
- 把开发好的java类部署到webg服务器中
把实现了servlet接口的Java程序,叫做Servlet
6.2、HelloServlet
- 构建一个普通的maven项目,删掉里面的sec目录,以后我们的学习就在这个项目里面建立Moudel;这个空的工程就是Maven的主工程
- 关于Maven父子工程的理解:
- 父项目中会有
<modules> <module>servlet-01</module> </modules>
- 父项目中会有
- Maven环境优化
- 修改web.xml为最新的
- 将maven的结构搭建完整
- 编写一个Servlet程序
- 编写一个普通类
- 实现Servlet接口,这里我们直接继承HttpServlet
package com.yan.servlet; import javax.