JSP的基础、指令、动作

本文介绍了JSP的基本概念,包括其与静态、动态网页的区别,以及执行流程、组成部分、注释、脚本元素(变量、方法、表达式)、指令元素(page、include、taglib)和动作元素(include、forward、param等)。重点讲解了jsp指令和动作的使用示例。
摘要由CSDN通过智能技术生成

JSP的基础、指令、动作

jsp的简介

静态网页:指没有后台数据库、不含程序、不可交互的网页。适用于不经常更改的网页。
动态网页:指显示的内容不是固定的,是根据服务器执行代码的结果来确定具体的显示内容。
主要区别:是否会随着时间,地点,用户的选择而改变。
JSP:( java server pages ) java 服务器页面,是一种服务器脚本语言,在服务器执行,返回客户端一个HTML文件。

jsp的执行过程

  1. 当客户端第一次请求一个jsp网页时,服务器就会将该jsp文件变成java文件(通常是一个servlet),再将java文件编译成class字节码文件。java(servlet , class)的内容就是打印出一个HTML文件,服务器将该HTML文件响应回给客户端。客户端再将HTML文件显示出来。
  2. 当客户端非第一次请求jsp网页时,服务器直接执行class文件,响应一个HTML文件给客户端。
    所以,第一次请求时,花的时间比再次请求长。
  3. 当jsp文件更改了,必须要重新编译jsp文件,也就是按第一次执行。

jsp的组成

JSP组成部分包括HTML、Java、JSP代码
HTML: 负责内容
Java: 负责行为
JSP: 负责行为

jsp的注释

jsp的注释:

<%-- 多行注释内容 --%>

java的注释:

<%/* 多行的注释内容 */%>
<%// 单行的注释内容 %>

html的注释:

<!-- 多行注释内容 -->

jsp、java的注释在网页中和浏览器的源代码中都不会出现,因为它们没有传输到客户端,仅仅是给程序员读的;html的注释在网页中不会出现,但在浏览器的源代码窗口可以看得到。

jsp的常用脚本元素

变量和方法的声明

声明后可以在本JSP页面中的任何位置使用。(即全局变量)

语法格式:
<%! 声明变量和方法 %>
注意点
  • 声明必须以“ ; ”结尾。
  • 变量和方法的命名规则与Java中的规则相同;
  • 一个声明仅在一个JSP页面中有效;如果多个页面想要用到该变量和方法,最好将他们写成一个独立的文件,然后用<%@include%><jsp:include>元素包含进来。
示例
<body>
      <%!
       String str = "JSP技术带你走进动态网页开发时代!";  //声明变量
      %>
      <%!
        String print(){         //声明方法
          return str;
        }
      %>
        <h1><%=print()%></h1>   //表达式
  </body>

表达式

将结果直接输出在网页中。

语法格式:
<%= 表达式 %>
注意点
  • 表达式的结尾没有分号。
适用场景
  • 向网页输出内容。
  • 生成动态的链接地址。
  • 动态生成From表单处理页面
示例
<body>
      <%!
        String name="百度";
        String urlAddress="https://www.baidu.com";
      %>
    <p><a href="<%=urlAddress%>"><%=name%></a></p>
      <form action="<%=urlAddress%>">
      </form>
  </body>

脚本(java代码)

语法格式:
<% 脚本语句 %> 

在脚本中也可以声明变量和方法,但只可以在该<%%>中可用。

jsp的常用指令元素

JSP指令元素的作用:用来提供整个JSP网页的相关信息,并用来设定JSP网页的相关属性。
JSP指令在客户端是不可见的,被服务器解释并执行。
JSP指令包括include指令page指令taglib指令

  • page指令:定义整个页面的全局属性。
  • include指令:包含一个代码或文本文件,即在当前网页中插入include指令指定的文件。
  • taglib指令:引入自定义的标签或第三方的标签库。

page指令

page指令的主要属性及语法
<%@page   	langueage="java"		//脚本语言
		pageEncoding="UTF-8"            //页面所用编码
		extends="继承父类名称"          
		import="导入的Java包或类的名称"
		session=“true/false"            //是否参与HTTP会话
		buffer="缓冲区大小"               //设置out对象的缓冲区大小
		autoflush="true/false"          //是否自动刷新
		isThreadSafe="true/false"       //是否线程安全
		info="页面信息"
		errorPage="发生错误时所转向的页面的相对地址"  //当页面错误时,跳转的页面
		isErrorPage="true/false"        //是否是错误处理页面
		contentType=""                  //MIME类型和字符编码
		isELIgnord="true/false"         //是否忽略正则表达式
%>			

pageEncoding: jsp文件自身的编码,也就是 jsp --> java
contemtType: 浏览器解析jsp的编码,通常与pageEncoding保持一致。

注意点
  • 每个页面中可以使用多个<%@page%>指令,且区分大小写。
  • 除了import指令外,其他的指令只可以使用一次。
  • 一个JSP页面中,如果需要同时导入多个Java包,可以分开写,也可以合起来写。如:
<%@page import="java.util.Date"%>
<%@page import="java.io.*"%>

也可以写成

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

include指令

可以将其他文件静态插入本JSP网页中。

page指令的语法
<%@include file="filename"%>

jsp的动作元素

作用

用来控制JSP引擎的行为。

主要有以下几个:

<jsp:include>动态插入一个文件
<jsp:forward> 跳转到一个新的页面
<jsp:param> 子标签,传递参数,通常嵌套在include、forward动作元素中使用
<jsp:plugin> 连接客户端的Applet或Bean插件
<jsp:useBean> 使用JavaBean组件
<jsp:setProperty> 设置JavaBean的属性值
<jsp:getProperty> 获取JavaBean的属性值并输出

<jsp:include>动作

语法
<jsp:include page="文件名称"/>或
<jsp:include page="文件名称">其他内容</jsp:include>

注意:第1种语法,收尖括号前有一个反斜杠。

功能

当前网页中动态包含一个文件,当执行到该动作元素处,才加载被包含文件的字节码。

include指令include动作的区别

include指令:是静态插入文件,先将文件加载到当前的JSP页面中,再一起编译成字节码文件,且不可以传递参数,仅仅是将两个页面放在一起。指令后接file
include动作:是动态插入文件,先将两个文件分开编译成字节码文件,再将被加载文件的字节码文件加载到当前的JSP页面中,可以通过参数传递属性值。动作后接page

<jsp:forward>动作

语法
<jsp:forward page="文件名称"/>或
<jsp:forward page="文件名称">其他内容</jsp:forward>
功能

从该动作的执行处停止当前网页的执行,转向执行page指定的文件,但浏览器中的地址栏的地址不会改变。

<jsp:param>子标签

语法
<%--包含动作-->
<jsp:include page="文件名称">
	<jsp:param name="变量名字1" value="变量值1"/>
	<jsp:param name="变量名字2" value="变量值2"/>
	...
</jsp:include>
<%--跳转动作-->
<jsp:forward page="文件名称">
	<jsp:param name="变量名字1" value="变量值1"/>
	<jsp:param name="变量名字2" value="变量值2"/>
	...
</jsp:forward>
功能

将标签中的变量值传递给动态加载的文件。
不可以独立使用,只可作为include、forward的子标签使用。

示例

传递参数的页面————chuandi.jsp

<%@ page language="java" pageEncoding="UTF-8"%>
<html>
  <head>
    <title>传递参数页面</title>
  </head>
  <body>
    <h3>该页面传递一个参数QQ,直线下是接受参数页面的内容</h3>
    <hr>
    <jsp:include page="jieshou.jsp">
        <jsp:param name="userName" value="QQ"/>
    </jsp:include>
  </body>
</html>

接受参数的页面————jieshou.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>接受参数页面</title>
</head>
<body>
        <p>接受参数,并显示结果页面</p>
    <%  String str=request.getParameter("userName");%>
        <font color="blue" size="12"><%=str%></font>你好,欢迎你访问!
</body>
</html>

运行结果如下:
在这里插入图片描述

可见,传递参数页面中包含了接受参数页面;如果将传递参数页面中的<jsp:include page="">改成<jsp:forward page=""/>,结果如下:
在这里插入图片描述

浏览器中的地址显示的是传递参数的页面,但内容显示的是接受参数的页面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值