JavaWeb之JSP学习详解
思维导图
一、JSP简介
1.1 什么是JSP?
jsp的全称为:java server pages(翻译:java服务器页面), 从用户角度去看待 ,jsp就只是一个网页 ,但是作为程序员来看的话 , jsp其实是一个java类, 它继承了servlet,所以可以直接说jsp 就是一个Servlet.二者比较大的区别就是,在servlet中以java代码为主,而在jsp中主要以HTML代码为主,其中包含了一部分的java代码。
1.2 JSP的作用
html 多数情况下用来显示静态内容 , 是一成不变的。 但是有时候我们需要在网页上显示一些动态数据, 比如: 查询所有的学生信息, 根据姓名去查询具体某个学生。 这些动作都需要去查询数据库,然后在网页上显示。 html是不支持写java代码 ,于是有了jsp, jsp里面可以写java代码。
1.3 JSP的语法格式
<% 这里写java代码 %>
二、JSP三大指令
2.1 page指令
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
2.1.1 page属性表
属性 | 定义 |
---|---|
language | 指定JSP页面用什么语言来编译,目前只支持JAVA语言。默认为JAVA |
contentType | 这个文件是什么类型,告诉浏览器我是什么内容类型,以及使用什么编码来解析这个文件,类型一般是text/html |
pageEncoding | 指明编码方式 |
extends | 指定jsp翻译成java文件后,继承的父类是谁 |
import | 导包使用的 |
session=“true or false" | 控制在这个jsp页面里面,能够直接使用session对象。 |
errorPage=“path” | 用于指定错误的时候跑到哪一个页面去 |
isErrorPage | 声明某一个页面到底是不是错误的页面,被声明的页面可以使用Exception。 |
isThreadSafe=”true/false” | 是否支持多线程 |
autoFlush=”true/false” | 决定输出流的缓冲区慢了后是否需要自动清除,缓冲区慢了后会产生异常错误(Exception).默认为true |
buffer=”none/size in kb” | 决定输出流(Input stream)是否又缓冲区。默认为8kb |
isELLgnored=”true/false” | 表示是否在此JSP页面中EL表达式。true则忽略,false则支持。默认为false |
2.2 include 指令
包含另外一个jsp的内容进来,它的实现原理就是把另外一个页面的所有内容拿过来一起输出。 所有的标签元素都包含进来。
<%@ include file="test02.jsp"%>
下面是包含test01.jsp的test01.jsp文件在服务器的工作空间中的源码,从源码就可以看出它的工作原理
2.3 taglib指令
在JSP页面中使用第三方的标签库时,需要使用taglib指令来“导包”,我们在页面上用到JSTL的时候就需要使用这个指令来引入标签库。
<%@ taglib prefix="" uri=""%>
- uri: 标签库路径
- prefix : 标签库的别名
三、JSP的动作标签
下面我只记录比较常用的三个标签:
1、<jsp:include page=""></jsp:include>
<jsp:include page=“other02.jsp”></jsp:include>
包含指定的页面, 这里是动态包含。 也就是不把包含的页面所有元素标签全部拿过来输出,而是把它的运行结果拿过来。
2、<jsp:param value="" name=""/>
意思是: 在包含某个页面的时候,或者在跳转某个页面的时候,加入这个参数。
<jsp:forward page=“other02.jsp”>
<jsp:param value=“beijing” name=“address”/>
</jsp:forward>
在other02.jsp中获取参数
收到的参数是:
<%= request.getParameter(“address”)%>
3、<jsp:forward page=""></jsp:forward>
前往哪一个页面。
<%
//请求转发
request.getRequestDispatcher(“other02.jsp”).forward(request, response);
%>
四、JSP的九个内置对象
所谓内置对象,就是我们可以直接在jsp页面中使用这些对象。 不用创建。
4.1、四个作用域对象
作用域 : 表示这些对象可以存值,他们的取值范围有限定。 setAttribute 和 getAttribute
分别是:pageContext、request、session、application
作用域范围大小:
pageContext – request — session – application
4.1.1 四个作用域的使用
使用作用域来存储数据<br>
<%
pageContext.setAttribute("name", "page");
request.setAttribute("name", "request");
session.setAttribute("name", "session");
application.setAttribute("name", "application");
%>
取出四个作用域中的值<br>
<%=pageContext.getAttribute("name")%>
<%=request.getAttribute("name")%>
<%=session.getAttribute("name")%>
<%=application.getAttribute("name")%>
4.1.2 四个作用域的区别
作用域对象 | 所属类型 | 定义 |
---|---|---|
pageContext | PageContext | 作用域仅限于当前的页面 |
request | HttpServletRequest | 作用域仅限于一次请求, 只要服务器对该请求做出了响应。 这个域中存的值就没有了。 |
session | HttpSession | 作用域限于一次会话(多次请求与响应) 当中。 |
application | ServletContext | 整个工程都可以访问, 服务器关闭后就不能访问了。 |
4.2、其余五个内置对象
对象 所属类型
--------------------------
out 【JspWriter】
response 【HttpServletResponse】
exception 【Throwable】
page 【Object】 ---就是这个jsp翻译成的java类的实例对象
config 【ServletConfig】
重点强调,其实我觉得jsp,el,jstl这些估计很快就会被完全淘汰了,因为现在主流的开发模式是实现前后端的分离开发,像这些在页面上还嵌套着开发语言的基本是日落西山了,现在的主流框架和html、jq、ajax等已经可以让我们实现前后端的代码分离了,所以学习这些作为了解就好了。个人观点!
上一篇: 《数据库系统概论》笔记整理(一)
下一篇: 学习JAVAWEB(五)——JSP