jsp
概述
jsp:Java Server Pages --java服务器端的页面技术
html代码+java代码+jsp代码的组合 后缀名:.jsp 存放位置: 和html一致
总结:jsp就是能写java代码的html页面
作用
servlet对于数据的展示过于麻烦
jsp:接受服务器端servlet产生的各种数据(map/数组/list/对象),进行数据展示的
jsp的使用
jsp本质上就是一个servlet
Servlet本质上是一个java类
java类:具有.java .class (work目录)
jsp的执行原理:(理解和面试题)
1:根据请求的页面去当前项目下找到指定的jsp 没找到会报404
2:找到对应的jsp文件后.将jsp文件变成java文件.并调用编译器编译成class文件,最终放在了work目录下
3.编译后的class文件会被服务器当做Servlet执行,生成动态的内容,将动态的内容返回给服务器
4.服务器拿到生成的内容,组装成响应信息,返回给浏览器
5.浏览器收到响应,展示内容
jsp的语法:
1 注释 <%-- --%>
jsp中可以写html注释,但是jsp的注释不会显示在源码上,更加安全。
2 三种方式编写java代码 <% %> <%= %> <%! %>
<% %> :java程序片段
定义在它里面的java代码,在生成的servlet源码文件的service方法里面有一份
<%= %>:页面输出表达式 (JspWriter:是jsp的输出流 专门页面输出数据的 PrintWriter:servlet)
(了解)定义在它里面的java代码,在生成的servlet源码文件的service方法里面有一份 做输出
<%! %>:定义成员
(了解)定义在它里面的java代码,在生成的servlet源码文件成员位置上有一份
需求:使用jsp接收servlet产生的数据(字符串,集合,数组,map等等)并且展示
el标签
概述
el:Expression Language
能够嵌套到jsp页面中,代替jsp的脚本标签<% %>,使jsp中的java代码写起来更加的简化
作用
1 通过el标签在jsp页面中获取Servlet的3大域中的数据 (重点)
1 获取简单数据(String int..)
2 获取复杂数据 (数组 list map)
3 获取对象属性的数据 (对象)
2 通过el标签做一些运算 + - * / && || > < 三元运算(了解)
el的使用
el的书写格式:${el的表达式}
el获取域中的数据
el对域中简单数据的获取:
${requestScope||sessionScope||applicationScope.key名}
el对域对象中复杂数据获取:
数组和list集合 ${requestScope||sessionScope||applicationScope.key名[角标]}
map集合:${requestScope||sessionScope||applicationScope.key名.map的key名}
el对域中对象属性值的获取:
${requestScope||sessionScope||applicationScope.key名.对象属性名}
或${requestScope||sessionScope||applicationScope.key名[“对象属性名”]}
注意:
requestScope:el标签提供的一个内置对象
sessionScope:el标签提供的一个内置对象
applicationScope:el标签提供的一个内置对象
唯一作用:专门用来获取对应域中存储的数据
获取对象属性值的时候实际用的是get方法
底层类的成员变量命名首字母不能大写
el的便捷方式:
el的便捷方式:依次从最小的域中开始查找,找到了直接返回 找不到继续找下一个 如果都没有 返回的是空内容
域的范围大小:request
el做运算
特点:
在el做+ - * / 运算 不论运算符的后面是什么类型,只要能运算的全都做运算,不能运算的 一律报错
el的表达式不仅支持做+,-,*,/ 还支持做逻辑运算,比较运算和三元运算
empty(掌握)
作用:可以判断一个容器的长度是否为0 可以判断一个对象是否为null
容器(list/map集合):
如果集合长度为0 true
如果集合长度不为0 false
对象(javabean):
如果对象为nulL true
如果对象不为null false
取反值:!或 not
JSTL标签
概述
jstl不是jsp的内置标签,如果想要在jsp中使用这个标签
需要先在当前的jsp中,引入该标签
jstl的入门
1 导2个jar包
2 在哪个jsp页面使用,就需要在当前的jsp中通过jsp的指令tagLib引入
jstl的使用
jstl核心下一共有13组标签,咱们只玩2组
if :判断
foreach:循环
if判断
格式:
条件成立的时候输出的内容
foreach循环
格式1:
${变量名 }
varStatus="记录循环状态"
count:计数当前第几个
first:判断是否是第一个
last:判断是否是最后一个
格式2(掌握):
mvc设计模式
servlet-缺点:编写页面响应信息麻烦
|
jsp-缺点:维护起来麻烦
|
jsp+javabean: model1(过时了)
jsp:接受请求,处理请求(找到合适javabean去处理请求) 做展示
|
|
jsp+javabean+servlet: model2(目前方式)
jsp: 收集servlet传递数据 展示数据
servlet: 接受页面请求 找到合适javabean去封装并处理
javabean: 封装业务,封装对数据的操作
MVC设计模式思想(面试题):
核心思想:将业务逻辑 数据 和显示相分离的一种思想.让每一块都专注于做自己的事情
M:model 模型 封装数据 封装对数据的操作 javabean
V:view 视图 展示数据(主要使用jsp) jsp
C:ctrl(controller) 控制 接受请求并响应 servlet
三层架构
企业开发中,我们的主流开发方式都会选择三层架构的开发模式,根据不同的层做不同的处理
三层分别是:表示层、业务逻辑层、数据访问层。
表示层:又称为 web层,与浏览器进行数据交互的。 servlet
业务逻辑层:又称为service层,专门用于处理业务数据以及事务处理
数据访问层:又称为dao层,与数据库进行数据交换的。
包的命名规范:
web: 公司域名反转.web
service:公司域名反转.service
dao:公司域名反转.dao
domain: 专门放javabean
utils:专门放工具类