1 Jsp基础回顾

Jsp基础

1)Jsp的执行过程

tomcat服务器完成:jsp文件->翻译成java文件->编译成class字节码文件-> 构造类对象-> 调用方法

tomcat的work目录下存放jsp运行时的临时文件!!

2)Jsp语法:

1)jsp表达式:<%=变量或表达式%> 向浏览器输出变量或表达式计算的结果

2)jsp脚本: <% java代码 %> 执行java代码  原理:翻译到_jspService()方法中

3)jsp声明: <%! 变量或方法 %> 声明jsp的成员变量或成员方法

4)jsp注释: <%!-- jsp注释 --%> 用于注释jsp代码,不会翻译到java文件中,也不会执行。

3)jsp的三大指令

3.1 include指令:用于包含其他页面。原理:先合并再翻译,叫静态包含

3.2 page指令:告诉tomcat服务器如何把jsp文件翻译成java文件

language: 翻译的动态语言。

import: 类导入

jsp文件编码问题:

pageEncoding: 告诉tomcat服务器使用什么编码翻译jsp文件(jsp->java文件)

contentType: tomcat服务器发送给浏览器的数据编码(tomcat服务器->浏览器)

异常错误相关的:

errorPage:  指定当前jsp页面的错误处理页面。

isErorrPage:  指定当前页面是否为错误处理页面。false,不是错误处理页面,则不能使用                                                                                exception内置对象;true,是错误处理页面,可以使用exception内置对象。

配置全局的错误处理页面:

<!-- 全局错误处理页面配置 -->

<error-page>

<error-code>500</error-code>

<location>/common/500.jsp</location>

</error-page>

<error-page>

<error-code>404</error-code>

<location>/common/404.html</location>

</error-page>

session:  是否开启session功能。false,不能用session内置对象;true,可以使用session内                                                                           置对象。

buffer:  jsp页面的缓存区大小。

isELIgnore: 是否忽略EL表达式。

2 Jsp的内置对象(重点)

2.1 什么是内置对象?

在jsp开发中,会频繁使用到一些对象

。例如HttpSession,ServletContext,ServletContext,HttpServletRequet。如果我们每次要使用这些对象都去创建这些对象就显示非常麻烦。所以Sun公司设计Jsp时,在jsp页面加载完毕之后就会自动帮开发者创建好这些对象,而开发者只需要直接使用这些对象调用方法即可!,这些创建好的对象就叫内置对象!!!!

举例:

servlet:

HttpSession session = request.getSession(true); (需要开发者做)

jsp:

tomcat服务器:       HttpSession session = request.getSession(true);(不需要开发者做)

开发者做的: session.getId();

2.2 9大内置对象

内置对象名          类型

request            HttpServletRequest

response      HttpServletResponse

config        ServletConfig

application        ServletContext

session         HttpSession

exception        Throwable

page            Object(this)

out             JspWriter

pageContext     PageContext

2.3 Out对象

out对象类型,JspWriter类,相当于带缓存的PrintWriter

PrintWriter:

wrier(内容): 直接向浏览器写出内容。

JspWriter

writer(内容): 向jsp缓冲区写出内容

当满足以下条件之一,缓冲区内容写出:

1)缓冲区满了

2)刷新缓存区

3)关闭缓存区

4)执行完毕jsp页面

2.4 pageContext对象

pageContext对象的类型是PageContext,叫jsp的上下文对象

1)可以获取其他八个内置对象

public class 01_hello_jsp {

public void _jspService(request,response){

创建内置对象

HttpSession session =....;

ServletConfig config = ....;

把8个经常使用的内置对象封装到PageContext对象中

PageContext pageContext  = 封装;

调用method1方法

method1(pageContext);

}

public void method1(PageContext pageContext){

希望使用内置对象

从PageContext对象中获取其他8个内置对象

JspWriter out =pageContext.getOut();

HttpServletRequest rquest =      pageContext.getRequest();

........

}

}

使用场景: 在自定义标签的时候,PageContext对象频繁使用到!!!

2)本身是一个域对象

ServletContext context域

HttpServletRequet  request域

HttpSession    session域     --Servlet学习的

PageContext   page域           --jsp学习的

作用: 保存数据和获取数据,用于共享数据

#保存数据

1)默认情况下,保存到page域

pageContext.setAttribute("name");

2)可以向四个域对象保存数据

pageContext.setAttribute("name",域范围常量)

#获取数据

1)默认情况下,从page域获取

pageContext.getAttribute("name")

2)可以从四个域中获取数据

pageContext.getAttribute("name",域范围常量)

域范围常量:

PageContext.PAGE_SCOPE

PageContext.REQUEST_SCOPE

PageContext..SESSION_SCOPE

PageContext.APPLICATION_SCOPE

3)自动在四个域中搜索数据

pageContext.findAttribute("name");

顺序: page域 -> request域 -> session域- > context域(application域)

3 Jsp中的四个域对象

四个域对象:

pageContext      page域

request          request域

session          session域

application       context域

1)域对象作用:

保存数据  和 获取数据 ,用于数据共享。

2)域对象方法:

setAttribute("name",Object) 保存数据

getAttribute("name")  获取数据

removeAttribute("name") 清除数据

3)域对象作用范围:

page域: 只能在当前jsp页面中使用(当前页面)

request域: 只能在同一个请求中使用(转发)

session域: 只能在同一个会话(session对象)中使用(私有的)

context域: 只能在同一个web应用中使用。(全局的)

4 Jsp的最佳实践

Servlet技术: 开发动态资源。是一个java类,最擅长写java代码

jsp技术: 开发动态资源。通过java代码最擅长输出html代码。

各取所长:

在web项目中涉及到逻辑:

1)接收参数      servlet做

2)处理业务逻辑,返回结果    servlet做

3)显示数据到浏览器      jsp做

4)跳转到其他页面        servlet做

servlet+jsp模式

servlet:

1)接收参数

2)处理业务逻辑

3)把结果保存到域对象中

4)跳转到jsp页面

Jsp:

1)从域对象取出数据

2)把数据显示到浏览器

servlet的数据    ->   jsp页面

List<Contact>    使用域对象 共享数据

5 EL表达式

5.1 EL作用

jsp的核心语法: jsp表达式 <%=%>和 jsp脚本<%  %>。

以后开发jsp的原则: 尽量在jsp页面中少写甚至不写java代码。

使用EL表达式替换掉jsp表达式

 

                     EL表达式作用: 向浏览器输出域对象中的变量值或表达式计算的结果!!!

 

                     语法: ${变量或表达式}

          

5.2 EL语法

1)输出基本数据类型变量

1.1 从四个域获取

${name}

1.2 指定域获取

${pageScope.name}

域范围: pageScoep / requestScope / sessionScope / applicationScope

2)输出对象的属性值

Student

3)输出集合对象

List  和 Map

4)EL表达式计算

6 jsp标签

6.1 jsp标签的作用

jsp标签作用:替换jsp脚本。

1)流程判断(if   for循环)

2)跳转页面(转发,重定向)

3)。。。。。

6.2 Jsp标签分类

1)内置标签(动作标签): 不需要在jsp页面导入标签

2)jstl标签: 需要在jsp页面中导入标签

3)自定义标签 : 开发者自行定义,需要在jsp页面导入标签

6.3 动作标签

转发标签:       <jsp:forward />

参数标签:  <jsp:pararm/>

包含标签:  <jsp:include/>

原理: 包含与被包含的页面先各自翻译成java源文件,然后再运行时合并在一起。

(先翻译再合并),动态包含

静态包含  vs  动态包含的区别?

1) 语法不同

静态包含语法: <%@inclue file="被包含的页面"%>

动态包含语法: <jsp:include page="被包含的页面">

2)参数传递不同

静态包含不能向被包含页面传递参数

动态包含可以向被包含页面传递参数

3)原理不同

静态包含: 先合并再翻译

动态包含: 先翻译再合并

6.4 JSTL标签

JSTL (全名:java  standard  tag  libarary   -  java标准标签库  )

核心标签库 (c标签库) 天天用

                                国际化标签(fmt标签库)

                                EL函数库(fn函数库)

xml标签库(x标签库)

sql标签库(sql标签库)

6.5 使用JSTL标签步骤

1) 导入jstl支持的jar包(标签背后隐藏的java代码)

注意:使用javaee5.0的项目自动导入jstl支持jar包

2)使用taglib指令导入标签库

<%@taglib uri="tld文件的uri名称" prefix="简写" %>

3)在jsp中使用标签

核心标签库的重点标签:

保存数据:

<c:set></c:set>

获取数据:

<c:out value=""></c:out>

单条件判断

<c:if test=""></c:if>

多条件判断

<c:choose></c:choose>

<c:when test=""></c:when>

<c:otherwise></c:otherwise>

循环数据

<c:forEach></c:forEach>

<c:forTokens items="" delims=""></c:forTokens>

重定向

<c:redirect></c:redirect>

11、Jsp加强/EL表达式/jsp标签的更多相关文章

  1. jsp之el表达式jstl标签

    不管是el表达式还是jstl标签最终的目的都是要消除jsp中的java代码,当然是消除显式的java代码 el表达式的出现是为了简化jsp中读取数据并写入页面的操作. el表达式的功能不多,也很好记 ...

  2. 超全面的JavaWeb笔记day12<Jsp&JavaBean&El表达式>

    1.JSP三大指令 page include taglib 2.9个内置对象 out page pageContext request response session application exc ...

  3. JSP基础--EL表达式

    EL(表达式语言) 1 EL概述 1.1 EL的作用 JSP2.0要把html和css分离.要把html和javascript分离.要把Java脚本替换成标签.标签的好处是非Java人员都可以使用. ...

  4. JSP的EL表达式语言

    以下内容引用自http://wiki.jikexueyuan.com/project/jsp/expression-language.html: JSP表达式语言(EL)可以方便地访问存储在JavaB ...

  5. MVC实现登录,增删改查之数据展示:JSP的EL表达式(二)

    这里的数据展示利用jsp的EL表达式,后台放入session,前台EL获取 数据库设计是这样的,一个老师对应有多个学生,在学生表student中建立外键tid与老师表teacher的tid对应,现在老 ...

  6. EL表达式jsp页面double小数点后保留两位

    EL表达式jsp页面double小数点后保留两位,四舍五入 <fmt:formatNumber type="number" value="${member.logi ...

  7. JSP、EL表达式的入门(要用)

    2018-08-12   22:55:23 * JSP.EL表达式的入门(要用)    * Servlet/JSP  是两种动态的WEB资源的两种技术.   * 使用Servlet 生成HTML的页面 ...

  8. jsp中EL表达式不起作用的问题

    jsp中EL表达式不起作用的问题 进行springmvc的@ExceptioinHandler调试,竟然是el表达式的问题, 学习了:http://blog.csdn.net/wolf_soul/ar ...

  9. jsp学习---mvc模式介绍和el表达式,jstl标签库的使用入门

    一.mvc模式介绍 下图是常用的mvc分层模式: 项目中的包命名规则,一般如下: com.amos.domain 封装JavaBean,一般我喜欢用model命名这个包com.amos.dao 封装d ...

随机推荐

  1. python_列表

    1.  列表的定义 (1) 用[]包含的元素,就是列表 (2)可以用list函数定义列表 2.  基本的列表操作(可参考示例) (1)元素赋值 (2)删除元素 (3)分片赋值 3. 列表方法 (1) ...

  2. linux 设置网卡

    配置网卡 修改/etc/sysconfig/network-scripts/ifcfg-eth0文件,如果有多张网卡,则修改相应的网卡 # vim /etc/sysconfig/network-scr ...

  3. 轻量级的jquery

    话不多说,直接上源代码 一.tool.js 封装一些共用方法,以及相关的浏览器兼容细节,供Base.js调用 //浏览器检测,一旦加载即执行 (function() { window.sys = {} ...

  4. 使用HttpClient抓取网站首页

    HttpClient是Apache开发的第三方Java库,可以用来进行网络爬虫的开发,相关API的可以在http://hc.apache.org/httpcomponents-client-ga/ht ...

  5. autorelease基本概念

    // //  main.m //  01-autorelease基本概念 // //  Created by apple on 14-3-18. //  Copyright (c) 2014年 app ...

  6. Linux bash运维操作日志审计(单服务器)

    目前公司有几台机器比较重要,需要把所有用户的操作记录下来,于是就是参照资料来完成 1. vim /etc/profile.d/oplogrc.sh logdir=/opt/oplog userdir= ...

  7. Leetcode: Flatten Nested List Iterator

    Given a nested list of integers, implement an iterator to flatten it. Each element is either an inte ...

  8. php setcookie(name, value, expires, path, domain, secure) 参数详解

    setcookie() 定义一个和其余的 HTTP 标头一起发送的 cookie.和其它标头一样,cookie 必须在脚本的任何其它输出之前发送(这是协议限制).这 需要将本函数的调用放到任何输出之前 ...

  9. linux for java programer

    http://www.kancloud.cn/digest/javaxviii/126781 .查找文件 find / -name filename.txt根据名称查找/目录下的filename.tx ...

  10. 浅谈html语义化标签,Html5新增语义化标签

    Html语义化标签,Html5新增语义化标签 自己在学习的期间,整理了下html关于语义化标签的一些知识,列的不是很全. 希望大家有新的见解可以给我留言,我会补充上去,谢谢大家 1.什么是语义化标签? ...