[版权申明:本文系作者原创,转载请注明出处]

文章出处:http://blog.csdn.net/sdksdk0/article/details/51925232

作者:朱培 ID:sdksdk0


一、JSP简介

JSP全名为Java Server Pages,中文名叫java服务器页面。是一种用于开发动态web资源的技术。允许用户嵌套html和java代码。JSP实际上就是servlet。

JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 JSP(JavaServer Pages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。

重点在于显示数据。

二、JSP的原理

jsp页面中的java代码服务器是如何执行的?

  • 1、从浏览器输入地址,
  • 2、浏览器拿到这个地址然后去Tomach中进行查找,找到demo1.jsp,
  • 3、到work/catalina/localhost/JSP中招demo1.class文件,
  • 4、如果没有找到,就把demo1.jsp翻译为demo1.java文件
  • 5、把demo1.java编译为demo1.class文件
  • 6、执行servlet。

web服务器在执行jsp页面时,是如何把jsp页面中的html标签发送到客户端的?

通过标签中的等部分。out.write方法写(如下图)。

jsp输出模板内容:把html内容翻译到对应servlet的service方法中,由一个JspWriter的对象进行输出。

在tomach中经过转换的demo1.java文件中的内容。

web服务器在调用jsp时,会提供jsp一些什么java对象?

pageContext、HttpSession、ServletContext、ServletConfig等

三、JSP基本语法

3.1 脚本表达式

3.2 JSP脚本

3.3 JSP声明

语法:

<%!

java代码

%>

作用:定义jsp对应类的成员。

3.4 JSP注释

语法:<%– 这是注释 –%>

作用:注释JSP中的代码

注意:它的作用和HTML注释的作用是完全不同的。JSP注释根本不会被翻译到servlet中,而HTML注释是把代码运行后的结果注释掉,运行效率低。

四、JSP的指令

4.1 page

<% @指令名称  属性1="值1"  属性2="值2"  %>

page指令无论出现在jsp页面中什么地方,它的作用都是整个jsp页面。

作用:

import:导入jsp中的java类,默认导入lang.*,servlet.*jar包。

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

buffer:jsp页面中有一个字符输出流java.servlet.jsp.JspWriter,它的缓存大小默认为8kb.

errorPage:当当前JSP页面发生异常时转向(转发)的一个地址,如果地址以”/”开头,/代表当前应用,绝对路径。不以/开头,表示相对路径。

 <error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/error.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page>

isErrorPage:是否产生Throwable对象,默认是false.

<%=exception.getMessage() %>

contentType:指示响应正文的MIME类型和编码.

pageEncoding:JSP引擎读取JSP文件时使用的编码。

isELIgnored:是否忽略EL表达式。默认值是false,不忽略.

4.2 include

静态包含:

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

动态包含:

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

4.3 taglib

导入外部标签库,替换jsp中的java片段。

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

五、JSP的九大隐式对象

5.1 分类

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

request、response、session、exception、application、config、page、out、pageContext

5.2 pageContext

本身是一个域对象,还能操作其他三个域对象(ServletRequest、HttpServlet、ServletContext)中的数据。

操作其他三个域对象:

PageContext.PAGE_SCOPE|PageContext.REQUEST_SCOPE|PageContext.SESSION_SCOPE|PageContext.APPLICATION_SCOPE

  • void setAttribute(String name,Object v,int Scope);
  • Object getAttribute(String name,int Scope);
  • void removeAttribute(String name,int Scope);

pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的SESSION,也可以取本页面所在的application的某一属性值,他相当于页面中所有功能的集大成者,它的本 类名也叫pageContext。

六、JSP的四大域对象

  1. PageContext:存放的数据只能当前页面使用。
  2. ServletRequest:存放的数据可以通过转发传递给下一个转发目标。
  3. HttpServlet:存放的数据可以同一次会话中取出。例如:登陆,购物车信息等
  4. ServletContext:存放的数据被整个应用所共享。

七、内置标签

jsp:include:动态包含

jsp:forward:请求转发

jsp:param:结合以上标签使用。

    <jsp:forward page="pageContext/demo2.jsp"  >
<jsp:param value="abc" name="username" />
<jsp:param value="123" name="pwd" />
</jsp:forward>

八、JSP与JavaBean的使用

jsp中操作javabean

jsp:useBean

先查找再创建。

<jsp:useBean  id="student"  class="cn.tf.domain.Student"  scope="page" />

jsp:setProperty

    <jsp:setProperty property="name" name="student"  value="学生"/>
<jsp:getProperty property="name" name="student" />

九、EL表达式

不是单独的语言,而是jsp规范中获取数据的一种方式。可以获取数据、运算、访问普通静态方法等功能。

不支持字符串连接操作。

9.1 获取数据

只能获取存在于四个域对象中的数据。

EL对于null这样的数据,显示在页面上表现为一个空字符串。

${s} pageContext.findAttribute(“s”);

无空指针问题。

运算符:

.

[]

<!-- 获取javabean的属性 -->
<%
Student student=new Student();
student.setAddress(new Address());
pageContext.setAttribute("s",student);
%> ${s.name}==${s['name']} ${s.address.province } <!-- 获取List集合中的元素 -->
<% List list=new ArrayList();
list.add("a");
list.add("b");
list.add("c"); pageContext.setAttribute("list",list); %> ${list[1] } <!-- 获取map中的元素 -->
<%
Map map=new HashMap();
map.put("a","1111");
map.put("b","2222");
map.put("c","3333"); pageContext.setAttribute("map",map);
%>
${map.b}

9.2 运算

empty:判断null、空字符串和没有元素的集合(

${empty p }

三元运算符:

${布尔表达式?true:false}

<%
List list=new ArrayList();
list.add("a");
pageContext.setAttribute("list",list);
%>
${empty list } <!-- false--> ${empty list ?'您未购买任何东西':'您购买的物品如下'} <%
session.setAttribute("user","张三"); %> ${empty user? '您还未登陆':'欢迎您' } ${user }

9.3 隐式对象(11个)

9.4 自定义EL表达式

1、编写一个类

public class Function {

public static String toUppercase(String data){
return data.toUpperCase();
} }

2、在WEB-INF目录下建一个扩展名为tld的xml文件。

<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<tlib-version>1.0</tlib-version>
<short-name>my</short-name>
<uri>http://www.tianfang1314.cn/myfunctions</uri>
<function>
<name>toUpperCase</name>
<function-class>cn.tf.functions.Function</function-class>
<function-signature>java.lang.String toUppercase( java.lang.String )</function-signature>
</function>
</taglib>

3、在jsp中使用

引入taglib文件:

<%@ taglib uri="http://www.tianfang1314.cn/functions"   prefix="my" %>

使用自定义的el表达式“data”,将小写的a转换为大写的A。

<%
pageContext.setAttribute("data","aaaaaaa");
%>
${my:toUpperCase(data) }

实际项目中很多都是使用JSTL来进行操作的。

源码地址:https://github.com/sdksdk0/JSP

JSP基础概要的更多相关文章

  1. Java学习-033-JavaWeb_002 -- 网页标记语言JSP基础知识

    JSP 是 Sun 公司提倡的一门网页技术标准.在 HTML 文件中,加入 Java 代码就构成了 JSP 网页,当 Web 服务器访问 JSP 请求的时候,首先执行其中的 Java 程序源码,然后以 ...

  2. Servlet&jsp基础:第五部分

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  3. JavaEE系列之(一)JSP基础知识详解

    一.JSP基础语法     1.JSP简介        JSP(Java Server Pages),其根本是一个简化的Servlet设计,它实现了在Java中使用HTML标签.JSP是一种动态网页 ...

  4. JSP基础笔记

    主要内容:1. JSP基础2. Cookie3. HttpSession ================================ JSP基础 1. jsp的作用: * Servlet: &g ...

  5. javaEE与JSP基础

     JSP基础 1. jsp的作用:  * Servlet:    > 缺点:不适合设置html响应体,需要大量的response.getWriter().print("<html ...

  6. JSP基础使用

    一.JSP简介 JSP(Java Sever Pages):是为了能让 Java 在 Web 页面运行的一种语言. 在JSP中包括两种主要内容: 1. HTML.JS语言(静态内容).由客户端浏览器负 ...

  7. JavaWeb基础-Jsp基础语法

    jsp基础语法 JSP的组成 静态内容.指令.表达式.小脚本.声明.注释 JSP的生命周期 用户发出index.jsp ,服务端判断是否是第一次请求,若是第一次请求,则tomcat中的JSP引擎中的文 ...

  8. Jsp基础语法(由简入杂)

    JSP基础语法 一,JSP简介 Jsp是一个简化的Servlet设计,是在服务器端执行,他实现了再Java中使用HTML标签. Jsp是一种动态网页技术标准也是JAVAEE的标准 二,常见动态网站开发 ...

  9. JSP基础与提高(一).md

    JSP基础 JSP的由来 1.1. 为什么有JSP规范 Servlet技术产生以后,在使用过程中存在一个很大的问题,即为了表现页面的效果而需要输出大量的HTML标签,这些标签在Servlet中表现为一 ...

随机推荐

  1. 一篇文章说透Nginx的rewrite模块

    rewrite模块即ngx_http_rewrite_module模块,主要功能是改写请求URI,是Nginx默认安装的模块.rewrite模块会根据PCRE正则匹配重写URI,然后发起内部跳转再匹配 ...

  2. es6中参数【默认值,扩展运算符】

    参数默认值 1.普通参数 function info(age,name="grace"){ console.log(name); } info(); //输入:grace 2.对象 ...

  3. HashMap 你真的了解吗?

    HashMap深入解析及详细介绍 一. hashmap简介 HashMap是基于哈希表的Map接口的非同步实现.此实现提供所有可选的映射操作,并允许使用null值和null键.此类不保证映射的顺序,特 ...

  4. PyCharm 2018 永久激活

    PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试.语法高亮.Project管理.代码跳转.智能提示.自动完成.单元测试.版本控制. ...

  5. HttpClient入门二

    通过上一节我们已经可以实现对一个网站源码的抓取. 但是,有一些网站,在爬取的时候会出现如下的错误: HTTP/1.1 503 Service Unavailable <!DOCTYPE html ...

  6. [HNOI 2010]Bus 公交线路

    Description 题库链接 有 \(N\) 个车站, \(K\) 条公交线路.第 \(1\) 到 \(K\) 站是这 \(K\) 线路的起点站.第 \(N-K+1\) 到 \(N\) 是终点站. ...

  7. [USACO 08JAN]Telephone Lines

    Description Farmer John wants to set up a telephone line at his farm. Unfortunately, the phone compa ...

  8. [USACO17JAN]Promotion Counting晋升者计数

    题目描述 奶牛们又一次试图创建一家创业公司,还是没有从过去的经验中吸取教训--牛是可怕的管理者! 为了方便,把奶牛从 1 \cdots N(1 \leq N \leq 100, 000)1⋯N(1≤N ...

  9. ●SPOJ LCS2Longest Common Substring II

    题链: http://www.spoj.com/problems/LCS2/题解: 后缀自动机. 对第一个串建立后缀自动机, 然后把后面的每个串分别与该串的自动机去匹配,求出相应的数组val*[s]: ...

  10. 【Python3.6+Django2.0+Xadmin2.0系列教程之三(入门篇-下)】学生信息管理系统

    上一篇我们已经初步的构建起了一个学生管理系统的模型,现在接着来继续完善它吧. 1.上传图片/文件等资源 有时候需要添加一些附件,例如,新生刚入学,大家相互之间还不熟悉,希望能通过照片来加深印象,并且方 ...