动态页面技术(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. CKeditor粘贴图片在IE下自动上传的研究

    我司需要做一个需求,就是使用富文本编辑器时,不要以上传附件的形式上传图片,而是以复制粘贴的形式上传图片. 在网上找了一下,有一个插件支持这个功能. WordPaster 安装方式如下: 直接使用Wor ...

  2. 2017ICPC沈阳网络赛 HDU 6205 -- card card card(最大子段和)

    card card card Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  3. pl/sql中return和exit区别

    经测试: 1.exit只能用于循环中,并且退出循环往下执行: 2.return可用于循环或非循环,并且退出整个程序模块不往下执行. declare i number :=1; j number :=1 ...

  4. svn 中的add 和commit命令有何区别

    add 功能:向文件拷贝所在的文件夹中添加新的文件,并作出标识,是新添加的,下一步提交时将一并提交到Subversion版本库中去.简单的说就是将一新文件加入svn,你添加再提交后该文件就进入subv ...

  5. leetcode 155. 最小栈(c++)

    设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈. push(x) -- 将元素 x 推入栈中.pop() -- 删除栈顶的元素.top() -- 获取栈顶元素.get ...

  6. python字符串常见操作

    字符串常见操作 如有字符串mystr = 'hello world itcast and itcastcpp',以下是常见的操作 <1>find 检测 str 是否包含在 mystr中,如 ...

  7. 理解jquery的$.extend()、$.fn.extend()【jQuery插件机制】

    /** * 操作数据 | DOM 操作 * @description jQuery类添加类方法,可以理解为添加静态方法,将一个或多个对象的内容合并到目标对象 * @use $.fn.zhang() | ...

  8. 《JAVA设计模式》之组合模式(Composite)

    在阎宏博士的<JAVA与模式>一书中开头是这样描述合成(Composite)模式的: 合成模式属于对象的结构模式,有时又叫做“部分——整体”模式.合成模式将对象组织到树结构中,可以用来描述 ...

  9. MYSQL学习笔记/2019

    以下内容均为转载,只是方便今后学习:如有不妥,请联系删除:特此感谢原博主精心制作!(文章底部贴有原文链接) /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ m ...

  10. UML类图及类之间关系

    1.UML基本介绍 UML:统一建模语言,是一种用于软件系统分析和设计的语言工具 2.UML图 UML图分类: 用例图 静态结构图:类图,对象图,包图,组件图,部署图 动态行为图:交互图,状态图,活动 ...