day03
运行原理
1.tomcat
服务器程序
网页访问的服务
内部实际上相当于一个web容器(装页面)
页面
- 静态页面
服务器上是什么,浏览器上就是什么
HTML CSS JS(滚动图片,用户自己设置) 图片 文件 视频音频
- 动态页面
需要在服务器上执行的,浏览器获得执行的结果
根据用户不同的操作,得到不同的结果
servlet jsp
2.servlet
运行在服务器中的一段程序
servlet实际上是一个Java类,需要将Java文件编译成字节码文件(.class),必须运行在jvm中。
eclipse会把项目中的Java代码编译成class文件,放到build文件夹下。
当运行项目时,项目中WebContent的文件夹下的内容会被复制到tomcat运行目录下,同时build下的文件也会被复制到运行目录下的WEB-INF文件夹下。
项目clean是把build目录清空,重新编译,会解决tomcat运行不同步问题。
tomcat启动
通过JAVA_HOME环境变量,找到JDK的安装目录。
加载项目:
1)加载web.xml
2)加载注解,生成一个映射表
url | 页面 |
---|---|
LoginServlet | LoginServlet |
3)加载 JSP
4)加载其他东西
项目加载完成后,客户端可以访问网页。
1)客户端第一次请求Servlet 的URL时,找到URL 对应的类
2)tomcat创建该类的对象(使用反射的方式-告知该类的名字,就可创建该类的对象
3)调用该对应的doGet/doPost方法对请求进行处理
4)tomcat把Response对象中的处理结果返回给客户端
5)下一次请求到达时,重复2、3、4步
tomcat管理Servlet对象与doGet/doPost方法的调用。
3.JSP运行过程
jsp本质上是一个servlet
请求一个jsp页面是,tomcat找到响应的jsp文件,执行他,把执行结果交给客户端浏览器。
jsp文件在tomcat如何执行
1)翻译,jsp页面会被tomcat翻译成一个Java文件
index.jsp->index_jsp.java,生成一个叫做index_jsp的类,一个servlet类
2)编译成字节码文件
index_jsp.java->index_jsp.class
3)当客户端第一次请求jsp页面时,会执行1、2,生成字节码文件
4)tomcat创建该类的对象(使用反射的方式-告知该类的名字,就可创建该类的对象
5)由tomcat调用_jspService()方法处理哭护短请
6)通过out对象,将返回的数据交给response , tomcat把response中的数据返回给客户端浏览器
7)当客户端再次请求时,重复4、5、6步骤
SSM框架
1)Servlet+JSP
2)SSH:
Spring:解耦,松耦合
高内聚:功能高度集中
低耦合:功能与功能之间的关系尽量少
设计模式
Spring两大核心
Ioc:控制反转,使用容器自动创建对象,在需要时,直接去容器中取
在Spring中控制反转通过DI(依赖注入)实现
AOP:面向切面编程
对已有代码进行功能增强,不破坏原有的代码
采用动态代理的方式,对原来的代码进行包装
Struts:基于MVC三层架构的Web框架
由struts接收客户端的请求
管理 M 层和 V 层之间的交互
Hibernate:重量级的持久层框架,访问数据库。基于ORM(对象关系模型)
O 对象 --Java中的对象 R 关系–关系型数据库
数据表中的数据,做成Java中的对象,列由类的属性表示
M 映射–把数据库中的数据取出来,自动封装成对应的类对象
把Java中的对象,同步到数据库
访问数据库时,不需要写SQL语句
3)SSM框架
Spring:
Spring Web MVC:
Mybatis:轻量级的持久层框架,半基于ORM的,需要写SQL语句
Spring框架
四个核心组件
beans:JavaBean, Java中的一种类,属性以及属性的get和set方法
Spring的bean容器,所有的对象都交给bean容器管理
context:上下文
访问容器的一种方式,管理容器
core:内核,Spring内核
expression:表达式,管理配置文件
把spring和SpringMVC相关的复制到
配置Spring和SpringMVC
SpringMVC运行原理
SpringMVC四大核心组件
前端控制器
DispatcherServlet,SpringMVC的核心,负责管理其他三个组件的工作,接收来自客户端的请求
处理器映射器
HandlerMapping 处理器与URL之间的映射关系
Handler 处理URL的类或者方法(相当于原来Servlet中的doGet/doPost方
处理器适配器
HandlerAdapter 对处理器进行适配,尝试执行处理器
处理器执行完后,在适配器中生成相应的ModelAndView(数据和视图名)
视图解析器
ViewResolver 拿到数据和视图名,将数据渲染到具体的视图中