一.web开发概述
1.服务器
解释1:服务器是一款软件,可以向其他发送请求,服务器会做出一个响应。可以在服务器中部署文件,让其他人访问。
解释2:也可以把运行服务器软件的计算机称为服务器
2.安装服务器
Tomcat官方站点:http://tomcat.apache.org
3.安装JDK
1)配置两个环境变量
(1)path中

(2)JAVA_HOME

2)解压安装tomcat
(1)在bin目录中双击 startup.bat 命令启动
出现异常情况:

原因:端口号被占用。
解决方法:
在cmd输入指令:netstat -ano |findstr "端口号"。根据端口号找到进程。
输入指令:taskkill /f /t /im "进程PID号"。终止进程。

(2)访问 IP:8080
(访问时startup.bat小窗口不能关闭,作为服务器)

4.更改端口号
在conf目录下,打开server.xml文件,将69行的8080端口号更改为8088.
二.web开发环境搭建
1.创建web后端项目
1)创建
2)准备工作
4)在webapp中创建一个html文件
(测试,后面删掉)
2.发布web后端项目到tomcat中
1)在idea中集成tomcat
修改代码后,会自动将项目重新部署到tomcat中

2)页面显示
同时在tomcat中webapps文件夹下显示出domeServer文件夹


三.Servlet概述
1.定义
Servlet是Server Applet的简称,意思为用Java编写的服务器端的程序. 它运行在web服务器中,web服务器负责Servlet和客户的通信以及调用 Servlet方法。
2.作用
1)接收用户发送的请求数据
2)调用其他的java程序来处理请求
3)根据处理结果,将结果响应给客户端
四.Servlet创建和使用
1.创建一个类
继承javax.servlet.http包下的HttpServlet


精减:

(service()可以不重写,只重写doGet()与doPost().具体解释看http请求部分)
2.在web.xml文件中配置Servlet

3.运行Servlet程序
通过浏览器访问http:localhost:8080/ 项目名/配置的url

五.Serlvet生命周期
1.创建
第一次访问Serlvet程序时,由服务器创建。
2.初始化
在构造方法执行完成后,调用init()执行一些初始化操作。
3.服务
每次请求调用service()
4.销毁
服务器关闭时,会销毁serlvet对象,同时会自动调用destroy(),执行一些最终操作。

六.http协议, http请求
1.http协议
1)超文本传输协议 (HyperText Transfer Protocol)
服务器传输超文本 到本地浏览器的传送协议,是互联网上应用最为流行的一种网络协议,用于定义客户端浏览器和服务器之间交换数据的过程。
2)HTTP是一个基于TCP/IP通信协议来传递数据.
3)HTTP是一个属于应用层的协议,由于其简捷、快速的方式,适用于分布 式超媒体信息系统.
2.http请求
客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器 发送了一个http请求。
**1)**从前端像后端发送的请求,都是http请求
**2)**http请求只能发送超文本内容
**3)**一次http请求中包含请求行,请求头,请求行,请求体三部分
**(1)请求行:**包含请求的方式,请求的资源地址等
**(2)请求头:**包含客户端的一些环境信息,这些信息都是由浏览器自动发送的,以键值形式传递
**(3)请求体:**以表单post方式向后端发送的数据,在请求体中包含
①get请求:
主要是从后端获取信息的,例如网页上的超链接,从后端传递少量信息,获得大量信息请求数据在请求地址中直接拼接,所以传递的的数据有限,并且敏感数据不安全
② post请求:
主要用于像后端发送大量数据,例如上传表单,图片等
请求数据在请求体中,可以传输大量数据,不会在地址中显示,所以相对安全
将重写的service()简化
由于前端请求有get和post两种,在后端的处理上略有不同,在父类的service方法中,会根据请求方法的不同,调用doget()或dopost()分别处理。
(使用post请求,如果传递的消息里有汉字会出现乱码)

3.处理get请求与post请求
(编码设置必不可少)
4.方法

七.http响应
一个http响应代表服务器向客户端回送的数据,它包括:响应行,响应头,响应体。
响应行里包含了http协议版本,以及用于描述服务器对请求的处理结果。
响应头用于描述服务器的基本信息,以及数据描述
响应体代表服务器向客户端浏览器回送的正文

状态码:服务器和浏览器用于确定状态的固定数字号码
200:请求成功
302:请求重定向
400:语义有误,当前请求无法被服务器理解或请求参数有误
404:请求资源不存在,通常是路径写错了或者服务器资源删除了
500:服务内部错误(代码异常)
八.过滤器
1.定义
过滤器是javaEE规范中定义的一种技术,可以让请求到达目标之前,先进到过滤器中,在过滤器中统一进行一些拦截处理,当处理完成后,可以继续向后执行,到达目标servlet,如果配置了多个过滤器中,也可以进入到下一个过滤器。
2.使用场景
1)统一编码过滤


2)权限验证
3)跨域过滤
3.与过滤器有关的API的三个接口
1)Filter
在init()中,可以获得通过filterConfig获得配置文件中的初始化参数
(图二16,17行)


2)FilterChain
3)FilterConfig
4.总结
过滤器用来实现通用的功能,减少代码冗余,提高可维护性
一个过滤器可以配置给多个资源使用
一个资源也可以配置多个过滤器,按照配置顺序调
九.前后端项目之间的交互
现在,在网页中通过超链接、表单就可以向后端发送请求,后端也可以正常响应内容。
1.同步请求
通过表单访问后端的请求方式称为同步请求。
同步请求:当网页与后端交互时,前端不能再进行其他操作,服务器端响应回来的内容会把整个浏览器中的内容覆盖掉。
(这种请求方式在前后端交互时不友好)
2.异步请求
现在的前后端交互请求都使用异步请求。
1)异步请求
同时可以做多件事情(前端与服务器交互时,不影响前端网页其他操作)
2)原理
使用js中提供的 XMLHttpRequest 对象实现发送异步请求和接收前端服务器响应。
3)异步请求时出现跨域访问问题
浏览器默认不允许js对象接受来自其他服务器响应的内容。
跨域问题是一个前端问题。可以在后端解决,也可以在前端解决。
4)跨域问题
跨域问题:不同服务之间进行访问。
请求的域名,协议,端口有一项不同就属于跨域访问
在添加的后端过滤器中响应时,告知前端本次响应是安全的,可以正常接收。
4.导入axious框架

5.后端像前端响应更多的数据
1)响应一个对象
(1)插入jar包

(2)通过jackson组件,将java对象转为json格式的字符串

(3)前段程序

(4)页面

2)相应多个数据
将数据包装到ArrayList数组中

6.从后端响应回标准数据格式
1)标准后端响应数据的模型类

2)将数据封装在result对象中
利用状态码反应不同状态

3)前端程序

4)页面
