Jsp目录
文章目录
前言
Jsp是使用Java代码动态生成HTML代码,本质是servlet,这里也是概念理解即可,现在都是前后端分离的开发,解耦式的开发,会更好的分工协作。
一、Jsp是什么?
1.1 Jsp干甚的
可以使用Java代码来动态生成HTML页面,对于Java开发人员写前端更为友好,但是现在前后端分离的开发模式下,依旧被取代了
1.2 Jsp继承结构
HttpJspBase继承HtppServle,重写HttpServlet的service方法,其中调用Jsp这个转义的servlet的JspService方法
HttpServlet init service destory
HtppJspBase 重写init service-》调用jspService destory
_jspInit _ jspService _ jspDestory
MyJsp _jspInit _ jspService _ jspDestory
1.3 Jsp生命周期
这个跟servlet一样,因为jsp本质就是一个servlet
new init service destory
1.4 Jsp的执行流程
请求jsp页面 -转义》java文件 -编译为》class文件并执行
1.5 Jsp的性能以及变量与注释问题
性能上Jsp一次转义多次执行,虽然不用再次去转义和编译,但是你是用IO流的方式去动态生成,动态和静态的肯定效率慢。
jsp变量和注释问题 <%%>局部变量 <%!%> 成员变量
只有java<%/java注释/%>和jsp<%–%>注释 不会响应给浏览器
html
css style标签内// js script标签内 //
1.6 三个标签和九大内置对象
指令标签 page 定义网页依赖属性,如脚本语言、error页面、缓存需求等等
–》 import 导包 contentType 响应给html字符集 extends pageEncoding 文件字符集
–》 errorPage 异常跳转页 isErrorPage 是否可接受异常处理对象
include 包含其它文件
–》 静态引入: @include 被引入的网页和当前页生成代码后形成了一个java文件
–》 动态引入: jsp:include 被引入的JSP页面会生成独立的java代码
taglib 引入标签库的定义
九大内置对象 四个域对象 pageContext --》page request session application
响应对象 response 输出流对象 out
其它三个对象 servletConfig --》 config page --》 this对象
exception 异常对象 在错误提示页上使用,当isErrorpage=true 才具有该对象
二、EL表达式和JSTL
PageScope requestScope sessionScope ApplicationScope
同名参数会自动在四个域中去找数据 就近原则 page 》 request 》session 》 application
只有pageContext remove会移除四个域的同名数据
1.不需要导包
2.不会展示null值
3.必须保证获取对象有get方法 --》 PropertNotFoundException
获取请求的参数 param.key paramValues.value[index]
运算符 比较推荐字母形式 不推荐符号 以免与其余有歧义
–》gt > lt < eq == ge >= le <= ne !=
逻辑 || && / and or
三目运算符 ?:
判空运算符 empty --》 判断某个域中的数据是否为空 empty scope.key
数组长度为0 则认为非空
eg: 判断集合为空 list.size() eq 0
JSTL
c 核心库
EL表达式并非完全避免java代码 JSTL来解决这个问题
set out remove if choose foreach
格式化 fmt
数值 formatNumber --》属性 value 要显示的数字 pattern格式化符号 数值 | 日期时间
日期时间 formatDate --》 value pattern
三、MVC模式
MVC模式
项目架构模式 Model 数据模型层
*.业务逻辑的运算 service服务层
*.CRUD Dao层 增删改查数据
*.实体类 pojo/bean/entity (用于数据库表每行记录与java实体类的映射对象)
View 视图层 展示数据 前端 jsp
Controller 控制层 业务交互逻辑(页面跳转) 接收和响应数据 servlet
优点 耦合性低 可维护性高
重用性高
开发效率提高,分工明确
有利软件工程化管理
四、总结
Jsp的学习可以顺带把MVC的,service(开发人员主要写业务代码)Dao(写CRUD)。而View层,展示数据的咱后端开发不用管,交给前端就行,这里controller层(处理请求相应与转发重定向)。