`

Jsp/Servlet复习笔记-----第8章 JSP表达式语言

阅读更多
8.1 表达式语言简介
JSP用于在网页上显示动态内容,通常需要在JSP页面中嵌入Java脚本以完成复杂功能。但是大量的Java脚本使得JSP页面难以维护。一种类似JavaScript语言—JSP表达式语言可用于在网页上生成动态内容,并代替JSP脚本元素。JSP表达式语言是从JSP2.0规范开始支持的技术。
8.2 禁用EL 表达式计算
8.3 变量
8.4 隐式对象
8.5 文字常量
8.6 运算符
8.7 保留字
8.8 表达式使用案例
   8.9 本章小结 

EL的主要功能:
精确的访问存储对象
Bean属性的简略记法
空值取代错误消息

之前代码:
<%
	pageContext.setAttribute("name","darkness");
%>
<%
	if(pageContext.getAttribute("name") != null)
	{
%>
		<%=pageContext.getAttribute("name")%>
<%
	}
%>

<!--可以发现,这样,代码较多-->
<%
	pageContext.setAttribute("name","darkness");
%>

${name}
使用表达式时不需要去判断属性是否为空
<!--如果在不同的属性范围中设置了同名的属性,则之后的同名属性无法找到-->
<!--按照四中标志位来寻找-->
<%
	pageContext.setAttribute("name","darkness");
	request.setAttribute("name","darkness");
%>
${name}

EL的主要功能在于MVC设计模式之中
后台:
package org.sky.darkness.servlet.el ;

import java.io.* ;
import javax.servlet.* ;
import javax.servlet.http.* ;

public class ELServletDemo01 extends HttpServlet
{
	public void doGet(HttpServletRequest req,HttpServletResponse resp) throws IOException,ServletException
	{
		req.setAttribute("name","www.sky.org") ;
		// 服务器端跳转
		req.getRequestDispatcher("eldemo03.jsp").forward(req,resp) ;
	}
	public void doPost(HttpServletRequest req,HttpServletResponse resp) throws IOException,ServletException
	{
		this.doGet(req,resp) ;
	}
};
/*
  <servlet>
	<servlet-name>el01</servlet-name>
	<servlet-class> org.sky.darkness.servlet.el.ELServletDemo01</servlet-class>
  </servlet>
  <servlet-mapping>
	<servlet-name>el01</servlet-name>
	<url-pattern>/eldemo/el_1</url-pattern>
  </servlet-mapping>
*/
后台:${name}


*访问Bean的属性 :
1、点号记法
${beanName.beanProperty}

2、数组记法

${beanName[“beanProperty”]}
package org.sky.darkness.servlet.el ;

import java.io.* ;
import javax.servlet.* ;
import javax.servlet.http.* ;

public class ELServletDemo02 extends HttpServlet
{
	public void doGet(HttpServletRequest req,HttpServletResponse resp) throws IOException,ServletException
	{
		Simple s = new Simple() ;
		s.setName("darkness") ;
		req.setAttribute("sim",s) ;
		// 服务器端跳转
		req.getRequestDispatcher("eldemo04.jsp").forward(req,resp) ;
	}
	public void doPost(HttpServletRequest req,HttpServletResponse resp) throws IOException,ServletException
	{
		this.doGet(req,resp) ;
	}
};
/*
  <servlet>
	<servlet-name>el02</servlet-name>
	<servlet-class> org.sky.darkness.servlet.el.ELServletDemo02</servlet-class>
  </servlet>
  <servlet-mapping>
	<servlet-name>el02</servlet-name>
	<url-pattern>/eldemo/el_2</url-pattern>
  </servlet-mapping>
*/
	
package org.sky.darkness.servlet.el ;

public class Simple
{
	private String name ;
	public void setName(String name)
	{
		this.name = name ;
	}
	public String getName()
	{
		return this.name ;
	}
};

如果保存的是一个对象,则在 JSP页面中要写以下代码:
<%@ page import=”org.sky.darkness.servlet.el.*”%>
<%
If(request.getAttribute(“sim”) != null){
    Simple  simp = (Simple)request.getAttribute(“sim”);
%>
        <%=simp.getName()%>
<%
    }
%>
<h1>${sim.name}</h1>
嵌套调用: ${ emp.name.firstName }
package org.sky.darkness.servlet.el ;

public class NameBean
{
	private String firstName ;
	private String lastName ;

	public void setFirstName(String firstName)
	{
		this.firstName = firstName ;
	}
	public void setLastName(String lastName)
	{
		this.lastName = lastName ;
	}
	public String getFirstName()
	{
		return this.firstName ;
	}
	public String getLastName()
	{
		return this.lastName ;
	}
};
package org.sky.darkness.servlet.el ;

public class EmployeeBean
{
	private NameBean name ;
	private CompanyBean company ;

	public void setName(NameBean name)
	{
		this.name = name ;
	}
	public void setCompany(CompanyBean company)
	{
		this.company = company ;
	}
	public NameBean getName()
	{
		return this.name ;
	}
	public CompanyBean getCompany()
	{
		return this.company ;
	}
};

package org.sky.darkness.servlet.el ;

public class CompanyBean
{
	private String companyName ;
	private String business ;
	
	public void setCompanyName(String companyName)
	{
		this.companyName = companyName ;
	}
	public void setBusiness(String business)
	{
		this.business = business ;
	}
	public String getCompanyName()
	{
		return this.companyName ;
	}
	public String getBusiness()
	{
		return this.business ;
	}
};

package org.sky.darkness.servlet.el ;

import java.io.* ;
import javax.servlet.* ;
import javax.servlet.http.* ;

public class ELServletDemo03 extends HttpServlet
{
	public void doGet(HttpServletRequest req,HttpServletResponse resp) throws IOException,ServletException
	{
		NameBean nb = new NameBean() ;
		nb.setFirstName("darkness") ;
		nb.setLastName("depravedAngel") ;
		
		CompanyBean cb = new CompanyBean() ;
		cb.setCompanyName("www.sky.org") ;
		cb.setBusiness("JAVA EE、JAVA SE、JAVA ME") ;

		EmployeeBean eb = new EmployeeBean() ;
		eb.setName(nb) ;
		eb.setCompany(cb) ;

		// 保存属性
		req.setAttribute("emp",eb) ;

		// 服务器端跳转
		req.getRequestDispatcher("eldemo05.jsp").forward(req,resp) ;
	}
	public void doPost(HttpServletRequest req,HttpServletResponse resp) throws IOException,ServletException
	{
		this.doGet(req,resp) ;
	}
};
/*
  <servlet>
	<servlet-name>el03</servlet-name>
	<servlet-class> org.sky.darkness.servlet.el.ELServletDemo03</servlet-class>
  </servlet>
  <servlet-mapping>
	<servlet-name>el03</servlet-name>
	<url-pattern>/eldemo/el_3</url-pattern>
  </servlet-mapping>
*/

<h1>FirstName:${emp.name.firstName}</h1>
<h1>LastName:${emp.name.lastName}</h1>
<h1>CompanyName:${emp.company.companyName}</h1>
<h1>Business:${emp.company.business}</h1>



访问集合操作:
package org.sky.darkness.servlet.el ;

import java.io.* ;
import java.util.* ;
import javax.servlet.* ;
import javax.servlet.http.* ;

public class ELServletDemo04 extends HttpServlet
{
	public void doGet(HttpServletRequest req,HttpServletResponse resp) throws IOException,ServletException
	{
		List l = new ArrayList() ;
		Simple s = null ;
		s = new Simple() ;
		s.setName("darkness") ;
		l.add(s) ;

		s = new Simple() ;
		s.setName("wind") ;
		l.add(s) ;

		s = new Simple() ;
		s.setName("cloud") ;
		l.add(s) ;

		req.setAttribute("all",l) ;
		// 服务器端跳转
		req.getRequestDispatcher("eldemo06.jsp").forward(req,resp) ;
	}
	public void doPost(HttpServletRequest req,HttpServletResponse resp) throws IOException,ServletException
	{
		this.doGet(req,resp) ;
	}
};
/*
  <servlet>
	<servlet-name>el02</servlet-name>
	<servlet-class> org.sky.darkness.servlet.el.ELServletDemo02</servlet-class>
  </servlet>
  <servlet-mapping>
	<servlet-name>el02</servlet-name>
	<url-pattern>/eldemo/el_2</url-pattern>
  </servlet-mapping>
*/
<%@page import="java.util.*"%>
<%--
	要使用Iterator进行输出
--%>
<%
	// List要使用Iterator输出
	List l = (List)request.getAttribute("all") ;
	Iterator iter = l.iterator() ;
	while(iter.hasNext())
	{
		// 将取出的对象放在page范围之中
		pageContext.setAttribute("sim",iter.next()) ;
%>
            //调用隐式对象
		<h1>${pageScope.sim.name}</h1>
<%
	}
%>

分享到:
评论

相关推荐

    jsp/servlet个人学习笔记

    **JSP(JavaServer Pages)/Servlet 知识详解** JSP 和 Servlet 是 Java Web 开发中的核心组件,它们在构建动态网站时起着至关重要的作用。以下是对这两个技术及其相关概念的详细解释: 1. **JSP 基础** JSP 是一...

    林学良Jsp&Servlet学习笔记

    **JSP(Java Server Pages)与Servlet是Java Web开发中的两个核心技术,它们在构建动态网页和处理客户端请求方面起着至关重要的作用。** **JSP技术:** JSP是一种服务器端脚本语言,用于创建动态网页。它允许开发者...

    [JSP&Servlet;学习笔记(第2版)]

    **JSP(Java Server Pages)与Servlet...这个**[JSP&Servlet学习笔记(第2版)]**会涵盖这些主题,并可能包括示例代码、最佳实践和常见问题解答,帮助读者全面掌握JSP和Servlet的使用技巧,进一步提升Java Web开发能力。

    JSP&Servlet学习笔记.pdf

    在学习JSP和Servlet时,经常会涉及到一些重要的概念和知识点,例如:会话管理(session管理)、请求分发(request dispatcher)、过滤器(filter)、监听器(listener)、JSP标准标签库(JSTL)以及表达式语言(EL)...

    Jsp&Servlet学习笔记中的完整范例Gossip

    **JSP(JavaServer Pages)与Servlet是Java Web开发中两个关键的技术,它们在Web应用程序中扮演着重要的角色。** **JSP** 是一种动态网页技术,它允许开发者在HTML页面中嵌入Java代码,使得网页具有动态生成的能力...

    JSP Servlet 学习笔记源码

    本学习笔记源码提供了全面的学习资源,涵盖了这两个技术的基础到高级应用,旨在帮助开发者深入理解并熟练掌握JSP和Servlet。 1. **JSP基础**: JSP是一种服务器端的脚本语言,它将HTML、CSS、JavaScript与Java代码...

    JSP&Servlet学习笔记(第2版)_打印版

    根据提供的文件信息,标题为“JSP&Servlet学习笔记(第2版)_打印版”,描述指出文档经过空白边裁剪处理以便于打印。虽然提供的部分内文无法直接转化为明确的知识点,但我们可以根据标题和描述推测该文档的主要内容,...

    jsp&servlet;学习笔记_第2版_光盘(看评论酌情下载)

    **JSP(JavaServer Pages)与Servlet是Java Web开发中的两个核心技术,它们在构建动态Web应用程序方面发挥着关键作用。本篇文章将详细讲解这两个技术及其相互关系,以及如何通过学习笔记和提供的源码来深入理解它们...

    jsp-servlet笔记源码

    总的来说,这份"jsp-servlet笔记源码"提供了一个实用的学习资源,结合理论知识与实践代码,对于提升Java Web开发技能大有裨益。通过深入研究,开发者不仅可以熟练掌握JSP和Servlet的使用,还能提升对Web应用架构设计...

    JSP小笔记--对于JSP的一个总结

    这里允许在注释中嵌入JSP表达式,该表达式会被计算并显示在注释中。 - **隐藏的注释**:不会发送到客户端,仅存在于JSP源文件中,格式如下: ```jsp &lt;%--comment--%&gt; ``` 编译时,这部分注释会被忽略。 - *...

    Servlet &JSP学习笔记NetBeans源代码

    在这个"Servlet & JSP学习笔记NetBeans源代码"压缩包中,你将找到一系列与Servlet和JSP相关的示例代码,这些代码是基于NetBeans IDE编写的,并且是在Tomcat服务器上运行的。 Tomcat是一个开源的轻量级Web服务器和...

    《Jsp&Servlet学习笔记 第二版》源码

    源码中可能包含各种类型的JSP页面,如使用JSP表达式语言(EL)来简化页面数据绑定,使用JSP标签库(Tag Libraries)来实现自定义功能,或者利用JSP声明式编程来处理逻辑。 Servlet,则是Java Web应用中的服务器端...

    Jsp&servlet笔记

    ### JSP与Servlet知识点梳理 #### 一、Tomcat服务器安装与配置 - **Tomcat 1.7版本**:Tomcat是Apache软件基金会下属Jakarta项目中的一个开源的轻量级Web应用服务器,在中小型系统和并发访问用户不是特别多的场合...

    Jsp_Servlet学习课堂笔记

    **JSP(JavaServer Pages)和Servlet是Java Web开发中的两个核心技术,它们在构建动态Web应用程序方面发挥着关键作用。** **JSP技术**是一种服务器端脚本语言,用于生成HTML或XML等Web内容。JSP的核心概念包括: 1...

    JSP大学期末考试复习资料

    5. **EL(Expression Language)**:一种简洁的表达式语言,用于在JSP页面中获取和设置JavaBeans的属性。 6. **JSTL(JavaServer Pages Standard Tag Library)**:官方推荐的标准标签库,提供了多种处理任务的标签...

    韩顺平servlet和jsp课堂笔记

    【标题】:“韩顺平servlet和jsp课堂笔记”涵盖了Web开发中的两个核心技术——Servlet和JSP(JavaServer Pages)的学习资料。韩顺平是一位知名的IT教育专家,他的课程通常深入浅出,适合初学者入门及进阶者提升。 ...

    JavaEE复习笔记 _ HWY大佬1

    【JavaEE复习笔记】 在JavaEE开发中,Servlet是一个核心组件,它负责处理HTTP请求并生成响应。Servlet是一个Java接口,定义了Web应用程序中的服务端组件。`javax.servlet.Servlet`接口是所有Servlet的基础,而`...

    良葛格JspServlet学习笔记.pdf

    ### 良葛格JspServlet学习笔记 #### 一、引言 在现代Web开发领域,特别是Java EE平台中,JSP (JavaServer Pages) 和 Servlet 技术扮演着非常重要的角色。这两种技术共同构成了Java Web应用的基础,分别侧重于用户...

    韩顺平笔记 java jsp servlet

    "韩顺平servlet笔记(8讲)"可能讲解了Servlet生命周期、请求和响应对象、过滤器和监听器等核心概念。通过学习Servlet,你可以理解Web应用的后端逻辑,并能有效地处理用户请求。 这三者结合,构成了一套完整的Java ...

Global site tag (gtag.js) - Google Analytics