动态页面技术(JSP/EL/JSTL)

<!-- jsp的三种脚本方式 -->
<%
int i = 5; //这是单行注释
/*这是多行注释*/
%>
<%=i%>
<%!String str = "Hello JSP!";%>
<%=str%> <!-- jsp的三种注释 --> <%-- 这是JSP注释 --%>

JSP脚本和注释

JSP本质

三大指令

  • page指令:重要的import指令
  • include指令:提取公共头和尾
  • taglib指令:引入第三方标签库的

JSP九大内置/隐式对象--笔试

页面输出内容的四种方式

    <!-- 方式一:直接输出 -->
aaaaaaaaaaaaaa <!-- 方式二:jsp脚本 -->
<%
out.write("bbbbbbbbbbbb");
response.getWriter().write("cccccccccc");
%>
<%="dddddddddddd" %>

out对象

  • out对象的类型:JspWriter
  • out对象的作用就是向页面输出内容
  • out缓冲区默认8kb,可以设置为0,代表关闭out缓冲区,内容直接写到response缓冲区

pageContext对象(域对象)

pageContext可以向其他的域对象中存取数据

    <%
request.setAttribute("name", "wangwu");
pageContext.setAttribute("name", "Jerry"); // 使用pageContext对象向其他域中存取数据
pageContext.setAttribute("name", "lisi", PageContext.REQUEST_SCOPE);
pageContext.setAttribute("name", "zhangsan", PageContext.SESSION_SCOPE);
pageContext.setAttribute("name", "Tom", PageContext.APPLICATION_SCOPE);
%> <!-- findAttribute方法会从小到大搜索范围中的name -->
<!-- 域的作用范围大小比较,其中pageContext域习惯叫做page域,application域就是servletContext域 -->
<!-- pageContext域 < request域 < session域 < application域 -->
<%=pageContext.getAttribute("name", PageContext.REQUEST_SCOPE)%>
<%=pageContext.findAttribute("name")%>

pageContext对象可获得其他八大对象

四大域的总结

  • page域(pageContext):当前jsp页面
  • request域:一次请求
  • session域:一次会话
  • application域:整个web应用

JSP动作(常用)

  • 页面包含(动作包含):<jsp:include page="被包含的页面"/>
  • 请求转发:<jsp:forward page="要转发的资源"/>

EL(Express Language)表达式

EL的主要作用就是为了简化jsp脚本的,主要方向是简化从域中取出数据

  • 最重要的作用就是从域中取出数据。其语法格式为

    ${requestScope.compony}
  • 最重要的通过EL的内置对象pageContext获得request对象,再通过request对象获得web应用的名称。${pageContext.request.contextPath}

jsp的本质就是servlet

EL执行表达式

  • ${1+1}
  • ${empty obj}--判断一个对象是否为空,是返回true,否则返回false
  • ${obj==null?true:false}

JSTL(JSP Standard Tag Library)----JSP标准标签库

要使用jstl库,需要导入两个jar包:jstl.jarstandard.jar

    <%
// 1.模拟List<String>
List<String> strList = new ArrayList<String>();
strList.add("Tom");
strList.add("Jerry");
strList.add("Mikey"); request.setAttribute("strList", strList); // 2.模拟List<User>
List<User> userList = new ArrayList<User>();
userList.add(new User("1001", "张三", "156235"));
userList.add(new User("1002", "张四", "fdt785"));
userList.add(new User("1003", "Li Li", "gdhjkt")); pageContext.setAttribute("userList", userList); // 3.模拟Map<String,String>
Map<String, String> strMap = new HashMap<>();
strMap.put("one", "1");
strMap.put("two", "2");
strMap.put("three", "3"); session.setAttribute("strMap", strMap); // 4.模拟Map<String,User>
Map<String, User> userMap = new HashMap<>();
userMap.put("user1",new User("1001", "张三", "156235"));
userMap.put("user2",new User("1002", "张四", "的方式根深蒂固"));
userMap.put("user3",new User("1003", "张五", "fsdffgd")); application.setAttribute("userMap", userMap);
%> <h1>取出strList中的数据</h1>
<c:forEach items="${strList }" var="str">
${str }<br>
</c:forEach> <h1>取出userList中的数据</h1>
<c:forEach items="${userList }" var="user">
user的id:${user.id }---user的username:${user.username }---user的password:${user.password }<br>
</c:forEach> <h1>取出strMap中的数据</h1>
<c:forEach items="${strMap }" var="entry">
${entry.key }键对应的值=${entry.value }<br>
</c:forEach> <h1>取出userMap中的数据</h1>
<c:forEach items="${userMap }" var="entry">
${entry.key }对应的User对象为:${entry.value }<br>
</c:forEach>

JSP相关学习的更多相关文章

  1. JSP&Servlet学习手册

    JSP&Servlet学习手册 沙琪玛 书 目录 JSP 指令... 3 书写方式... 3 指令列表... 3 JSP 内置对象... 3 内置对象特点... 3 常用内置对象... 3 o ...

  2. JSP的学习(5)——语法知识三之include指令

    本篇继续来对JSP语法中的JSP指令进行学习,在<JSP的学习(3)——语法知识二之page指令>中,已经介绍了JSP指令的书写格式和page指令的详细信息,所以在这一篇中我们会对JSP指 ...

  3. JSP的学习(6)——九大隐式对象及其out对象

    本篇将介绍JSP中的九大隐式对象,并重点介绍其中的out对象. 我们在之前的博客<JSP的学习(1)——基础知识与底层原理>一文中已经知道,JSP最终要被翻译和转换成Servlet,在转换 ...

  4. JSP的学习(4)——中文乱码的解决

    本篇将以JSP页面中可能存在的中文乱码问题进行分析和解决. 中文乱码的问题一直是国人在编程过程中的一大头疼问题,这点上在JSP.Servlet或Tomcat上随处可见.比如我们在写一个Servlet时 ...

  5. JSP的学习(3)——语法知识二之page指令

    本篇接上一篇<JSP的学习(2)——语法知识一>,继续来学习JSP的语法.本文主要从JSP指令中的page指令,对其各个属性进行详细的学习: JSP指令: JSP指令是为JSP引擎而设计的 ...

  6. JSP的学习(2)——语法知识一

    上一篇<JSP的学习>讲述了JSP的一些基础知识和底层原理,本篇将来学习JSP所需掌握的语法知识等. JSP的语法主要包括以下几个部分的内容: 1)         JSP模板元素 2)  ...

  7. JSP的学习

    JSP的学习 1. (1).服务器的名字:Tomcat (2).服务器浏览器访问的地址为: http://localhost:8080 http://127.0.0.1:8080 2.简单的知识 (1 ...

  8. maven管理的jsp应用如何添加servlet、jsp相关依赖(org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.index_jsp)

    背景: 老大让做权限控制,研究了一下shiro,下了个demo下来,死活跑不起来,报 org.apache.jasper.JasperException: java.lang.ClassNotFoun ...

  9. 数论算法 剩余系相关 学习笔记 (基础回顾,(ex)CRT,(ex)lucas,(ex)BSGS,原根与指标入门,高次剩余,Miller_Rabin+Pollard_Rho)

    注:转载本文须标明出处. 原文链接https://www.cnblogs.com/zhouzhendong/p/Number-theory.html 数论算法 剩余系相关 学习笔记 (基础回顾,(ex ...

随机推荐

  1. [USACO10MAR]伟大的奶牛聚集Great Cow Gat… ($dfs$,树的遍历)

    题目链接 Solution 辣鸡题...因为一个函数名看了我贼久. 思路很简单,可以先随便指定一个根,然后考虑换根的变化. 每一次把根从 \(x\) 换成 \(x\) 的一个子节点 \(y\),记录一 ...

  2. HDU | Friend Chains-4460 SPFA

    题目: Problem DescriptionFor a group of people, there is an idea that everyone is equals to or less th ...

  3. python之-框架

    MVC:Model-View-Controller,中文名“模型-视图-控制器” C——Python处理URL的函数:Controller,Controller负责业务逻辑,比如检查用户名是否存在,取 ...

  4. 笨办法学Python(learn python the hard way)--练习程序21-30

    下面是练习21-30,基于python3 #ex21.py 1 def add(a, b): print("ADDING %d + %d" %(a, b)) return a+b ...

  5. Spring Boot 集成 RabbitMQ 实战

    Spring Boot 集成 RabbitMQ 实战 特别说明: 本文主要参考了程序员 DD 的博客文章<Spring Boot中使用RabbitMQ>,在此向原作者表示感谢. Mac 上 ...

  6. windows连接ubuntu服务器方式

    如图,打开cmd, 输入 ssh imkow@www.dorian.vip 参数解析: ssh:secure shell的缩写 imknow  是用户名 www.dorian.vip 是域名,没有域名 ...

  7. Hive学习之路(三)Hive处理中文乱码

    Hive注释中文乱码 创建表的时候,comment说明字段包含中文,表成功创建之后,中文说明显示乱码 create external table movie( userID int comment ' ...

  8. JS各种变量是true或者false列表

    如果操作数是一个对象,返回true 如果操作数是一个空字符串,返回false如果操作数是一个非空字符串,返回true如果操作数是数值0,返回false如果操作数是任意非0数值(包括Infinity), ...

  9. Python3.5自带venv创建虚拟环境

    为每个程序单独创建虚拟环境可以保证程序只能访问虚拟环境中的包,保持全局解释器的干净整洁,使其只作为创建(更多)虚拟环境的源. windows下创建虚拟环境 Python3.5自带venv,只需执行py ...

  10. 什么时候需要用的Vue.nextTick()

    什么时候需要用的Vue.nextTick() 你在Vue生命周期的created()钩子函数进行的DOM操作一定要放在Vue.nextTick()的回调函数中.原因是什么呢,原因是在created() ...