01.web的基本概念、web服务器讲解
02.Tomcat详解
03.Http讲解
04.Maven
05.Servlet
06.Cookie、Session
07.JSP
08.JavaBean
09.MVC三层架构
10.Filter
11.监听器
12.过滤器、监听器常见应用
13.JDBC
01.web基本概念、web服务器讲解
web基本概念
1.1前言
web开发:
- web,网页的意思,www.baidu.com
- 静态web
- html,css
- 提供给所有人看的数据始终不会发生变化!
- 动态web
- 淘宝,几乎所有网站
- 提供给所有人看的数据会发生变化!
- 技术栈:Servlet/JSP,ASP,PHP
在Java中,动态web资源开发的技术统称为Javaweb
1.2web应用程序
**web应用程序:**可以提供浏览器访问的程序;
- a.html、b.html……多个web资源,这些web资源可以被外界访问,对外界提供服务;
- URL
- 这个统一的web资源会被放到同一个文件夹下,web应用程序 ->Tomcat:服务器
- 一个web应用由多部分组成(静态web,动态web)
- html,css,js
- jsp,servlet
- Java程序
- jar包
- 配置文件
web应用程序编写完毕后,若想提供给外界访问:需要一个服务器来统一管理;
1.3静态web
- .htm,.html这些都是网页的后缀,如果服务器上一直存在这些东西,我们就可以直接进行读取。通络;
- 静态web存在的缺点:
- Web页面无法动态更新,所有用户看到都是同一个页面
- 轮播图,点击特效:伪动态
- JavaScript[实际开发中,它用的最多]
- VBScript
- 它无法和数据库交互(数据无法持久化,用户无法交互)
- Web页面无法动态更新,所有用户看到都是同一个页面
1.4动态web
页面动态展示。
缺点:
- 加入服务器的动态web资源出现了错误,我们需要重新编写我们的后台程序,重新发布;
- 停机维护
优点:
- Web页面可以动态更新,所有用户看到都不是同一个页面
- 它可以与数据库交互(数据持久化)
web服务器
1.5技术讲解
ASP:
- 微软:国内最早流行的就是ASP;
- 在HTML中谈入了VB的脚本,ASP+COM;
- 在ASP开发中,基本一个页面就有几千行的业务代码,页面极其乱
- 维护成本高
- C#
- IIS
<hl>
<hl><hl>
<hl>
<hl>
<hl>
<%
system.out.println("hello");
%>
<hl>
<h1>
<hl><hl>
<hl>
php:
- PHP开发速度很快,功能很强大,跨平台,代码很简单
- 无法承载大访问量的情况(局限性)
JSP/Servlet:
B/S:浏览和服务器
C/S:客户端和服务器
- sun公司主推的B/S架构
- 基于Java语言的(所有的大公司,或者一些开源的组件,都是用Java写的)
- 可以承载三高问题带来的影响;
- 语法像ASP,ASP—>JSP,加强市场强度;
1.6web服务器
服务器是一种被动的操作,用来处理用户的一些请求和给用户一些响应消息;
IIS
微软的;ASP…,Windows中自带的
Tomcat
面向百度编程;
- Tomcat是Apache软件基金会(Apache Software Foundation)的jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和JSP规范总是能在Tomcat中得到体现,Tomcat5支持最新的Servlet2.4和JSP 2.0规范。因为Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。
- Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求,实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat时,它实际上作为一个与Apache 独立的进程单独运行的。
- 诀窍是,当配置正确时,Apache为HTML页面服务,而Tomcat 实际上运行JSP页面和Servlet.另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为9.0。
02.Tomcat详解
可以配置启动的端口号
- tomcat的默认端口号为:8080
- mysql:3306
- http:80
- https:443
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"/>
可以配置主机的名称
- 默认的主机名为:localhost->127.0.0.1
- 默认网站应用存放的位置为:webapps
<Host name="[www.qinjiang.com](http://ww.qinjiang.com/)" appBase="webapps"
unpackWARs="true" autoDeploy="true">
高难度面试题:
请你谈一谈网站是如何访问的
-
输入一个域名;回车
-
检查本机的C:\windows\System32\drivers\etc\hosts配置文件下有没有这个域名映射;
a. 有:直接返回对应的ip地址,这个地址中,有我们需要访问的web程序,可以直接访问127.0.0.1 [www.qinjiang.com](http://www.qinjiang.com/)
b. 没有:去DNS服务器找,找到的话就返回,找不到就返回找不到
-
可以配置一下环境变量(可选性)
03.Http讲解
3.1什么是HTTP
HTTP(超文本传输协议)是一个简单的请求-响应协议,它通常运行在TCP之上。
- 文本:html,字符串,~……
- 超文本:图片,音乐,视频,定位,地图……
- 80
- Https:安全的
- 443
3.2两个时代
- http1.0
- HTTP/1.0:客户端可以与web服务器连接后,只能获得一个web资源,断开连接
- http2.0
- HTTP/1.1:客户端可以与web服务器连接后,可以获得多个web资源
3.3Http请求
客户端 – 发请求(Request) – 服务器
百度:
Request URL:[https://www.baidu.com/](https://www.baidu.com/) 请求地址
Request Method:GET get方法/post方法
Status Code:200 oK 状态码:200
Remote(远程) Address:14.215.177.39:443
Accept:text/html
Accept-Encoding:gzip, deflate, br
Accept-Language:zh-CN,zh;q=0.9 语言
Cache-Control:max-age=0
Connection:keep-alive
1.请求行
- 请求行中的请求方式:GET
- 请求方式:Get,Post,HEAD,DELETE,PUT,TRACT…
get
:请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址栏显示数据内容,不安全,但高
效post
:请求能够携带的参数没有限制,大小没有限制,不会在浏览器的URL地址栏显示数据内容,安全,但不高效。
2.消息头
Accept:告诉浏览器,它所支持的数据类型
Accept-Encoding:支持部种询码格式 GBK UTF-8 GB2312 ISO8859-1
Accept-Language:告诉湖览器,它的语言环境
Cache-Control:缓存控制
Connection:告诉浏览器,请求完成是断开还是保持连续
HOST:主机..../.
3.4Http响应
- 服务器 — 响应—客户端
百度:
Cache-Control:private 缓存控制
Connection:Keep-Alive 连接
Content-Encoding:gzip
Content-Type:text/htm1
1.响应体
Accept:告诉测览器,它所支持的数据类型
Accept-Encoding:支持哪种编码格式 GBK UTF-8 GB2312 ISo8859-1
Accept-Language:告诉浏览器,它的语言环境
Cache-Control:缓存控制
Connection:告诉浏览器,请求完成是断开还是保持连接
HOST:主机../.
Refresh:告诉容户端,多久刷新一次
Location:址网页重新定位
2.响应状态码
200:请求响应成功 200
3**:请求重定向
- 重定向:你重新到我给你新位置去;
4**:找不到资源(资源不存在) 404
5**:服务器代码错误 500 502:网关错误
常见面试题:
当你的浏览器中地址栏输入地址并回车的一瞬间到页面能够展示回来,经历了什么?
04.Maven
- 在Javaweb开发中,需要使用大量的jar包,我们手动去导入;
- 如何能够让一个东西自动帮我导入和配置这个jar包。由此,Maven诞生了!
4.1Maven项目架构管理工具
我们目前用来就是方便导入jar包的!
Maven的核心思想:约定大于配置
- 有约束,不要去违反。
Maven会规定好你该如何去编写我们的Java代码,必须要按照这个规范来
4.2下载安装Maven
4.3配置环境变量
4.4阿里云镜像
- 镜像:mirrors
- 作用:加速我们的下载
- 国内建议使用阿里云的镜像
<mirror>
<id>alimaven</id>
<mirrorof>central</mirrorof>
<name>aliyun maven</name>
<url>[http://maven.aliyun.com/nexus/content/groups/public/](http://maven.aliyun.com/nexus/content/groups/public/)</url>
</mirror>
4.5本地仓库
在本地的仓库,远程仓库;
建立一个本地仓库:localRepository
<localRepository>D:\Environment\apache-maven-3.6.2\maven-repo</localRepository>
05.Servlet
5.1、Servlet简介
- Servlet就是sun公司开发动态web的一门技术
- Sun在这些API中提供一个接口叫做:Servlet,如果你想开发一个Servlet程序,只需要完成两个小步骤:
- 编写一个类,实现Servlet接口
- 把开发好的java部署到web服务器中
把实现了Servlet接口的java程序叫做,Servlet
5.2、HelloServlet
Servlet接口Sun公司有两个默认的实现类:HttpServlet
,GenericServlet
1.构建一个普通的Maven项目,删掉里面的src目录,以后我们的学习就在这个项目里面建立Moudel,这个空的工程就是Maven主工程;
2.关于Maven父子工程的理解:
父项目中会有
<modules>
<module>servlet-01</module>
</modules>
子项目中会有
<parent>
<artifactId>javaweb-02-servlet</artifactId>
<version>1.0-SNAPSHOT</veresin>
</parent>
父项目中的java子项目可以直接使用
son extends father
3.Maven环境优化
- 修改web.xml为最新的
- 将maven的结构搭建完整
4.编写一个Servlet程序
- 编写一个普通类
- 实现Servlet接口,这里我们直接继承
HttpServlet
public class HelloServlet extends HttpServlet{
//由于get或post只是请求实现的不同的方式,可以互相调用,业务逻辑都一样;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
//ServletOutputStream OutputStream=res.getOutputStream();
PrintWriter writer=resp.getWriter();//响应流
writer.print("Hello,Servlet");
}
@Override
protected void doPost(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{
doGet(req,resp);
}
}
5.编写Servlet的映射
为什么需要映射:我们写的是Java程序,但是要通过浏览器访问,而浏览器需要连接web服务器,所以我们需要在web服务器中注册我们写的Servlet,还需要给他一个浏览器能够访问的路径;
<!--注册Servlet-->
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.kuang.servlet.HelloServlet</servlet-class>
</servlet>
<!--Servlet的请求路径-->
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
6.配置Tomcat
注意:配置项目发布的路径就可以了
7.启动测试
5.3、Servlet原理
5.4、Mapping问题
- 一个Servlet可以指定一个映射路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
- 一个Servlet可以指定多个映射路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello2</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello3