JSP概述

JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。JSP实际上就是Servlet。

jsp = html + java

html:静态内容

servlet:服务器端的小应用程序。适合编写java逻辑代码,如果编写网页内容--苦逼。

jsp:适合编写输出动态内容,但不适合编写java逻辑。

JSP运行原理

a)当访问index.jsp时,数据是如何进行返回的?

经过翻译和编译的过程,通过流将数据写回。

b)html代码部分

JspWriter.write()

c)java代码部分

原样

d)9大内置对象(service方法)

JSP基本语法

a) jsp指令  <%@   %>

b) jsp模板   html代码

c) jsp的脚本片段

  <%  java  %>

  部分脚本片段的代码可以不完整,但是作为整体必须完整。

  脚本片段之间可以互相访问。

d) 脚本表达式:输出

  <%=表达式|变量   %>

  但是不能出现;等字符

e) jsp声明

  <%!  java  %>

  翻译到成员位置。

  定义成员变量,成员方法,静态方法等

  不能使用内置对象。

JSP的指令

控制jsp执行。<%@ page  %>

a) 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
<error-page>
<error-code>500</error-code>
<location>/error.jsp</location>
</error-page> <error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/error.jsp</location>
</error-page> <%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.io.File" %>

b) include:包含(静态包含)

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

文件在翻译的时候进行合并

c) taglib: 导入标签库(jstl)

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

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

JSP标签

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

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

<jsp:include > 动态包含

<jsp:forward> 请求转发

<jsp:param> 设置请求参数

<jsp:useBean> 创建一个对象

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

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

JSP的内置对象

指在JSP的<%=%> 和<% %>中可以直接使用的对象

对象名

类型

说明

request

javax.servlet.http.HttpServletRequest

response

javax.servlet.http.HttpServletResponse

session

javax.servlet.http.HttpSession

由session="true"开关

application

javax.servlet.ServletContext

exception

java.lang.Throwable

由isErrorPage="false"开关

page

java.lang.Object当前对象this

当前servlet实例

config

javax.servlet.ServletConfig

out

javax.servlet.jsp.JspWriter

字符输出流,相当于 printWriter对象

pageContext

javax.servlet.jsp.PageContext

pageContext

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

//设置其他域的数据
pageContext.setAttribute("user", "request", PageContext.REQUEST_SCOPE); <!-- 获取其他域的数据 -->
<%-- <%=pageContext.getAttribute("user", PageContext.SESSION_SCOPE) %> --%> pageContext.findAttribute("user")
遍历所有的域获取数据
page request session application

四大域对象

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

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

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

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

最佳实践

servlet

java代码方便(数据),展示数据(printWriter)不方便

jsp

java繁琐,展示数据方便

servlet获取数据;

jsp展示数据。

EL表达式

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

要简化jsp中java代码开发。

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

获取域中的值

pageContext.findAttribute()

${book.bname }   <!--获取对象属性  -->
${books[1].bname } <!-- 获取集合中的数据 -->
${maps.name } <!-- 获取map中的值 -->

实现计算

<%--  ${sum + 2 }
${sum >= 1 }
${1>2 and 2>3 } --%>
${empty books } <!--判断是否为空 null "" -->

JSTL标签库

标签库的jar

standard.jar    jstl.jar

导入标签库

<%@taglib %>

core:标准标签库

fmt:格式化标签库

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

<!-- 页面输出
value:输出的值 支持el表达式
default:默认值
escapeXml:是否转义(默认转义)
--> <%
request.setAttribute("name", "<p>aa</p>");
%>
<%-- <c:out value="${name }" default="aaa" ></c:out> --%> <!-- 用于判断
test:支持el表达式
-->
<%-- <c:if test="${1 == 1 }">
哈哈
</c:if> --%> <c:choose>
<c:when test="${1 == 1 }">
哈哈
</c:when>
<c:otherwise>
呵呵
</c:otherwise>
</c:choose> <%
List<Book> books = new ArrayList();
Book book = new Book();
book.setBname("ls");
books.add(book);
book = new Book();
book.setBname("ww");
books.add(book);
request.setAttribute("books", books);
%> <!-- 用于遍历
items:遍历的内容 支持el表达式
var:每一项的name值
varStatus:状态信息的保存变量
begin:开始的位置
end:结束的位置
step:步长
-->
<c:forEach var="book" items="${books }" varStatus="status" >
bname=${book.bname } &nbsp; ${status.index }<br/>
</c:forEach> <%
Date date = new Date();
request.setAttribute("date", date);
%>
<fmt:formatDate value="${date }" pattern="yyyy-MM-dd HH:mm:ss" />

Day9 JSP的更多相关文章

  1. myeclipse学习总结一(在MyEclipse中设置生成jsp页面时默认编码为utf-8编码)

    1.每次我们在MyEclispe中创建Jsp页面,生成的Jsp页面的默认编码是"ISO-8859-1".在这种情况下,当我们在页面中编写的内容存在中文的时候,就无法进行保存.如下图 ...

  2. jsp前端实现分页代码

    前端需要订一page类包装,其参数为 private Integer pageSize=10; //每页记录条数=10 private Integer totalCount; //总记录条数 priv ...

  3. jsp中出现onclick函数提示Cannot return from outside a function or method

    在使用Myeclipse10部署完项目后,原先不出错的项目,会有红色的叉叉,JSP页面会提示onclick函数错误 Cannot return from outside a function or m ...

  4. jsp页面无法识别el表达式的解决方案

    今天在写一个springmvc的小demo时,碰到一个问题,在jsp页面中书写为${user.username}的表达式语言,在浏览器页面中仍然显示为${user.username},说明jsp根本不 ...

  5. 浅谈JSP中include指令与include动作标识的区别

    JSP中主要包含三大指令,分别是page,include,taglib.本篇主要提及include指令. include指令使用格式:<%@ include file="文件的绝对路径 ...

  6. 浅谈JSP注释

    HTML注释 JSP文件是由HTML尿急和嵌入的Java程序片段组成的,所以在HTML中的注释同样可以在JSP文件中使用.注释格式:<!--注释内容--> <!-- 欢迎提示信息! ...

  7. JSP 标准标签库(JSTL)

    JSP 标准标签库(JSTL) JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签, ...

  8. Nginx服务器之Nginx与tomcat结合访问jsp

    本文使用linux centos系统 本文概述: JSP是一种动态网页技术标准.使用的方式是在HTML文件中插入程序段和JSP标记,而形成JSP文件.使用JSP开发WEB应用可以跨平台开发.但jsp需 ...

  9. 基于jsp+servlet图书管理系统之后台万能模板

    前奏: 刚开始接触博客园写博客,就是写写平时学的基础知识,慢慢发现大神写的博客思路很清晰,知识很丰富,非常又价值,反思自己写的,顿时感觉非常low,有相当长一段时间没有分享自己的知识.于是静下心来钻研 ...

随机推荐

  1. 【转】分布式环境下5种session处理策略(大型网站技术架构:核心原理与案例分析 里面的方案)

    前言 在搭建完集群环境后,不得不考虑的一个问题就是用户访问产生的session如何处理.如果不做任何处理的话,用户将出现频繁登录的现象,比如集群中存在A.B两台服务器,用户在第一次访问网站时,Ngin ...

  2. win10 安装 oracle 11g 时遇到 [INS-13001] 环境不满足最低要求 的问题

    前言:自己系统上安装 oracle 时报错,故记录下来. 环境: win10 x64 oracle 11g 安装包 出错: 解决方案:同 https://www.cnblogs.com/yuxiaol ...

  3. CSS关于文本渲染的属性text-rendering

    CSS关于文本渲染的属性text-rendering告诉渲染引擎工作时如何优化显示文本. 浏览器会在渲染速度.易读性(清晰度)和几何精度方面做一个权衡. 我们知道,SVG-可缩放矢量图形(Scalab ...

  4. Exam E05-001 Information Storage and Management Version 3 Exam

    Emc 考试 e05-001信息存储和管理版本3考试 [总问题:171] 哪种 emc 产品提供软件定义的存储基础架构的自动监视和报告? A. viprSrmB. 斯纳普内C. 阿瓦马尔D. 快速副总 ...

  5. JavaScript中如何将html字符串转化为Jquery对象或者Dom对象

    最近在开发百度地图相关的一个应用,需要从硬编码的html字符串中提取自己想要的元素以及属性信息.但是在js中或者jQuery中操作元素节点以及属性都是使用DOM对象或者jquery对象.下面将介绍如何 ...

  6. java.lang.NoSuchMethodError 报500

    1. 概述 mvc项目 接口报500 localhost 错误日志 07-Jan-2019 17:12:43.664 SEVERE [catalina-exec-21] org.apache.cata ...

  7. Matlab给三维点云添加高斯噪声和随机噪声

    写在前面 在我们进行点云配准一类的模拟实验时,第一步就是对原始点云进行适当的RT变换,并添加一定的噪声,得到测量点云,然后才可以用我们的算法去进行后面的配准操作.在添加噪声这一块,matlab里并没有 ...

  8. margin相关基本知识

    什么是 margin ? CSS 边距属性定义元素周围的空间.通过使用单独的属性,可以对上.右.下.左的外边距进行设置.也可以使用简写的外边距属性同时改变所有的外边距.——W3School 边界,元素 ...

  9. github上的项目发布成静态网页

    代码上传成功之后就可以发布静态网页了,细心的童鞋应该已经看到我上传的代码在根目录就有一个html文件(发布其他情况没试过,感兴趣自己去尝试),发布的时候选择仓库即自动识别了. 第一步:点击settin ...

  10. PHP isset()与empty()的使用区别

    PHP的isset()函数 一般用来检测变量是否设置 格式:bool isset ( mixed var [, mixed var [, ...]] ) 功能:检测变量是否设置 返回值: 若变量不存在 ...