一、jsp的3个指令

JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。

在JSP 2.0规范中共定义了三个指令:

page指令

1、page:
作用:用于定义JSP页面的各种属性
属性:
1.1、 import 和java代码中的import是一样的

<%@ page import="java.util.Date,java.util.List"%>

或者:
<%@ page import="java.util.Date"%>

<%@ page import="java.util.List"%>

JSP会自动导入以下的包:

import java.lang.*;

import javax.servlet.*;

import javax.servlet.http.*;

import javax.servlet.jsp.*;

1.2、 session: 是否会自动创建session对象。默认值是true;

1.3、 buffer: JSP中有javax.servlet.jsp.JspWriter输出字符流。设置。输出数据的缓存大小,默认是8kb.

1.4 errorPage: 如果页面中有错误,则跳转到指定的资源。

errorPage="/uri" 如果写“/”则代表当前应用的目录下,绝对路径。

如果不写“/”则代表相对路径。

1.5、 isErrorPage: 是否创建throwable对象。默认是false;

1.6、 contextType: 等同于response.setContextType("text/html;charset=utf-8");

1.7、 pageEncoding: 告诉JSP引擎要翻译的文件使用的编码。

1.8、 isELIgnored: 是否支持EL表达式。 默认是false

<%@ page pageEncoding="gbk" %>

2、include:
静态包含:把其它资源包含到当前页面中。

<%@ include file="/include/header.jsp" %>

动态包含:

<jsp:include page="/include/header.jsp"></jsp:include>

两者的区别:翻译的时间段不同

前者:在翻译时就把两个文件合并

后者:不会合并文件,当代码执行到include时,才包含另一个文件的内容。

原则:能用静的就不用动的。

3、taglib

作用:在JSP页面中导入JSTL标签库。替换jsp中的java代码片段。

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

二、jsp的6个动作

使用标签的形式来表示一段java代码。

如: <jsp:include page="2.jsp"></jsp:include>

<jsp:include > 动态包含

<jsp:forward> 请求转发

<jsp:param> 设置请求参数

<jsp:useBean> 创建一个对象

<jsp:setProperty> 给指定的对象属性赋值

<jsp:getProperty> 取出指定对象的属性值

         <%
Student stu = new Student();
stu.setName("tom");
out.print(stu.getName());
//request.getRequestDispatcher("/7.jsp").forward(request, response);
%> <jsp:useBean id="stu1" class="com.itheima.entity.Student"></jsp:useBean>
<jsp:setProperty property="name" name="stu1" value="jerry"/>
<jsp:getProperty property="name" name="stu1"/>
<!-- http://localhost:8080/day11_02_jsp2/6.jsp?name=123 -->
<jsp:forward page="/7.jsp">
<jsp:param value="123" name="name"/>
<jsp:param value="333" name="pwd"/>
</jsp:forward>

三、jsp的9个内置对象(指在JSP的<%=%> 和<% %>中可以直接使用的对象

1.request

2.response

3.config

4.application

5.exception

6.Session

7.page

8.out

9.pageContext

1、本身也是一个域对象:它可以操作其它三个域对象(request session application)的数据

void setAttribute(String name,Object o);

Object getAttribute(String name);

void removeAttribute(String name);

操作其它域对象的方法

void setAttribute(String name,Object o,int Scope);

Object getAttribute(String name,int Scope);

void removeAttribute(String name,int Scope);

scpoe的值:

PageContext.PAGE_SCOPE

PageContext.REQUEST_SCOPE

PageContext.SESSION_SCOPE

PageContext.APPLICATION_SCOPE

findAttribute(String name); 自动从page request session application依次查找,找到了就取值,结束查找。

<body>
<%
//pageContext.setAttribute("p", "pp");
pageContext.setAttribute("p", "pp", PageContext.PAGE_SCOPE); //pageContext.setAttribute("p", "pp", PageContext.REQUEST_SCOPE);
request.setAttribute("p", "request"); //pageContext.setAttribute("p", "pp", PageContext.SESSION_SCOPE);
//session.setAttribute("p", "session"); //pageContext.setAttribute("p", "pp", PageContext.APPLICATION_SCOPE);
application.setAttribute("p", "application"); //request.getRequestDispatcher("/2.jsp").forward(request, response);
//response.sendRedirect(request.getContextPath()+"/2.jsp");
pageContext.forward("/2.jsp");
%>
</body>

  

<body>
<%
/* String p = (String)pageContext.getAttribute("p");
out.print(p); */
//out.print(request.getAttribute("p"));
%> <%-- <%=session.getAttribute("p") %> --%> <%-- <%=application.getAttribute("p") %> --%> <%=pageContext.findAttribute("p") %>
</body>

四、四大域对象:实际开发

PageContext : pageConext 存放的数据在当前页面有效。开发时使用较少。

ServletRequest: request 存放的数据在一次请求(转发)内有效。使用非常多。

HttpSession: session 存放的数据在一次会话中有效。使用的比较多。如:存放用户的登录信息,购物车功能。

ServletContext: application 存放的数据在整个应用范围内都有效。因为范围太大,应尽量少用。

五、EL表达式

1、EL概述和基本语法

EL表达式:expression language 表达式语言

要简化jsp中java代码开发。

它不是一种开发语言,是jsp中获取数据的一种规范

2、EL的具体功能

a、获取数据

EL表达式只能获取存在4个作用域中的数据

${u} 原理: pageContext.findAttribute("u");

url?name=tom ${param.name}

EL获取对于null这样的数据,在页面中表现为空字符串

${u.name} == u.getName()方法

点(.) 运算符相当于调了getter方法,点后页面跟的是属性名。

属性导航

[]运算符:点能做的,它也能做; 它能做的,点不一定能做

${student.name}== ${student['name']} == ${student["name"]}

b、运算

empty

判断null,空字符串和没有元素的集合(即使集合对象本身不为null)都返回true

三元运算符

c、隐式对象:11个

EL隐式对象引用名称 类型 JSP内置对象名称 说明

EL隐式对象引用名称

类型

JSP内置对象名称

说明

pageContext

javax.servlet.jsp.PageContext

pageContext

一样的

pageScope

java.util.Map<String,Object>

没有对应的

pageContext范围中存放的数据,页面范围

requestScope

java.util.Map<String,Object>

没有对应的

请求范围数据

sessionScope

java.util.Map<String,Object>

没有对应的

会话范围数据

applicationScope

java.util.Map<String,Object>

没有对应的

应用范围数据

param

java.util.Map<String,String>

没有对应的

一个请求参数

paramValues

java.util.Map<String,String[]>

没有对应的

重名请求参数

header

java.util.Map<String,String>

没有对应的

一个请求消息头

headerValues

java.util.Map<String,String[]>

没有对应的

重名请求消息头

initParam

java.util.Map<String,String>

没有对应的

web.xml中全局参数

cookie

java.util.Map<String,Cookie>

没有对应的

key:cookie对象的name值

${param.userName } 等价于${param.userName }==request.getParamemter("userName");
${paramValues.hobby[0] } 取数组的第一个
${header["User-agent"] }
${cookie.JSESSIONID.value }
<form action="${pageContext.request.contextPath }/success.jsp" method="post">
用户名:<input type="text" name="userName" /><br /> 密码:<input
type="password" name="pwd" /><br /> <input type="submit" value="登录" /><br />
</form>

六、JSTL

1、什么是JSTL

JSTL(JavaServerPages Standard Tag Library)JSP标准标签库

2、JSTL的作用

使用JSTL实现JSP页面中逻辑处理。如判断、循环等。

3、使用JSTL

1)在JSP页面添加taglib指令

2)使用JSTL标签

4、常用标签介绍

核心标签库:

> 通用标签: set、 out、 remove

> 条件标签:if choose

> 迭带标签:foreach

Java Web之路(五)JSP的更多相关文章

  1. 我的java web之路(JSP基本语法)

    1.JSP注释 1.1输出注释 语法格式  <!--comment [<%= expression %>] --> <body> This is my JSP pa ...

  2. java web中servlet、jsp、html 互相访问的路径问题

    java web中servlet.jsp.html 互相访问的路径问题 在java web种经常出现 404找不到网页的错误,究其原因,一般是访问的路径不对. java web中的路径使用按我的分法可 ...

  3. Java Web学习笔记之---JSP

    Java Web学习笔记之---JSP (一)JSP常用语法 (1)HTML注释 <!--所要注释的内容 --> 在客户端显示一个注释. (2)隐藏注释 <%--所要注释的内容--% ...

  4. java web 学习十五(jsp基础语法)

    任何语言都有自己的语法,JAVA中有,JSP虽然是在JAVA上的一种应用,但是依然有其自己扩充的语法,而且在JSP中,所有的JAVA语句都可以使用. 一.JSP模版元素 JSP页面中的HTML内容称之 ...

  5. eclipse开发Java web工程时,jsp第一行报错,如何解决?

    与myeclipse不同,eclipse开发java web项目时是要下载第三方软件(服务器)的,正是这个原因,很多初学者用eclipse学习java web的时候,总是会遇到一些小问题.其中常见的一 ...

  6. Java Web整合开发王者归来(JSP + Servlet + Struts + Hibernate + Spring) - 读书笔记

    第1章 状态码表示响应类型: 保留 表示请求成功地接收 完成请求客户需进一步细化请求 客户错误 服务器错误 Web服务器: Apache服务器,特长是处理静态页面,效率非常高. Tomcat提供对JS ...

  7. 我的java web之路(配置开发环境)

    这个学期学习java web开发,当然不能只靠上机的时间来练习,于是,便在自己的电脑上安装一系列的软件... 1.JDK的安装.首先,下载Java JDK,可以到sun公司网站下载.一定要下载适合自己 ...

  8. java web学习总结(五) -------------------servlet开发(一)

    一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...

  9. JavaSE学习总结(十九)—— Java Web 综合应用(JSP、Servlet、IDEA、MySQL、JUnit、AJAX、JSON)

    一.使用Servlet+JDBC+MySQL+IDEA实现商品管理 1.1.创建项目 打开IntelliJ IDEA开发工具.点击Create New Project创建一个新的Web项目 选择Jav ...

随机推荐

  1. Luogu5055 【模板】可持久化文艺平衡树(fhq-treap)

    注意下传标记时也需要新建节点.空间开的尽量大. #include<iostream> #include<cstdio> #include<cmath> #inclu ...

  2. poj2115-C Looooops -线性同余方程

    线性同余方程的模板题.和青蛙的约会一样. #include <cstdio> #include <cstring> #define LL long long using nam ...

  3. POI 生成excel(大数据量) SXSSF

    使用POI 的SXSSF (Streaming Usermodel API)生成较大的excel,同时开启压缩 import junit.framework.Assert; import org.ap ...

  4. GO系列教程

    1.介绍与安装 2.Hello World 3.变量 4. 类型 5.常量 6.函数(Function) 7.包 8.if-else 语句 9.循环 10.switch语句 11.数组和切片 12.可 ...

  5. 画删除线的方法,如何找替代方法,Deprecated注释

    用@Deprecated注释的程序元素,不鼓励程序员使用这样的元素,通常是因为它很危险或存在更好的选择.在使用不被赞成的程序元素或在不被赞成的代码中执行重写时,编译器会发出警告. 那么相应的替代方法应 ...

  6. day9 笔记

    集合 去重 无序 元素不可变类型 可hash 命令 set() 创建可变集合 frozenset() 创建不可变集合 .add() 添加元素,只能放单个值 .update() 添加元素,可以更新多个值 ...

  7. 洛谷 P1613 跑路 解题报告

    P1613 跑路 题目描述 小\(A\)的工作不仅繁琐,更有苛刻的规定,要求小\(A\)每天早上在\(6:00\)之前到达公司,否则这个月工资清零.可是小\(A\)偏偏又有赖床的坏毛病.于是为了保住自 ...

  8. py3+urllib+re,轻轻松松爬取双色球最近100期中奖号码

    通过页面源码,发现使用正则表达式可以很方便的获取到我们需要的数据,最后循环写入txt文件. (\d{2})表示两位数字 [\s\S]表示匹配包括“\r\n”在内的任何字符,匹配红球和蓝球之间的内容 具 ...

  9. Mysql的命令总结

    Mysql常用命令 启动 net start mysql 关闭 net stop mysql 连接mysql mysql -uroot -ppssword mysql -uroot -P3307 -p ...

  10. 前端学习 -- Html&Css -- 条件Hack 和属性Hack

    条件Hack 语法: <!--[if <keywords>? IE <version>?]> HTML代码块 <![endif]--> <keyw ...