您的位置:首页 > Web前端 > JavaScript

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

2017-11-29 18:58 671 查看

一.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:getProperty
name="实例名" property="属性名"/>


参数:

name属性:指定存在某一范围的JavaBean实例引用。

property属性:指定JavaBean的属性名称
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: