文章目录
Java Web 发展史
- Servlet
- JSP
- Model 1:JSP + JavaBean
- Model 2:JSP + JavaBean + Servlet
- 框架:Struts、Spring、Mybatis
一、Servlet
是什么
服务器端的一个组件
Servlet是使用Java Servlet API编写的、适合于B/S模式的、运行在Web服务器端的Java类。
工作原理
优缺点
- 优点
- 纯Java
- 执行速度快
- 可移植性:Servlet利用Java语言开发,具有Java的跨平台性.
- 网络和URL访问
通过JDBC访问远程数据库
通过对象序列化使用Java Bean
通过JNDI使用EJB等
- 缺点
- 实现输入输出功能时比较低效
Servlet的生命周期
(1)在Servlet生命周期中,init()方法只做一次,初始化Servlet处理请求时所需的对象,如ServletRequest/HttpServletRequest对象、HttpServletResponse对象等。
(2)在Servlet生命周期中,destroy()方法也只做一次。可以重定义destroy()方法添加一些收尾工作,如关闭与数据库的连接等 。
设计模式
MVC 模式
MVC强制性地把应用程序的输入、处理和输出分开。它把应用程序分成三个核心模块:模型、视图和控制器,它们分别担负不同的任务
View:
Model:
模型是应用程序的主体部分,能为多个视图提供数据。可提高应用的可重用性
模型可以表示业务数据和业务逻辑。
表示业务数据的模型称为状态模型,定义当前值的集合;
表示业务逻辑的模型称为动作模型,修改状态模型的状态,是控制器与状态模型交互的中间层。
Controller:
控制器接受用户的输入并调用模型和视图去完成用户的需求。
当用户发送HTML表单时,控制器接收请求并调用相应的模型组件处理请求,然后调用相应的视图显示模型返回的数据。
控制器还负责很多底层工作,如:安全性、事件标识、处理事件、处理错误等。
二、JSP
概念
Java Server Pages
特点:
Write Once,Run Anywhere
- JSP其实是标签化的Servlet
JSP运行原理
-
- 客户端向服务器发出Request请求
-
- JSP容器将JSP转译成Servlet的源代码
-
- JSP容器对产生的Servlet的源代码进行编译,并加载到内存执行
-
- 服务器把结果Response响应至客户端
JSP 容器
- 容器是用来容纳其它组件的,这些组件包括JSP或者Servlet,完成这些组件对象的创建、方法的调用以及对象的销毁。
- JSP容器是由许多Servlet构成的程序实体,它将请求信息传递给JSP页面并解释、执行JSP页面。
JSP与Servlet的关系
- Servlet是JSP的基础,是JSP被解释执行时的中间过程。JSP页面在运行之前要被解释成Servlet源代码
- JSP是为了让Servlet开发相对容易而采取的脚本语言形式
- JSP和Servlet程序可以相互操作
JSP页面的执行过程
- 当服务器上的一个JSP页面第一次被请求时,Web服务器上的JSP引擎首先将JSP页面转译成Servlet,
- 然后执行该Servlet。
- Servlet主要完成以下2项任务
- 把JSP页面中的HTML标记交给客户端的浏览器去解释执行。
- 把JSP页面中的JSP指令标记、动作标记、JSP声明、代码段和表达式交给服务器去执行,然后将结果送给浏览器。
session会话
什么是session
- 会话:从一个客户打开浏览器连接到服务器开始,到客户关闭浏览器离开服务器结束或超时。
- session对象是javax.servlet.http.HttpSession类的实例
- session对象使同一用户在访问Web站点时多个页面间共享信息。
session对象的生存时间
一般来说,下列情况会使会话结束:
- 由于网络故障套接字删除
- 关闭浏览器
- 服务器关闭重启
- 会话超时和主动撤销会话。
session 对象的生存时间
Tomcat
是一个web服务器,默认url是http://127.0.0.1:8080(默认端口是8080)
JSP中使用数据库
JDBC
Java DataBase Connectivity Java数据库连接
- 是一种用于执行SQL语句的Java API
JDBC驱动程序的类型
JDBC的使用
使用JDBC技术的编程步骤:
- 注册和加载驱动器 ;
- 与数据库建立连接;
- 发送SQL语句;
- 处理结果;
- 关闭连接;
如何防止SQL注入
事务
事务是具有“原子性”的一个或多个语句,即这些语句要么全部被执行、完成并被提交,要么全部还原。
JavaBean组件
三、Model 1: JSP + JavaBean
概念:
- 把业务处理逻辑代码从JSP提取出来,形成JavaBean
- JSP完成输入、输出和控制功能
- 需要的时候调用JavaBean的功能
优点:
- 处理功能从JSP页面分离出来
- 可以共享JavaBean
- 优点:降低了页面与模型间的依赖性,实现了显示与内容分离,使页面制作和业务逻辑并行执行。
缺点:
- 页面中仍然纯在用于控制的代码
- 缺点:JSP既要作为视图负责提供表示层数据,又要充当控制器负责业务流程控制,因此仍然有大量的代码段嵌入JSP 页面中。
体系:
四、Model 2:JSP + JavaBean + Servlet
概念:
- JSP完成输入输出,主要使用html和jsp标签
- JavaBean 完成功能,不能接受请求,需要JSP和Servlet完成调用
- Servlet 完成控制,能够接受请求,用户能够直接访问,可以调用JavaBean完成业务处理
优点:
- 分工清晰
- JSP代码主要用于输入和输出,便于维护
- 控制由Servlet完成
缺点:
- 作为控制器的Servlet存在大量重复代码
五、框架阶段
优点:
- 减少代码重复
- 提高开发效率
- 便于维护
缺点:
对于小型项目,增加了复杂性
六、Web
forward和redirect的区别
二者都是servlet的两种跳转方式
- forward 转发:服务器内部的重定向,url不会改变;效率较高
- redirect 重定向:客户端的行为,url会改变;效率较低
get和post的区别
- 功能:GET:获取 POST:发送
- 安全性:get较低,会把请求的一些信息显示在url中;post较高,不会显示在url
- 缓存:get会在浏览器中留下痕迹,post不会
Ajax
前后端交互的工具,用于js和服务器端交互
可以建立一个异步请求,ajax可以实现页面的局部刷新
优先:页面的局部刷新
缺点:不支持back回退按钮
什么是JSON
JavaScript Object Notation, JS 对象标记
- 是一种轻量级的数据交换方式,前后端交互的时候通常会把数据封装成JSON对象,能够更好地统一格式
- 前端-后端:json字符串格式,如果是一个对象要先用JSON.stringify()转义,转义成为字符串才能将数据传给后端
- 后端-前端:用JSON.parse()方法转义。
JSONP
也是用来实现跨域的一种方法,但我没有用过
如何实现跨域请求
协议、域名、端口