Web服务器使用HTTP协议来传输数。
Servlet容器的基本思想是在服务器端使用Java来动态生成网页,Servlet容器是Web服务器和servlet进行交互的必不可少的组件。Servlet容器就是用来装Servlet的。
Servlet容器和Web服务器如何处理一个请求?
-
Web服务器接收到HTTP请求
-
Web服务器将请求转发给servlet容器
-
如果容器中不存在所需的servlet,容器就会检索servlet,并将其加载到容器的地址空间中
-
容器调用servlet的init()方法对servlet进行初始化(该方法只会在servlet第一次被载入时调用)
-
容器调用servlet的service()方法来处理HTTP请求,即,读取请求中的数据,创建一个响应。servlet会被保留在容器的地址空间中,继续处理其他的HTTP请求
-
Web服务器将动态生成的结果返回到正确的地址。
Servlet与Tomcat的关系
Tomcat其实是Web服务器和Servlet容器的结合体
Servlet是运行在Web服务器或应用服务器上的程序。
Web服务器
-
Web 服务器是一个应用程序(软件),对HTTP协议的操作进行封装,据,使得程序员不必直接对协议进行操作,让web开发更便捷,主要功能是“提供网上信息浏览服务”。
-
Web服务器的作用:
*封装HTTP协议操作,简化开发
*可以将web项目部署到服务器中,对外提供网上浏览器服务
什么是Servlet容器?
Servlet容器,顾名思义里面存着Servlet对象,我们为什么能够通过Web服务器映射的URL访问资源?肯定需要写程序处理请求,主要3个过程:接受请求,处理请求,响应请求。
Tomcat
-
-
Tomcat是一个轻量级的Web服务器,支持Servlet/JSP少量JavaEE规范,也称为Web容器,Servle容器。
-
控制台乱码:config——logging.properties--- gbk
-
关闭:Ctrl+C
-
配置:修改启动端口号:conf/server.xml
-
启动出现问题:端口号冲突 *Address alrady in use : bind
-
启动窗口一闪而过:检查JAVA_HOME环境变量是否正确配置。
-
项目部署:将项目放到webapps目录下,即部署完成
-
一般javaWeb项目会被打成war包,然后将war包放到webapps目录下,Tomcat会自动压缩war文件 ---hello.war.
IDEA中创建Maven Web项目
Maven Web 项目结构 :开发中的项目
-
webapp
*html --文件目录(可自定义)
*WEB-INF --web项目核心目录
*web.xml web项目配置文件
-
打包方式
<Packaging> war <Packaging>
*jar:默认方式
*war:web项目
部署的JavaWeb项目结构:开发完成,可以部署的项目。
*WEB-INF --web项目核心目录
*classes java字节码文件
*lib 项目所需的jar包
*web.xml web项目配置文件
-
编译后的java字节码文件和resources的资源文件,放到
WEB-INF下面的classes目录下
-
pom.xml中依赖坐标对应的jar包,放入WEB-INF下的lib目录下。
Servlet
-
Servlet是java提供的一门动态web资源开发技术。
-
Servlet是javeEE规范之一,其实就是一个接口,将来我们需要定义Servlet类实现Servlet接口,并由web服务器运行Servlet
-
servlet对象由web服务器创建,Servlet方法由web服务器调用。
-
自定义的Servlet,必须实现Servlet接口并复写其方法,而Servlet接口中有sevice方法
Servlet 生命周期
-
对象的生命周期指的的是一个对象被创建到被销毁的整个过程。
-
Servlet运行在Servlet容器中(Web服务器),其生命周期由容器来管理,分为四个阶段:
-
加载和实例化,就是创建对象
*默认情况下是servlet被第一次访问的时候,由容器创建Servlet对象。
*loadOnStartup的值: 0或者正整数的时候,是在服务器启动的时候被创建。是负整数的时候即默认情况下。
-
初始化:在servlet实例化后,容器将调用Servlet的 init()方法,完成一些加载配置文件,创建连接等初始化工作。只调用一次
-
请求处理:每次请求Servlet时,Servlet容器都会调用service()方法,对请求处理,会被多次调用。
-
服务终止:当释放内存或者容器关闭时,容器就会调用Servlet实例的destroy()方法。执行一次。
-
Servlet体系结构
-
servlet-----Servlet体系根接口
GenericServlet-------Servlet抽象实现类
HttpServlet------对HTTP协议封装的Servlet实现类
-
我们将来开发B/S架构的web项目,都是针对HTTP协议,所以我们自定义Servlet,会继承HttpServlet
HttpServlet原理
-
自己写的Servlet要继承这个类,然后重写doGet()和doPost()
-
获取请求方式,并根据不同的请求方式,调用不同的doXxx方法。
HttpServletRequest & ServletRequest
-
继承关系,HttpServletRequest 继承 ServletRequest
-
HttpServletRequest 里面有getSession,ServletRequest没有,需要强转
-
HttpServletRequest hsr = (HttpServletRequest) request;
Request & Response对象
-
浏览器发出请求,就是HTTP协议封装的数据,然后经过Tomcat服务器解析后,将其封装到Request 对象参数中。然后要给浏览器响应的数据,就通过Response设置数据,发送给浏览器,然后解析数据,然后呈现。
-
Request :获取请求数据
-
Response:设置响应数据
Request对象
-
Request继承体系
-
ServletRequest ---java提供的请求对象的根接口
-
HttpServletRequest ----java提供的对Http协议封装的请求对象接口
-
RequestFacade ----Tomcat定义的实现类
-
Tomcat解析请求参数,封装为Request对象,并且创建request对象传递到service方法中,所以是tomcat定义的实现类。
Request请求转发
特点:
-
浏览器的地址不会发生改变
-
只能转发到到当前服务器的内部资源
-
一次请求,可以在转发的资源间使用request共享数据
Response完成重定向
-
重定向(Redirect):一种资源跳转方式
特点:
-
浏览器的地址栏的路径发生变化
-
可以重定向到任意位置资源(服务器内部,外部均可);
-
两次请求,不能在多个资源使用request共享数据。
JSP
-
java Server Pages ,java服务端页面
-
一种动态的网页技术,其中既可以定义HTML,JS,CSS等静态内容,还可以定义java代码的动态内容
-
JSP=HTML+java
-
jsp快速入门
-
导入JSP坐标<jsp-api>
-
<scope> provided tomcat自带了jar包,会冲突
-
创建jsp文件
-
编写HTML标签和java代码
-
-
JSP 本质上就是一个Servlet
-
jsp在被访问时,由jsp容器(tomcat)将其转换为java文件(Servlet)
由容器将其编译,最终对外提供服务的其实就是这个字节码文件。
-
浏览器-->请求--->hello.jsp-->转换--->Servlet--->hello_jsp.java----->编译---->class---->hello.jsp.class---->响应。
-
JSP脚本
1.jsp脚本用于在jsp页面内定义java代码
2.jsp脚本分类:
<%...%>:内容会直接放到_jspService()方法中
<%=...%>:会放到out.print()中作为参数,会输出在页面上。
<%!...%>:内容会放到_jspService()方法之外,被类直接包含,相当于成员变量,或者定义方法,都可以。
-
EL 表达式:就是来替换jsp中的java代码的
-
主要功能:获取数据
-
用于简化JSP页面内的java代码
语法:${name},
从域中获取key为name的数据,一次会从这四个域中寻找
JavaWeb中的四大域对象
-
page:当前页面有效
-
request:当前请求有效
-
session:当前会话有效
-
application:当前应用有效
JSTL标签
-
作用:使用标签取代JSP页面上的Java代码!
-
<c if>
-
<c forEach>
-
要导入坐标
-
在JSP页面上引入JSPL标签库
<%@ taglib ...../jstl/core>
AJAX
-
异步的javaScript和XML
-
作用:
-
与服务器进行数据交换:通过AJAX可以给服务器发送请求,并获取服务器响应数据
-
使用了AJAX和服务器进行通信,就可以使用HTML+AJAX来替换JSP页面了
-
异步交互:可以不再加载整个页面的情况下,与服务器交换数据并更新部分的网页技术
-
异步和同步
*异步:客户端不用等待服务器做出响应,可以继续其他操作,隐秘的和服务器交互,客户端感知不到。
*同步 客户端发送请求后,要等待服务器给出响应后,才能继续其他操作。
-
MVC模式
-
是一种分层开发的模式,
-
M:Model,业务模型,处理业务
-
V;View 视图,界面展示
-
C:Controller ,控制器,处理请求,调用模型和视图。
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具