【JSP笔记】指令标签(3)、动作标签(6)

来源:互联网 发布:华为和三星的差距 知乎 编辑:程序博客网 时间:2024/06/09 03:38

 一.JSP介绍

    1.JSP全名为Java Server Pagesjava服务器页面,其根本是一个简化的Servlet设计.

    2.它实现了Html语法中的java扩展(以 <%, %>形式)。JSP与Servlet一样,是在服务器端执行的。通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。

    3.JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 JSP(JavaServer Pages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。
    4.Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。

二.JSP指令标签(3个)

    1.page指令

        page指令是JSP页面内最常用的指令,用于定义整个JSP页面的相关属性,这些属性在JSP被服务器解析成Servlet时会转换为相应的Java程序代码

        language属性

            该属性用于设置JSP页面使用的语言,目前只支持Java。该属性默认值是Java
  <%@ page language="java" %>

        extends属性

            该属性用于设置JSP页面继承的Java类,所有JSP页面在执行之前都会被服务器解析成Servlet,而Servlet是由Java类定义的,所以JSP和Servelt都可以继承指定的父类。该属性不常用,可能影响服务器的性能优化  

        import属性

            该属性用于设置JSP导入的类包。JSP页面可以嵌入Java代码片段,这些Java代码在调用API时需要导入相应的包
   <%@ page import="java.util.*" %>

        pageEccoding属性

            该属性用于JSP页面的编码格式,如果设置为ISO-8859-1,那么这个JSP页面就不支持中文字符
 <%@ page pageEccoding="ISO-8859-1" %> <%@ page pageEccoding="UTF-8" %>

        contentType属性

            该属性用于设置JSP页面的MIME类型和字符编码,浏览器会据此显示网页的内容,如
  <%@page contentType="text/html;charset=UTF-8"%>
           将这个属性设置应用于JSP页面,那么浏览器在呈现该网页时,会使用UTF-8 编码格式,如果当前浏览器编码格式为GBK,那么就会产生中文乱码,这时用户需要自行更改浏览器的显示编码才能看到正确的中文内容。

        session属性

            该属性指定JSP页面是否使用HTTP的session会话对象。其属性值是boolean类型,可选值true和false.默认值是true,可以用到session会话对象;如果设置为false,则当前JSP页面将无法使用session会话对象
<%@ page session="false"%>

        buffer属性

            该属性用于设置JSP的out输出对象使用的缓冲区大小,默认大小是8KB,且单位只能是KB。
 <%@ page buffer="128KB"%>

        autoFlush属性

            该属性用于设置JSP页面缓存满时,是否自动刷新缓存。默认值为true;若设置为false,则缓存满时将抛出异常。 
<%@ page autoFlush="false"%>

        info属性

            该属性用于设置JSP页面的相关信息,该信息可以在Servlet接口的getServletInfo()方法中获取
 <%@ page info="这是系统的入口"%>

        isErrorPage属性

            通过该属性可以将当前的JSP页面设置成错误页面来处理另一个JSP页面的错误,也就是异常处理,这意味者当前JSP页面业务的改变。
<%@ page isErrorPage="true"%>

        errorPage属性

            该属性用于指定处理当前JSP页面异常错误的另一个JSP页面,指定的JSP错误处理页面必须设置isErrorPage="true"。errorPage属性的属性值是一个url字符串。
<%@ page errorPage="404.jsp"%>

        isELlgnored属性

            该属性用于定义JSP页面是否被忽略EL表达式的使用。在Servlet 2.4 版本中其默认值为 false,即JSP支持EL表达式。
<%@ page isELlgnored="false"%>

    2.include指令

        include指令用于文件包含。可以在JSP页面中包含另一个文件的内容,但是它仅支持静态包含,也就是说被包含的文件中的所有内容都被原样包含到JSP页面中。
        如:
<%@include file="demo.jsp" %>
        上述代码将当前JSP文件中的相同位置的demo.jsp文件包含进来。其中 file属性用于指定被包含的文件,其值是当前JSP页面文件的相对路径URL路径。
        例:在当前页面中包含另一个JSP文件来显示当前日期

日期date.jsp:

<%@page pageEncoding="GB18030" %><%@page import="java.util.Date" %><%Date now = new Date(); String date; date = String.format("%tY 年%tm 月%td 日", now, now,now); %><%=date  %>

include标签的.jsp:

<%@page language="java" import="java.util.*" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%><!DOCTYPE unspecified PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><title>include例子</title></head><body><!-- HTML注释 -->当前日期是:<%@include file="date.jsp" %><br></body></html>

        date.jsp文件将被包含在include.jsp文件里,所以文件中page指令代码可以省略,在被包含到include.jsp文件中后会直接使用它的配置。
        注意:
            源文件和被包含文件中的变量名和方法名不要冲突,因为他们最终会生成一个文件,防止错误发生。

        

    3.taglib指令

        该指令用于加载用户的自定义标签,使用该指令加载后的标签可以直接在JSP页面中使用
        <%@taglib prefix="fix" uri="tagUriorDir" %>
            prefix:用于设置加载自定义标签的前缀
            uri:用于指定自定义标签的描述符文件位置
<%@taglib prefix="view" uri="/WEB-INF/tags/view.tld"%>  

三.JSP动作标签(常用的6个)

    1.<jsp:include>

        a.概述

            这个动作标签可以将另一个文件的内容包含到当前的JSP页面内。被包含的文件内容可以是静态文本也可以是动态代码。

        b.格式

            <jsp:include page="url" flush="false|true"/> 
                page:用于指定被包含文件的相对路径。
                flush:可选参数,用于设置是否刷新缓冲区。默认值为false;如果设置为 true ,则在当前也页面输出使用了缓冲区的情况下,将先刷新缓冲区,然后再执行包含工作。
            或
            <jsp:include page="url" flush="false|true">
                子标签 
            </jsp:include>

        

        c.<jsp:include>与<include>的区别

            <jsp:include>和<include>指令都拥有包含其他文件内容到当前JSP的能力,但存在区别。
相对路径:
        • include指令使用file属性指定被包含文件,该属性使用 文件的相对路径 指定被包含文件的位置。
        • <jsp:include>标签以 页面的相对路径 来指定被包含文件
包含资源:
        • include指令包含的资源为静态,如TXT、HTML;如果把JSP的动态内容用include指令包含,也会被当作静态资源包含到当前页面;被包含资源和当前JSP页面是一个整体。资源相对路径解析发生在JSP转换为Servlet的时候。
        • <jsp:include>标签包含动态资源时,资源相对路径的解析在请求处理时发生。当前JSP和被包含是两个独立的实体。被包含页面会对包含它的JSP页面中的请求对象进行处理,将结果作为当前JSP页面包含的内容,与当前页面内容一起发送到客户端。


    2.<jsp:forward>

        <jsp:forward>是请求转发标签。该标签可以将当前页面的请求转发给其他Web资源。

    3.<jsp:param>

        该标签可以作为其他标签的子标签,为其他标签传递参数
        <jsp:param name="paramName"value="paramValue" />
            name:指定参数的名称
            value:设置对应的参数值


        例:在转发请求到DZ2.jsp页面的同时,传递了userName参数,其参数值为demo
         
<jsp:forward>    <jsp:param name="userName" value="demo"/></jsp:forward>

    4.<jsp:useBean>

用于在JSP页面中创建一个JavaBean实例,并通过属性的设置将此实例存放在JSP指定范围内
格式: 
<jsp:useBean
id="变量名";
scope="page|request|session|application"
{
class="完整类名"|
type="数据类型"|
class="完整类名" type="数据类型"|
beanName="完整类名" type="数据类型"
}/>
参数:
id属性:定义一个变量名
scope属性:设置JavaBean的作用域,有四种范围 page、request、session、application。默认为 page
class属性:指定JavaBean的完整类名。和beanName属性不能同时存在
type属性:指定id属性所定义的变量类型
beanName属性:指定JavaBean的完整类名。和class属性不能同时存在。


例子:在JSP页面中实例化一个JavaBean对象
1.创建一个名为Bean的类,此类中有一个名为name的属性及其相关方法
2.创建JavaBean后,在.jsp页面中通过<jsp:useBean>标签实例化对象,并调用该方法。


<%@ page language="java" contentType="text/html" pageEccoding="GBK"%><jsp:useBean id="bean" class="com.lyq.Bean"></jsp:useBean><!DOCTYPE html><html><head><title>HomePage</title></head><body><%bean.setName("Ash");%><h1 align="center"><%=bean.getName()%></h1></body></html>

5.<jsp:setProperty>

用于对JavaBean中的属性赋值,但JavaBean的属性要提供相应的setXXX()方法。通常与<jsp:useBean>标签一起使用
格式:
<jsp:setProperty
name = "实例名";
{
property="*"|
property="属性名"|
property="属性名"param="参数名"|
property="属性名" value="值"
}/>
参数:
name属性:指定JavaBean的引用名称
property属性:指定JavaBean中的属性名,此属性是必须的,其取值有两种,分别为“*”、“JavaBean的属性名称”
param属性:指定JSP请求中的参数名,通过该参数可以将JSP请求参数的值赋给Java的属性

value属性:指定一个属性的值


例子:使用 property="*" 对JavaBean的属性赋值
1.创建一个名为Student的类 此类封装了一个学生实体对象
public class Student {private int id;private int age;private String classess;public int getId() {return id;}public int getAge() {return age;}public String getClassess() {return classess;}public void setId(int id) {this.id = id;}public void setAge(int age) {this.age = age;}public void setClassess(String classess) {this.classess = classess;}}


2.创建一个form表单,将其放置在 index,jsp页面中
<form action="student.jsp" method="post"><p>学号:<input type="text" name="id"></p><p>年龄:<input type="text" name="age"></p><p><input type="submit" value="提交"><input type="reset" name="重置"></p></form>


3.创建student.jsp页面,用于实例化Student对象,并输出相应的属性值
<body><jsp:useBean id="student" class="com.lyq.Student"></jsp:useBean><jsp:setProperty name="student" property="*"/><div align="center"><p>学号:<%=student.getId()%></p><p>姓名:<%=student.getName()%></p></div></body>


6.<jsp:getProperty>

用于获取JavaBean中的属性值,但要求JavaBean的属性必须具有相应getXXX()方法。通常与
格式:
<jsp:getPropertyname="实例名" property="属性名"/>
参数:
name属性:指定存在某一范围的JavaBean实例引用。
property属性:指定JavaBean的属性名称

        
        
        
        
原创粉丝点击