JavaWeb基础Day17 (JSP EL表达式 jstl标签库 beanutil工具类)
JSP
jsp的实质就是指在html界面中嵌入Java代码
jsp脚本
- <% Java代码 %> 相当于写在service方法中。
- <%=java 变量或者表达式 %> 相当于在service 内部写了 out.println
- <%! java代码 %> 实质上翻译成servlet ,出现在成员变量的位置
- <!-- 注释内容 -->,源码可见,编译后的Java文件可见,最终的html文件可见
- // 单行注释 /*多行注释*/ 源码可见,编译后的文件可见,最终的html文件不可见
jsp的运行原理
- jsp文件在第一次被访问时会被解析成servlet ,所以jsp的实质就是一个servlet类,将内部的html标签在servlet内部使用 response.getWrite.write() 的方式进行输出
jsp的指令
- page 指令
- language:jsp脚本中可以嵌入的语言种类
- pageEncoding:当前jsp文件的本身编码-----内部可以包含contentType
- contentType:response.setContentType("text/html;charset=UTF-8");
- import :导入Java的包
- errorPage:当前页面出错后跳转到设定的报错页面
- isErrorPage :当前页面是一个处理错误的页面,配置后可以获取异常信息
- include 指令,是包含文件的指令<%@ include file = "被包含的文件地址" %>
- taglib指令 : 用于导入标签库<%@ taglib uri = "标签库地址" prefix="前缀" %>
- page 指令
jsp九大内置对象
- pageContext jsp的页面容器
- session 当前会话对象
- application servlet 配置 , 获取servlet 信息
- config servlet 配置,获取servlet信息
- out 页面输出对象
- page 当前servlet对象
- request request对象
- response response对象
- exception jsp页面所发生的异常,在错误页中才起作用
pageContext对象
域对象
- pageContext域中放入数据,所以也是可以存放数据的
数据的写入,读取,删除
- 向pageContext域中放入数据 setAtrribute(String name , object obj);
- 从pageContext域中获取数据 getAttribute(String name);
- 从pageContext域中删除数据 removeAttribute (String name);
作用范围当前jsp文件
- 域对象的作用范围只在当前的jsp页面中,所以一般不适用这个域对象存放数据
指定向其他域中存取数据
- 向指定域中存放数据 setAttribute(String name ,object obj,int scope)
- 从指定域中获取数据 getAttribute (String name ,int scope)
- 从指定域中删除数据 removeAttrbute(String name,int scope)
依次从四大域中获取数据
- 依次从 pageContext , request , session , servletContext这四大域中获取数据,找到即停止 findAttribute(String name)
通过pageContext对象获取其他8大内置对象
- pageContext.getRequest();
- pageContext.getResopnse();
out对象
- 用于向指定页面输出语句,在jsp 被翻译后的文件中看到的 out.write(),在jsp中使用的<%="abc"%>使用的都是out对象,将数据写入呕吐、缓存区,然后再从out缓冲区刷入response 缓冲区
config对象
- 获取当前servlet的配置信息
exception对象
- 如果当前页面是一个errorpage ,就是再page指令的属性中的配置 isErrorPage = true ,通过这个对象可以获取异常信息<%=exception.getLocalizedMessage%>
404错误总结
1.已启动web应用里面的任何资源都是404
|-web应用是否已经部署
|-看localhost:8080,直接出不来,基本可以断定服务器 没有启动
|tomcat重新装,1,2,3,将磁盘中的tomcat删 除,重新解压新的tomcat,重新配
|- web.xml问题,导致web应用启动不起来,重新看控制 台找异常信息
2.一启动单个资源是404
|-如果是servlet,看web.xml中的url-pattern是否和 浏览器中的一致
|-如果是html,看文件名称,看这个html在不在webCont ent
3.界面能显示,一点击提交按钮404
|-看当前form中的action的路径,看是否是对应的servl et的url-pattern
|- 明明正确还是404,有可能是浏览器的缓存问题,在当前 网页右键查看源代码, 看路径是否和eclipse中一致,如果不一致,清除浏览 器缓存
4.图片不正常显示
|-在浏览器中点击右键查看源代码,看当前img的路径,是 否是正确的路径
|- 看你的img放的目录是否是在webContent中 以后凡是遇到写路径先写/,除了内部转发以外,其他的所有路径 都是从web应用的名字开始, 内部转发从/从webContent目录下开始
EL表达式
EL 表达式可以嵌入在jsp页面内部,在于简化从域中获取数据的操作
从域中获取值(重要)
获取四个域中的数据
- pageScope :能获取pageContext域中的数据
- requestScope :能获取request域中的数据 ${requestScope.key}
- sessionScope :能获取session域中的数据 ${sessionScope.key}
- applicationScope :能获取servletContext域中的数据${applicationScope.key}
- 依次从四个域中查找对应的值,如果存在就停止查找 ${key}
内置pageContext对象
- 最常用的方法就是通过EL获取应用程序的名称${pageContext.request.contextPath}
<form action="${pageContext.request.contextPat h}/check" method="post">
<input type="text" name="username">
<input type="password" name="pwd">
<input type="submit"> 篮球
<input type="checkbox" value="lq" name="hob by">足球
<input type="checkbox" value="zq" nam e="hobby">乒乓球
<input type="checkbox" value="pp q"name="hobby">
</form>
常用表达式
- ${name eq "张三"} 返回true 或者false, 比较字符串 ( == 是比较内存地址)
JSTL标签库
jstl常用标签
- c:url 路径标签 <a href="<c:url value="/index.jsp"/>"> 超链接</a> == <a href="${pageContext.request.contextPath}/index.jsp">超链接</a>
- c:if 判断标签 <c:if test="${1==1}"> 判断成功 </c:if>
- c:choose 多条件,判断标签
<c:choose>
<c:when test="${name == 1 }">
<h1 style="color: red;">判断正确了</h1>
</c:when> <c:when test="${name == 2 }">
</c:when> <c:when test="${name == 3 }">
</c:when> <c:otherwise>上述情况均不满足</c:otherwise>
</c:choose>
- c:forEach 循环遍历标签
- begin 表示开始索引
- end 表示结束索引
- step 表示频率
- varstatus 表示当前的状态
- index属性 表示循环当前的索引
- count属性表示循环的当前次数 从 1 开始
- items 表示遍历的集合元素
- var 表示每次将集合的元素赋值给的变量名
<c:forEach begin="0" end="100" step="1" varStat us="status">
<!--获取当前循环的索引值-->
${status.index }
<!--获取当前循环的次数-->
${status.count }
</c:forEach>
遍历集合
<c:forEach items="${list }" varStatus="status" var="item">
${status.index }:${item.name }
</c:forEach>- fmt:formatDate 格式化日期标签
- 需要导入fmt标签库 <%@ taglib prefix = "fmt" uri = " http://java.sun.com/jsp/jstl/fmt " %>
- <fmt:formatDate value="${user.updateTime}" type="both" pattern="MM-dd HH:mm"/>
BeanUtils工具类
- 在servlet中获取表单数据使用 Map<String, String[]> map= request.getParameterMap(); ,并创建对应的model对象 People pe = new People();调用DBUtils的 BeanUtils.populate(pe, map); 此方法会将表单数据封装到对应的pe的属性中
- 意BeanUtils会进行默认的数据类型封装,也就是说如果我们定义的成员变量的类型是int,BeanUtils会自动的将String转换为int类型,但是对于多选框 checkbox 类型的,我们必须将成员变量的类型定义为 String [] 否则就会出现转换异常,如果是在有需求是List类型,那么就需要我们自己进行转换
JavaWeb基础Day17 (JSP EL表达式 jstl标签库 beanutil工具类)的更多相关文章
- jsp学习---mvc模式介绍和el表达式,jstl标签库的使用入门
一.mvc模式介绍 下图是常用的mvc分层模式: 项目中的包命名规则,一般如下: com.amos.domain 封装JavaBean,一般我喜欢用model命名这个包com.amos.dao 封装d ...
- 2.EL表达式&JSTL标签库常用方法
1.EL表达式 Expression Language表达式语言,主要是代替jsp页面中的表达式脚本在jsp页面中进行数据的输出. 格式为${表达式} EL表达式输出Bean的普通属性.数组属性.Li ...
- 重温JSP学习笔记--JSTL标签库
以前写jsp的时候对jstl标签库是有些抵触的,因为我觉得嵌入java代码的方式几乎无往不利,没有必要使用标签库,不过这次复习还是好好地学习了一下,发现这个还是很有用处的,用得好能省不少事,JSTL是 ...
- javaweb学习总结(二十八)——JSTL标签库之核心标签
一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...
- javaWeb学习总结(9)- JSTL标签库之核心标签
一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...
- JavaWeb学习笔记(九)—— JSTL标签库
一.JSTL概述 1.1 什么是JSTL JSTL是apache对EL表达式的扩展(也就是说JSTL依赖EL),JSTL是标签语言!JSTL标签使用以来非常方便,它与JSP动作标签一样,只不过它不是 ...
- jsp之el表达式jstl标签
不管是el表达式还是jstl标签最终的目的都是要消除jsp中的java代码,当然是消除显式的java代码 el表达式的出现是为了简化jsp中读取数据并写入页面的操作. el表达式的功能不多,也很好记 ...
- JSP总结(jsp/EL表达式/核心标签)
1.概念 jsp,即java Server Pages,java服务器页面. 2.简单介绍 小示例 <%@ page language="java" contentType= ...
- el和jstl标签库讲解视频
https://www.bilibili.com/video/av22415283/?p=1
随机推荐
- 小烈送菜——奇怪的dp
小烈送菜 题目描述 小烈一下碰碰车就被乐满地的工作人员抓住了.作为扰乱秩序的惩罚,小烈必须去乐满地里的"漓江村"饭店端盘子. 服务员的工作很繁忙.他们要上菜,同时要使顾客们尽量高兴 ...
- day59 django初识
目录 一.借助wsgiref模块实现简易版web框架 二.动静态页面 三.python三大主流web框架 四.启动一个django项目 1 启动前的注意事项 1.1 计算机的问题 1.2 django ...
- 午间邂逅 | post 和 get 的兄弟情深
前言 本文已经收录到我的 Github 个人博客,欢迎大佬们光临寒舍: 我的 Github 博客 学习导图: image-20200710142453734 image-202007101431049 ...
- JVM 专题二:虚拟机(二)Java虚拟机
2.1 什么是Java虚拟机? Java虚拟机是一台执行字节码的虚拟计算机,它拥有独立的运行机制,其运行的Java字节码也未必由Java语言编译而成. JVM平台的各种语言可以共享Java虚拟机带来的 ...
- JavaScript之setinterval的具体使用
关于setInterval在api文档中也有很详细的解释,比如下面那两个: setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式. setInterval() 方法会不停 ...
- Django框架06 /orm多表操作
Django框架06 /orm多表操作 目录 Django框架06 /orm多表操作 1. admin相关操作 2. 创建模型 3. 增加 4. 删除 5. 修改 6. 基于对象的跨表查询 7. 基于 ...
- 重装win7时遇到点小问题
最近装系统的时候有个头疼的事,事情的起因是这样的,我在工作的时候用的win7,破解的时候各种工具都破解不了,说是有未分配的盘符.并且,当时装的是没更新的win7,工作上要用到ie11只能在w ...
- Apache Avro & Avro Schema简介
为什么需要schema registry? 首先我们知道: Kafka将字节作为输入并发布 没有数据验证 但是: 如果Producer发送了bad data怎么办? 如果字段被重命名怎么办? 如果数据 ...
- OSCP Learning Notes - WebApp Exploitation(2)
Cross-Site Scripting(XSS) 1. Using the tool - netdiscover to find the IP of target server. netdiscov ...
- iview实战 : 全屏去头去尾的弹窗
<template> <Button @click="modal3 = true" >No title bar</Button> <Mod ...