JSP知识学习笔记(一)【基础知识】

一、JSP(Java Server Page)

JSP工作原理

JSP应用程序运行在服务器端。首次运行JSP页面时,将被编译成Servlet文件,然后JSP引擎调用Java编译器,编译Servlet文件为可执行文件(.class文件),JVM解释执行.class文件,并将结果返还服务器,最后服务器把结果以HTML格式发送给客户端浏览器。
在这里插入图片描述
基于Java语言的动态Web应用开发

1、页面基本结构

组成元素
(1)HTML标签
(2)CSS
(3)变量和方法
(4)Java代码段
(5)JSP动作和指令
(6)其他脚本元素(JavaScript)等
@Example:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>页面基本结构实例</title>
    </head>
    <body>
        <%! int sum = 0;
               int x = 1;
        %>
        <% while(x <= 10){
                    sum += x;
                    ++x;
               }
        %>
        <p>1加到10的结果是:<%= sum %></p>
    </body>
</html>
2、三种常用注释
  • 隐藏注释
    语法格式:<%-- 注释语句 --%>
    特点:发布JSP网页时完全被忽略,也不会输送到客户浏览器上。
  • HTML注释
    语法格式:<!-- 注释语句 [<%= 表达式 =%>] - ->
    特点:注释的内容可以在客户端源文件中看到,但不会发布到页面上。表达式为动态,可根据表达式值输出结果。
  • Java注释
    语法格式:<%/* 注释语句 */%><%// 注释语句>
    特点:和隐藏注释相似,发布JSP网页时完全被忽略,在客户浏览器源文件窗口也看不到注释内容。
3、常用脚本元素
  • 变量和方法的声明
    语法格式:<%!语句1;…;[语句n;] %>
    注:(1)语句用来声明变量和方法;(2)直接使用 <%@ page %> 中包含的变量和方法,无需重新声明;(3)一个声明仅在一个页面中有效,要想在每个页面都用到某些声明,则将其写成单独文件,用 <%@ include %> 指令或 <jsp:include > 动作包含进去。
    @Example:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>变量和方法的声明实例</title>
    </head>
    <body>
         <%! 
               String str="JSP变量和方法的声明。";    //声明变量
         %>
         <%!
               String print(){         //声明方法
                     return str;
               }
         %>
         <%=print()%>
    </body>
</html>
  • 表达式和脚本
    • 表达式
      语法格式:<%= 表达式 %>
      注:JSP的表达式中 没有分号
      作用:向页面输出内容;生成动态的链接地址;动态指定form表单处理页面。
      @Example(表达式):
    • 脚本
      语法格式:<% 脚本语句%>
      特点:脚本定义的方法和变量只在当前整个页面有效,但不会被其他线程共享,用户对变量的操作不会影响其他用户,当页面关闭时变量自动销毁。
<%--@Example(表达式):--%>
...
<body>
     <%! String name = "优快云-专业IT社区";
            String urlAddress = "www.youkuaiyun.com";
            String page = "www.sohu.com";
     %>
     <br>
     用户名:<%= name %>
     <br>
     <a href = "<%= urlAddress %>">优快云网站</a>
     <br>
     <form action = "<%= page %>">
     </form>
</body>
...
4、常用指令

(1)page指令
特点:定义JSP文件中的全局属性;作用域为所在的JSP页面和包含其的文件;可放于JSP页面的任意位置(一般放最顶端);同一个JSP页面可有多个page指令,但属性 除import属性外只能只用一次。
指令格式:

<%@page 
    [ language = "java" ]
    [ extends = "package.class" ]
    [ import = "{ package.class | package.* } , ..." ]
    [ session = "true | false" ]
    [ buffer = "none | 8KB | sizesKB" ]
    [ autoFlush = "true | false" ]
    [ isThreadSafe = "true | false" ]
    [ info = "text" ]
    [ errorPage = "relativeURL" ]
    [ contentType = "mimeType [ ;charset = characterSet ]" ]
    [ pageEncoding = "pageEncoding" ]
    [ isErrorPage = "true | false" ]
%>
  • language属性
    指定JSP页面中使用的脚本语言。
  • extends属性
    指定JSP页面编译器父类的完整限定名,此JSP页面产生的Servlet将由该父类扩展而来。(一般不建议使用extends属性)
  • import属性
    导入JSP页面所使用的Java API类库。import属性是所有page属性中唯一可以多次设置的属性。
  • session属性
    指定是否可以使用session对象,若允许页面参与HTTP会话,则设置为true(默认);否,则设置为false。
  • buffer属性
    设定页面的缓冲区大小(字节数),属性值为none,表示禁用缓冲区,其默认值为8KB。
  • autoFlush属性
    指定JSP页面缓冲区是否自动刷新输出,默认值为true,当缓冲区满时自动刷新输出;否,则当缓冲区满时抛出一个异常。
  • isThreadSafe属性
    指定JSP页面是否能够处理一个以上的请求。若为true(默认),则该页面可能同时收到JSP引擎发出的多个请求 (建议设置为true,确保页面所用的所有对象都是线程安全的);反之,JSP引擎会对收到的请求进行排队,当前页面在同一时刻只能处理一个请求。
  • info属性
    指定JSP页面的相关信息文本,无默认值。
  • errorPage属性
    指定错误页面,无默认值。
  • isErrorPage属性
    指定JSP页面是否为处理异常错误的页面,默认值为false。若为true,则固有的exception对象脚本元素可用。
  • contentType属性
    指定内容MIME类型和JSP页面的编码方式。普通JSP页面其默认值为 “text/html ; charset = ISO-8859-1”
<%@page contentType = "text/html ; charset = UTF-8" %>
  • pageEncoding属性
    指定JSP页面的编码方式,默认值为ISO-8859-1,中文:UTF-8。
<%@page pageEncoding = "UTF-8" %>

(2)include指令
特点:在当前JSP页面中加载需要插入的文件代码,即为页面插入一个静态文件,包括JSP页面、HTML页面、文本文件或一段Java程序代码。
指令格式:

<%@include file = "文件名" %>
  • file属性
    指定插入的包含文件的相对路径,无默认值。
    @Example:
<%@include file = "index.html" %>
<%@include file = "hello.jsp" %>

(3)taglib指令
特点:指定页面中使用的标签库以及自定义标签的前缀。
指令格式:

<%@taglib uri = "tagLibraryURI" prefix = "tagPrefix" %>
  • uri属性
    全称(Uniform Resource Identifier,统一资源标识符),指定标记库的存放位置,并告诉JSP引擎在编译JSP程序时如何处理指定标签库中的标签,无默认值。
  • prefix属性
    指定标记库中所有动作元素名使用的前缀,无默认值。
    @Example:
<%@taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
5、常用动作

客户请求JSP页面,利用JSP动作动态地插入文件、重用JavaBean组件、把用户重定向到另外的页面。(动作元素名和属性名都是大小写敏感的)
(1)<jsp: param>动作(无空格,下同。此处为了显示完整格式maohao后加了空格)
特点:其动作可以用于<jsp: include>、<jsp: forward>动作体中,为其他动作传送一个或多个参数。
语法格式:<jsp:param name = “参数名” value = “参数值” />

  • name属性
    指定参数的名称,不可接收动态值。
  • value属性
    指定参数值,可以接收动态值。

(2)<jsp: include>动作
特点:其动作用来把指定文件动态插入正在生成的页面中。这里的指定文件分为:静态文件和动态文件。(静态文件:仅仅将文件内容加到JSP文件中去,此文件不会被JSP编译器执行;动态文件:文件会被JSP编译器执行)
语法格式:<jsp:include page = “文件名” flush = “true” /> <jsp:include page = “文件名” flush = “true”><jsp:param name = “参数名” value = “参数值” /></jsp:include>

  • page属性
    指定所包含资源的相对路径,可以接收动态值。
  • flush属性
    指定在包含目标资源之前是否刷新输出缓冲区,默认false,不可以接收动态值。

include指令和include动作的区别:
1)二者根本不同:在于被调用时间。<jsp: include>动作在请求期间被激活(主页面被请求时,将其他页面的输出包含进来),而include指令是在页面转换期间被激活(JSP页面转换成Servlet之前,将JSP代码插入其中)。
2)使用上的区别:使用include指令的页面比使用include动作的页面难于维护;但include指令功能强大,执行速度快,允许所包含的文件中含有影响JSP主页面的JSP代码,例如:响应内容的设置和属性方法的定义。

(3)<jsp: useBean>动作
特点:用来加载JSP页面中使用的JavaBean,能够实现JavaBean组件的重用。
语法格式:<jsp:useBean id = “Bean实例名称” scope = “page | request | session | application” class = “JavaBen类” type = “对象变量的类型” beanName = “Bean名字” />

  • id属
    用于指定该JavaBean的实例名称,不接收动态值。若有id和scope相同的Bean实例,<jsp: useBean>动作将使用已有的Bean实例。
  • scope属性
    用于指定Bean作用域范围,一个作用域范围内id属性值唯一。可选作用域为:page,request,session和application。
    • page
      为默认值,表示该Bean只在当前页面内可用(保存在当前页面的PageContext内)。
    • request
      表示该Bean在当前的客户请求内有效(保存在ServletRequest对象内)。
    • session
      表示该Bean对当前HttpSession内的所有页面都有效,也就是说在会话作用域内有效。
    • application
      表示该Bean在任何使用相同的application的JSP页面中有效,即整个应用程序内有效。
  • class属性
    指定Bean的类路径和类名,不接受动态值。class不能是抽象的。
  • type属性
    指定引用该对象变量的类型,它必须是Bean类的名字、超类名字、该类所实现的接口名字之一。变量名由id属性指定。
  • beanName属性
    用于指定Bean的名字,可以接收动态值。==BeanName属性必须与type属性结合使用,不能与class属性同时使用。

@Example:(3)

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>jsp:useBean动作实例</title>
    </head>
    <body>
       jsp:useBean动作实例
       <hr>
       <jsp:useBean id = "time" class = "java.util.Date" />
       现在时间:<%= time %>
    </body>
</html>

在这里插入图片描述
@Example:(5)

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>jsp:useBean动作实例2</title>
    </head>
    <body>
       jsp:useBean动作实例2
       <hr>
       <jsp:useBean id = "time" type = "java.io.Serializable" beanName = "java.util.Date" />
       现在时间:<%= time %>
    </body>
</html>

在这里插入图片描述
(4)<jsp: setProperty>动作
特点:用来设置、修改已实例化Bean中的属性值。
语法格式:<jsp:setProperty name = “Bean的名称” property = " * " | property = “属性” [param = “属性” | value = “值”] />

  • name属性
    name属性是必须的,表示设置属性是哪个Bean,不可接收动态值。
  • property属性
    property属性是必须的,表示设置哪个属性。“ * ”代表所有名字和Bean属性名字匹配的请求参数,都将被传递给相应属性的set方法。
  • param属性
    param是可选属性,指定用哪个请求参数作为Bean属性的值。若当前没有参数,则不做操作,系统不会吧 null传递给Bean属性的set方法。因此,可以让Bean自己提供默认属性值,只有当请求参数明确指定了新值时才修改默认属性值。
    @Example:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>jsp:useBean动作实例</title>
    </head>
    <body>
       jsp:useBean动作实例
       <hr>
       <jsp:useBean id = "time" class = "java.util.Date" >
           <jsp:setProperty name = "time" property = "hours" param = "hh" />
           <jsp:setProperty name = "time" property = "minutes" param = "mm" />
           <jsp:setProperty name = "time" property = "seconds" param = "ss" />
       </jsp:useBean>
       <br>    
       设置属性值后的时间: <%= time %>
       <br>
    </body>
</html>

在这里插入图片描述

  • value属性
    value属性是可选的,用来指定Bean属性的值。
    注:value和param不能同时使用,但可以任意使用其中之一。

(5)<jsp: getProperty>动作
特点:获取指定Bean属性值后转换成字符串输出。
语法格式:<jsp:getProperty name = “bean的名称” property = “Bean的属性” />
说明:<jsp: getProperty>元素可以获取Bean的属性值并使用或显示在JSP页面中,但是在使用之前,必须先用<jsp: useBean>创建实例化对象。

  • name属性
    指定要获取属性值的Bean名称,不接收动态值。
  • property属性
    指定要获取的Bean属性名,不能接受动态值。

(6)<jsp: forward>动作
特点:用于转发客户端的请求到另一个页面或另一个Servlet文件中去。
语法格式:<jsp:forward page = “地址或页面” />

  • page属性
    指定资源相对路径,可以接收动态值。

 
 

@Ps:JSP知识学习笔记(二)—七大常用内置对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值