引入
web前端
html,css,javascript,vue.js,ElementUI
ajax 网络请求 http请求
前端作用:
1.让用户输入数据
2.显示数据
javaee企业版
servlet serve + applet 服务器程序
接受请求中的数据
处理数据(通过数据库)
响应到前端
javase
贯穿java
数据库
增删改查
WEB和GUI
web程序:网页()+服务器 B/S架构 browser + server (不用装客户端,只要有浏览器就行)
GUI : 客户端+服务器 C/S架构 client + server (需要下载客户端)
流程
前端发请求
后端接受
后端处理响应
前端显示
一、搭建服务器端
引入
之前,java程序都是在本地运行的
从javaee开始,后端程序都在服务器上运行
这就需要搭建一个web服务器,将java程序部署在服务器上,通过网络远程访问数据
服务器:
广义:硬件+软件
狭义:程序(软件),里面部署资料(网页,java)外界可以访问服务器中的文件,访问后就可以向访问者响应
就是驻留于因特网上的某种计算机程序,是连接用户和程序的中间键
Ep:搭建一个服务器
1.下载解压
2.配置环境变量(可以自动根据JAVA_HOME自动找到jdk)
3.打开服务器Tomcat\bin\startup.bat启动这个服务器
4.访问,可以通过本机http://127.0.0.1:8080访问也可以通过局域网分配的IP地址(http://192.168.31.178:8080)访问
Ep:创建一个WEB后端项目
1.打开idea
2.创建一个java项目
开发期间把tomcat部署集成到idea中
开发的代码会自动更新部署到tomcat中
二、Servlet概述
Servlet是Server Applet的简称,Java编写的服务器端的程序.
servlet运行在web服务器中,web服务器负责Servlet和客户的通信以及调用Servlet方法
作用:
请求:接收用户发送的请求数据
处理:调用其他的java程序来处理请求
响应:根据处理结果,将结果响应给客户端
Ep:创建Servlet
创建一个类继承javax.servlet.http包下的HttpServlet
在web.xml文件中配置Servlet
运行Servlet程序
通过浏览器访问http:localhost:8080/ 项目名/配置的url
三、Serlvet生命周期
实例化:构造方法:只被调用一次,只有第一次访问Servelt时或服务器启动时创建Servlet实例。
初始化:init方法,只被调用一次
服务:service方法,多次调用
消亡:destroy:调用一次,服务器关闭时调用,执行一些操作
四、http协议, http请求
http协议
超文本传输协议 (HyperText Transfer Protocol),应用层的协议,用于定义客户端浏览器和服务器之间交换数据的过程
http请求
概述:
客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个http请求
当一次http请求发送到服务器时,tomcat会将请求的所有数据封装到一个类当中,而这个类实现了HttpServletRequest接口
构成:
请求行:包含http请求方式,请求资源名称,http版本 ,请求的地址,请求的状态
请求头:包含主机地址,服务器信息,以及客户端的一些环境信息,以键值对的形式向后端传递,键是固定的.
请求体 :代表着浏览器在post请求方式中传递给服务器的参数,请求体中参数以键值形式传递
获取方式
GET方式:
超链接访问,默认是GET方式
form提交,不指定method,默认为GET方式
POST方式:
form提交,指定method=“POST”
Get方式与Post方式的区别:
1.Get方式主要是从服务器获取信息,也可以向服务器发送数据的后端地址?键=值&键=值;不会乱码
post主要是想服务器提交信息,向后端发送请求,请求的数据放在请求体中,不在地址中显示;中文可能会乱码,故需要在启动服务器时设置编码格式.
2.Get方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据放置在请求体中提交,安全
3.GET方式提交少量数据,POST提交大量数据
getParameter(name) — String 通过name获得值
getParameterValues — String[ ] 通过name获得多值
post
setCharacterEncoding(编码格式)【text/html;charset=UTF-8】
//处理中文乱码
//请求中的其他数据
System.out.println(req.getMethod());//请求方式
System.out.println(req.getRequestURL());//网路地址
System.out.println(req.getScheme());//网络协议
System.out.println(req.getServerName());//服务器的名字(ip/域名)
System.out.println(req.getServerPort());//服务器端口
System.out.println(req.getProtocol());//请求协议
System.out.println(req.getRemoteAddr());//客户端ip/域名
System.out.println(req.getRemotePort());//客户端端口
//接受请求头数据
System.out.println("接受请求头数据");
System.out.println(req.getHeader("Connection"));
五、http响应
概述
http响应代表服务器向客户端回送的数据
服务器收到http请求时,会针对每一次请求,会创建一个代表响应的HttpServletResponse对象,使用getWriter获得PrintWriter输出流输出数据.
response.setContetnType(“text/html;charset=utf-8”);方法可以同时设定response所使用的字符集编码和浏览器打开所用的字符集编码。
构成
响应行
包含了http协议版本,以及用于描述服务器对请求的处理结果
HTTP/1.1 (协议版本) 200(状态吗) OK(状态码描述)
状态码
200:请求成功
500:java程序有误
404:连接到服务器,但没有找到服务器
响应头
用于描述服务器的基本信息,以及数据描述
Content-Type
响应体
服务器向客户端浏览器回送的正文
六、过滤器filter
引入
多个项目需要进行同一个操作,为了降低代码冗余,既可以设置过滤器,在过滤器中写入,让项目经过过滤器即可(在请求进入到servlet之前,可以配置哪些请求进入到指定的过滤器.完成一些公共的处理)
通过Filter技术,对web服务器管理的所有web资源实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信 息等一些高级功能
作用:对服务器web资源进行拦截(权限控制,通过拦截资源进行权限控制,是否可以访问)
Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter。
Servlet API 中,与过滤器有关的API共有三个接口,分别是
Filter
FilterChain
FilterConfig
实现
Filter接口
是过滤器类必须实现的接口(三个方法):该接口类型作为Filter接口中doFilter方法的参数使用
初始化 init(FilterConfig filterConfig)
过滤 doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
销毁 destroy()
FilterChain接口
该接口类型作为Filter接口中的init方法的参数使用
doFilter(ServletRequest request,ServletResponse response)
将当前的请求和响应传递到过滤链上的下一个资源,可能是下一个过滤器,也可能是目标资源
FilterConfig接口
getInitParameter(String name)
获取过滤器的初始化参数值
意义·
用来实现通用的功能,减少代码冗余,提高可维护性;
多个资源可以使用同一个过滤器,同时一个资源也可以使用多个过滤器
七、web会话跟踪
token
token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,
服务器生成一个token便将此token返回给客户端,以后客户端只需带上这个token前来
请求数据即可。token保存在客户端,并且进行了加密,保证了数据的安全性.
目的
为了减轻服务器的压力,使服务器更加健壮。