Java全栈学习笔记35
# Java EE基础
Servlet ----- SpringMVC Spring --- webFlux
## C/S和B/S的区别
C/S client - server 客户端 -- 服务器端模型
B/S browser -server 浏览器 -- 服务器模型 ,程序完全放在服务器上。采用请求/响应的模式进行交互
前后端分离 --- 前端是一个服务 --- https ---- 后端是一个服务
## web服务器
java项目,本身运行时在jvm虚拟机。网站项目---- 可以被外部网络交互。需要加载到网站服务环境中。
需要一个可以编译和运行java项目的服务器。web容器---web服务器
tomcat,jboss weblogic....
下载完tomcat 需要配置环境变量
使用bin目录中的startup.bat 启动tomcat
## URL
统一资源定位系统。路径
http://localhost:8080/firstWebProject/index.html
http: 协议 超文本传输协议
localhost: 主机
8080: 端口号
firstWebProject/index.html 资源名
## JavaEE
软件架构。里面包含了JavaEE体系针对于各个模块提供的技术支持。它是一个开发分布式企业级应用的规范和标准
EJB Enterprise Java Bean 企业级JavaBean 通俗讲 就是企业级的java类
EJB 在后续做开发过程中,不会使用。因为继承第三方难度大,而且集成过多第三方会导致整体项目架构比较臃肿
三层架构
从JavaEE不同的技术支持体系,把整体网站分为不同的三个模块
表示层 --- 视图 Jsp jstl el servlet
业务逻辑层 --- 处理逻辑/数据 EJB
数据访问层 -- 访问db jdbc
## Http/Https
超文本传输协议
http://localhost:8080/firstWebProject/
https://www.jd.com/
特点
默认的端口号 http:80 https:443
无状态: 服务器端不会记录是谁访问了服务器。只会为每一个请求都返回一个响应
请求
请求行
请求方法: get/post
资源名称:访问的资源
协议版本: http
请求头
本次请求中,所携带的常规和一些额外的参数。不属于请求体
响应
响应头
服务器返回响应时的一些额外的参数,不属于响应主体
状态行:
版本 状态代码 说明
状态代码:
200:请求成功并成功获取到响应
404: 资源未找到
400:错误请求,后端存在必传的参数,但是前端没传
401: 没有授权
403: 没有权限,服务器拒绝请求
405:请求方法不匹配
415:参数类型不匹配
500:请求到服务器,但是服务器报错了。没有正常给出响应
# Servlet基础
servlet是一种服务器端的应用程序。Java服务器小程序
特殊的java类
可以接收请求,返回响应
可以内嵌Html代码
服务器:tomcat web 服务器(容器)
总结: servlet其实是运行在tomcat中的一个java类
请求:可以理解为对目标地址的访问,并且真是该地址的内容或者该地址所返回的数据
配置servlet
使用xml文件。每个网站项目都存在web.xml。放在WEB-INF 中,这个文件是整个项目的站点文件
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>servlet类的全限定名称</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
[<url-pattern>配置多个</url-pattern>]
</servlet-mapping>
在这个项目中 url-pattern 不能重复
注解
@WebServlet 在类上,标注该类为Servlet类
思考:
调用这个方法前,我们程序中是否显示的new了这个类的对象:没有
这个service方法谁调用的。容器
ServletRequest 和ServletResponse 容器传入参数。
destory方法是当servlet初始化完成后,对其进行了修改。需要重新初始化Servlet。那么会销毁之前的servlet。
http://localhost:8080/firstWebProject/hello
http://localhost:8080/firstWebProject/index.html
在前端页面中,写路径不要以 /开头。这个/是网站服务器根路径,并非项目根路径
init(ServletConfig config):用于初始化Servlet。
destroy():销毁Servlet。
getServletInfo():获得Servlet的信息。
getServletConfig():获得Servlet配置相关信息。
service(ServletRequest req, ServletResponse res):运行应用程序逻辑的入口点,它接收两个参数,ServletRequest表示客户端请求的信息,ServletResponse表示对客户端的响应。
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("请求来了");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req,resp);
}
get和post的区别
get方式提交会把数据暴露在URL中,有长度限制,相对不安全,会把长度后面的数据丢失
post方式以数据源的形式提交数据,理论上没有长度限制,不会把数据暴露在路径中,相对安全