Jsp
Jsp是sevlet的简化这里只展示它的语法 , 以便于查阅
过时的语法,能看懂即可
小脚本 <% java代码 %>
表达式 <%= 2+3 %> 等价于out.print(2+3);
JSP注释:<%-- 被注释的内容 --%> 特点:安全,省流量
网页注释:<!-- 网页注释 --> 特点:不安全,费流量
三个指令
<%@ %>的这种写法
page : jsp页面的配置信息,决定哪些东西应该创建,一般用默认的就好,用到再查询
include: 静态包含其他页面 ,
taglib:自定义标签库 ,挺有用,JSTL的应用后面会说
9个内置对象
out, request,response, session , application, pageContext, exception,config,page(this)
几个不常用到的解释
config , 就是ServletConfig啦 , 主要就是读取你写在XML中的配置信息啊 , 挺简单的
page, 就是在Servlet中的this啊, 主要就是可以通过这个this获取很多东西。 比如ServletContext和servletConfig都可以得到等等等等
其中最叼的一个属性莫过于PageContext,用他可以获取其他的域对象的属性获取和设置方法 通过Scope区分,最重要的是 ,它可以按照
pageContext>Request>Session>application的顺序获取值,直到找到对应的属性为止
那四个域对象哪些比较重要呢(特别注意范围哦)
PageContext : pageConext 存放的数据在当前页面有效。开发时使用较少。
ServletRequest: request 存放的数据在一次请求(转发)内有效。使用非常多。
HttpSession: session 存放的数据在一次会话中(下次进入jSessionid就变了所以)有效。使用的比较多。如:存放用户的登录信息,购物车功能。
ServletContext: application 存放的数据在整个应用范围内都有效。因为范围太大,应尽量少用。
!!!!!!!!!!!!!!!!!!!!!!!!注意Session的有效 和 Session的生命周期 不是一个概念 ,不可以相提并论, 不要弄混
接下来就是开发中的重点内容拉
EL表达式 , 有了他再也不用 <%=%>这种反人类的标签了
你只需要一个${} 便可以获取域对象中指定的值 , 因为其中可以写表达式 , 所以 ,你可以写一个加减乘除,三木运算,empty存在与否运算
$中的对象 调用get方法时 不需要写get 直接 .属性名 就可以了
多么优美的语言啊,不仅简单,而且功能强大
EL中的隐式对象,这个东西感觉我只记住了第一个,用来获取 其他域对象的 , 获取资源名的
记录在这里吧,如果有用到的,在看看吧
EL隐式对象引用名称 |
类型 |
JSP内置对象名称 |
说明 |
pageContext |
javax.servlet.jsp.PageContext |
pageContext |
一样的 |
pageScope |
java.util.Map<String,Object> |
没有对应的 |
pageContext范围中存放的数据,页面范围 |
requestScope |
java.util.Map<String,Object> |
没有对应的 |
请求范围数据 |
sessionScope |
java.util.Map<String,Object> |
没有对应的 |
会话范围数据 |
applicationScope |
java.util.Map<String,Object> |
没有对应的 |
应用范围数据 |
param |
java.util.Map<String,String> |
没有对应的 |
一个请求参数 |
paramValues |
java.util.Map<String,String[]> |
没有对应的 |
重名请求参数 |
header |
java.util.Map<String,String> |
没有对应的 |
一个请求消息头 |
headerValues |
java.util.Map<String,String[]> |
没有对应的 |
重名请求消息头 |
initParam |
java.util.Map<String,String> |
没有对应的 |
web.xml中全局参数 |
cookie |
java.util.Map<String,Cookie> |
没有对应的 |
key:cookie对象的name值 |
可视El表达式 , 不能完全替换原来的 % 相关的标签啊 ,我想循环 map怎么办,我想执行判断语句怎么办 , JSTL解决了这些问题
使用它记得引入taglib
1.我想在页面中设置一个常量 , 比如计算一下 循环 表达式中 各个值的和 ,用一个 <c:set标签即可 设置 var value 和 scope 作用域
2.我想输出一个数据,好像el表达式就可以吧 ! 也是这个没啥用 用<c:out , 如果不存在 可以用default设置默认的值
3.移除一个数据 , <c:remove 没怎么用过
重点作用
if 判断
<c:if 其中test里面写el表达式 , 为真则输出包含的内容
switch .. case
<c:choose 里面写多个<c:when 符合条件的就输出 不怎么会,希望以后多用
还有就是foreach了,可以循环各种数组啊,集合啊
只会循环一些容器,所以功能很多不懂,贴上,以后查询用
//用自己写的循环
遍历容器 , 目前我还是比较常用的
var 是每次循环到元素的 代表 ,例如在map中是一个Map.Entry<>在list中的代表循环到的那个
注意一个属性,varStatus可以获取到一些遍历的信息
指向一个字符串,该字符串引用一个对象。 map.put("vs",一个对象);
这个对象记录着当前遍历的元素的一些信息:
getIndex():返回索引。从0开始
getCount():返回计数。从1开始
isLast():是否是最后一个元素
isFirst():是否是第一个元素