java-servlet-EL表达式和java标签
1 Servlet线程安全问题
1st. 为什么说servlet会有线程安全问题?
- 容器默认情况下,对于某个servlet,只会创建一个实例.
- 容器收到一个请求,就会启动一个线程来处理请求.这样,就有可能有多个线程同时调用同一个servlet实例,就有可能产生线程安全问题(比如,多个线程同时修改某个属性);
2nd. 如何解决?
- 使用synchronized对线程安全问题代码进行加锁;注:会影响性能.
- 尽量避免写有线程安全的代码,比如,不要修改属性.
2
Jsp基础
1st.
Jsp是什么?
本质就是一个servlet
2nd.
如何写jsp?
- Html直接写
- Java代码(java脚本)
I)
<% %>
II)
<%=
%>
III)
Jsp声明(a1.jsp)
<&! 变量或者方法 &>
声明以后可以直接在代码片段中使用
- 指令
I)
什么是指令?
告诉容器执行的一些配置
II)
Page指令
i.
Import属性:导包
ii.
Pageencoding属性:设置编码集
iii.
Contenttype属性:设置输出属性编码集
iv.
Session属性:true(默认)/false 当值为false时,不能够直接使用session隐含对象了.(a2.jsp)
v.
Errorpage属性:指定一个异常处理页面,当异常发生后,容器会调用异常处理页面.(a3.jsp)
vi.
Iserrorpage属性:true/false(默认) 当值为true的时候,表示这是一个异常处理页面,可以使用exeception隐含对象.(a4.jsp)
III)
Incloud指令
i.
File属性:包含的文件
IV)
Taglib指令
i.
用于导入jsp标签.
- 隐含对象
I)
什么是隐含对象…可以直接使用的对象
II)
为什么可以直接使用
III)
有哪些隐含对象
out,request,response,session,application,
exeception,异常处理对象,只能在异常处理界面使用
pagecontext(a6.jsp a7.jsp)
- 容器会为每一个jsp实例创建一个唯一的符合pagecontext接口要求对象
特点:
a)
唯一性:jsp实例对应一个pagecontext
b)
持久性:只要jsp实例存在,pagecontext就在(不会销毁)
- 作用:
a)
绑定数据 注:绑定在pagecontext上的数据只有对应的jsp可以访问
b)
获取其他所有隐含对象.
config(a5.jsp)
servletconfig(jsp也可以设置配置信息并获取到)
page(从来不使用)jsp实例, 注:jsp先转化成servlet,然后容器将这个servlet实例化.
- 注释
I)
<!—注释内容 -->z注释内容是java代码会执行,但是因为外面是html注释,所以不会将时间显示到界面上
II)
<%-- 注释内容 --%>注释内容是java代码不会执行,在这个注释中不论是不是java代码都不会执行.
3
Jsp如何执行的?
a)
将jsp转换为一个servlet类
htmlàservice方法,使用out输出
<% %>à照搬
<%= %>àout输出
<&! 变量或者方法 &> 添加新的属性或者方法
b)
调用servlet
4
Jsp标签和El表达式
1st.
什么是jsp标签?
jsp标签类似于html标签,用于替代jsp中的java代码.
注:因为直接在jsp中写java代码,不方便jsp文件的维护,比如讲jsp文件交给美工修改就很不方便,所以sun制定了jsp标签技术规范.
2nd.
什么是el表达式?
是一套简单的运算规则,用于给jsp标签的属性赋值,也可以脱离标签直接使用.
3rd.
El表达式的基本使用
- 访问bean的属性(e1.jsp)
I)
${user.name} 容器依次从pagecontext,request,session,application中查找绑定名为user的对象.接下来会调用这个对象的gername方法并输出该方法的结果.
注:如果找不到对应的对象,会输出””.
会将null转换为””输出.
可以使用pageScope,requestScope,sessionScope,applicationScope指定查找范围.
II)
${user[‘name’]}
注:
- []里可以使用绑定名
- []里面可以使用从0开始的下标,用于访问数组的某个元素.
- 运行一些简单的运算.
注:运算结果可以直接输出也可以给属性赋值.- 算数运算:+-*/% 注:+只能求和.
- 关系运算 <
<= = > >= == !=; - 逻辑运算 &&
|| ! - 空运算 empty 判断是否为空是不是一个空字符串.找不到绑定也是true.
- 读取请求参数值(e3.jsp)
- ${param.name}
等价于 request.getParameter(string name) - ${paramValues.city}
等价于request.getParameterValues(‘city’)
- ${param.name}
4th.
Jsp标签 jstl (java
standard tag lib)àjava标准标签库
- Jstl是什么?
Apache开发的一套jsp标签,后来捐献给sun,sun将其命名为jstl - 如何使用jspl?
- 导包
- 使用指令taglib导入要使用的jsp标签.
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"
prefix="c" %>
uri属性:指定要导入的标签的命名空间(命名空间”namesoace”是为了区分同名的元素在元素前面添加的一个限定,通常是一个域名)
prefix属性:前缀,命名空间的别名.
- 几个核心标签
I)
If标签
i.
<c:if
test=””>
<c:if>
当test属性值为true,容器执行标签体的内容.可以使用el表达式给test赋值,
var属性:指定一个绑定名
scope属性:指定绑定范围,page
request session application
ii.
Choose标签(c2.jsp)
<c:choose>
<c:when test=””>
<c:otherwise>
<c:otherwise>
</c:choose>
when可以出现1次 otherwise可以出现0到1次
iii.
ForEach标签(c3.jsp)
<c:forEach items=”” var=”” varStatus=””></c:forEach>
java-servlet-EL表达式和java标签的更多相关文章
- JAVA WEB EL表达式注入
看猪猪侠以前的洞,顺便总结下: 一.EL表达式简介 EL 全名为Expression Language.EL主要作用: 1.获取数据 EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的we ...
- 杂项-Java:EL表达式
ylbtech-杂项-Java:EL表达式 EL(Expression Language) 是为了使JSP写起来更加简单.表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提 ...
- JavaWeb(七)Cookie,EL表达式,标准标签库
Cookie Cookie概述 Cookie译为小型文本文件或小甜饼,Web应用程序利用Cookie在客户端缓存服务器端文件.Cookie是以键值对形式存储在客户端主机硬盘中,由服务器端发送给客户端, ...
- JSP、EL表达式、JSTL标签库干货(建议收藏)
JSP(Java Server Pages)类似于ASP技术,它是在传统的网页HTML文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件, ...
- 在EL表达式或者Struts标签库中格式化日期对象,即将Date转换为yyyy-MM-dd格式
一.EL表达式 首先,在jsp页面引入<fmt> tags,<%@ taglib prefix="fmt" uri="http://java.sun.c ...
- jsp EL表达式和JSTL标签if-else if-else用法
java web javaEE ,jsp EL表达式和JSTL标签if-else if-else四种用法一.条件运算符 ${user.gender==?'男':'女'} 二.if() <c:if ...
- EL表达式、JSTL标签库
一.EL(Expression Language)表达式 语法结构:${var} 若要停用对EL表达式的评估的话,需要使用page指令将isELIgnored属性值设为true: <%@ pag ...
- (十)EL表达式和JSTL标签快速入门
目录 什么是 el 表达式 示例:使用EL表达式获取pageContext .request.session.application域中的数据: 示例:使用EL表达式获取Bean属性 获取当前WEB应 ...
- Java实战之04JavaWeb-04JSP、EL表达式、JSTL标签库
一.jsp部分 只要是与页面显示相关的都是重点 1.jsp的脚本 <%java代码%>:被翻译到service方法内部,局部变量,局部的功能 <%=表达式或变量%>:翻译成se ...
- Java第三阶段学习(十四、JSP动态页面、EL表达式、JSTL标签库)
一.JSP技术 1.jsp脚本和注释 jap脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部,比如写在doget.dopost 内的代码 2) ...
随机推荐
- netty系列之:我有一个可扩展的Enum你要不要看一下?
目录 简介 enum和Enum netty中可扩展的Enum:ConstantPool 使用ConstantPool 总结 简介 很多人都用过java中的枚举,枚举是JAVA 1.5中引用的一个新的类 ...
- Java 多线程共享模型之管程(上)
主线程与守护线程 默认情况下,Java 进程需要等待所有线程都运行结束,才会结束.有一种特殊的线程叫做守护线程,只要其它非守护线程运行结束了,即使守护线程的代码没有执行完,也会强制结束. packag ...
- 如何使用lerna进行多包(package)管理
为什么要用lerna 将大型代码仓库分割成多个独立版本化的 软件包(package)对于代码共享来说非常有用.但是,如果某些更改 跨越了多个代码仓库的话将变得很 麻烦 并且难以跟踪,并且, 跨越多个代 ...
- 全新升级的AOP框架Dora.Interception[3]: 基于特性标注的拦截器注册方式
在Dora.Interception(github地址,觉得不错不妨给一颗星)中按照约定方式定义的拦截器可以采用多种方式注册到目标方法上.本篇文章介绍最常用的基于"特性标注"的拦截 ...
- CAD图在线Web测量工具代码实现(测量距离、面积、角度等)
CAD如今在各个领域均得到了普遍的应用并大大提高了工程技术人员的工作效率.在桌面端,AutoCAD测量工具已经非常强大:然后在Web端,如何准确.快速的对CAD图在Web进行测量呢? 功能 能Web在 ...
- WPF开发随笔收录-仿安卓Toast
一.前言 在项目中,经常需要用到消息提醒功能,在以前接触安卓开发那会使用过Toast,于是打算在WPF上也来模仿一个,话不多说,撸起袖子干起来! 二.正文 1.首先新建一个工程,工程的目录如下 2.编 ...
- adb工具
ADB:全称为Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具. 首先,下载ADB工具并安装: 下载:百度就有.下载后是个压缩包,将其拷贝到cm ...
- vim插件pathogen的Helptags不起作用
如果你安装了中文vim帮助,并且在其中添加了自己的帮助文件,并且当你使用了pathogen的时候. 会发现Helptags不起作用. 原因是Helptags的实现没有考虑到中文的情况 解决办法如下: ...
- 【docker专栏2】CentOS操作系统安装DockerCE
目录 一.前置要求 二.更新软件源信息 三.安装 Docker-CE 四.卸载Docker CE 为大家介绍在CentOS操作系统中安装docker的过程,linux其他发行版本安装docker方法可 ...
- 安卓fastboot刷机、刷magisk、aidlux备忘
环境就不多说了,网上一堆教程,我只在这边简单记录一下,以小米手机为例 刷机 解锁bootloader PC上配置好adb.fastboot,也就是platform-tools工具包加入系统变量,在命令 ...