欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JavaWeb之JSP学习详解

程序员文章站 2022-06-01 22:21:11
...

思维导图
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文件在服务器的工作空间中的源码,从源码就可以看出它的工作原理
JavaWeb之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页面中使用这些对象。 不用创建。

JavaWeb之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