JSP页面的基本结构

本文介绍了JSP页面的基础结构,包括HTML元素、注释、脚本元素(声明、表达式、脚本片段)、指令(page、taglib、include)以及动作(jsp:useBean、jsp:forward、jsp:include)。讲解了JSP注释的两种形式,脚本元素的用途,以及page指令的多种属性设置。同时,对比了jsp:include和include指令的区别,并概述了JSP动作标签的功能,如jsp:forward、jsp:param、jsp:useBean及其相关属性的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JSP页面的基本结构:HTML元素;注释(JSP注释,HTML注释);脚本元素(声明,表达式,脚本片段);指令(page指令,taglib指令,include指令);动作(<jsp:useBean><jsp:forward><jsp:include>)。

1、注释:

1HTML注释:<!-- HTML注释-->    客户端查看源代码时可以看到

2JSP注释:<%-- JSP注释--%>    又称隐藏注释,客户端看不到

 

servlet源文件

客户端页面源文件

浏览器显示

HTML注释

出现

出现

不显示

隐藏注释

不出现

不出现

不显示

脚本注释

出现

不出现

不显示

2、脚本元素:JSP页面中的java代码段

1声明变量:<%! 声明语句;%>

2声明方法:<%! 声明方法%>

声明变量和声明方法时页面级的,即它们在声明语句所在的页面时有效的。TomcatJSP页面转换为java类,则声明变量是该类的成员变量,声明方法时该类的的方法。成员变量在执行过程中是被所用用户共享的,用户改变成员变量时会影响其他用户使用此成员变量

3表达式:<%= 表达式%>    服务器将运算结果转换为字符串输出到JSP页面

注:表达式后不需加“;”,“<%=”是一个整体不可有空格。

4)java程序段:<% java程序段 %>    JSP页面被客户请求时,java程序段就被执行,且是按先后顺序执行的;JSP页面被编译成一个java类,java程序段则放置在java类的service()方法中;java程序段中声明的是局部变量,在JSP页面的后继的所有程序段及表达式中均有效,且不同用户在访问JSP页面中相同名称的局部变量时,局部变量互不影响。

<%!

private int a=1;

public String print(){

return "this is function";

}

%>

<%int b=1; %>

a:<%=a++%><br><!--全局的在整个中只有一个 -->

b:<%=b++%><!--service方法中,每次调用都是一个新的 -->  

3、JSP指令:负责提供JSP页面的相关信息,以及设置JSP页面的属性。  

1page指令:用来设置JSP页面的属性。

<%@ page language = “java”  

contentType=“MIMEType; charset=characterSet” //声明MIME类型和字符编码集,默认为

 “text/html;charset=iso-8859-1”

pageEncoding=“characterSet” //设定,默认为iso-8859-1 优先级不如

contentType("text/html;charset=utf-8");

import=“package.class” //导入JSP页面所使用的java API,以逗号隔开

extends=“package.class” //定义产生的servlet是继承哪个父类,默认为HttpJspBase

buffer=“none|size kb|8kb” //输出流缓存的大小,默认8kb

errorPage=“URL” //发生错误时页面被重定向指向的错误处理页面

autoFlus=“false|true” //缓存区的内容是否自动清除,默认true

session=“false|true” //页面是否需要一个HTTP会话,默认true如果值为false,则对应的servlet代码 当中不会生成声明和创建session的代码。也就是说,不能够使用session隐含对象了。

isThreadSafe=“false|true” //是否支持多线程同步请求,默认true

isErrorPage=“false|true” //该页面是否为错误处理页面,默认false

isELPage=“false|true” //是否忽略EL表达式,默认false

info=“***” //可以为任意字符串,可通过Servlet.getServletInfo()来获取所设置字符串

 %>

page指令出现次数没有限制,但属性最多出现一次,import属性除外。 

2)include指令:页面包含指令,可以在JSP页面中包含另一个文件。

<%@ include file = “文件名”%>

注:若包含的文件与JSP页面不在同一目录下,需要指出相对路径;两个JSP页面的page指令的contentType值必须完全一致。

3)taglib指令:可以使JSP页面中使用自定义的标签。

<%@ taglib uri = “tagURI”  prefix = “prefix”%>

uri:指定自定义标签文件的路径

prefix:指定标签的前缀,不可为保留字

使用taglib指令时,应先定义标签文件,然后在JSP页面中使用taglib指令引用该标签文件,就可在JSP文件中使用该标签文件了。

4、JSP动作:

1<jsp:include>将指定的页面包含到使用此动作标记的JSP页面中

方法一:<jsp:include page=“文件的URL|<%=表达式%>” flush=“true”/>

方法二:<jsp:include page=“文件的URL|<%=表达式%>” flush=“true”>嵌套子标记</jsp:include> //flush缓存是否被清空

注:需要传递参数时使用<jsp:param>动作标记作为嵌套子标记。

<jsp:include>include指令的区别:

n include指令是静态包含,在JSP页面编译时执行,引入的内容为静态文件,在JSP页面编译时被包含文件与主文件已经融合在一起。

n <jsp:include>是动态包含,在请求处理阶段执行,引入的内容在执行页面被请求时动态生成后再包含到页面中。

2)<jsp:param>用来传递参数

<jsp:param name=”参数名” value=”参数值”/>

使用request对象的getParameter()方法获取<jsp:param>的参数值。

    3<jsp:forward>重定向至其page属性指定的页面。

方法一:<jsp:forward page=”跳转页面的URL|<%=表达式%>”/>

方法二:<jsp:forward page=”跳转页面的URL|<%=表达式%>”>

<jsp:param value=”参数值” name=”参数名”></jsp:forward>

注:跳转页面时,URL不会改变;一旦执行<jsp:forward>标记,那么当前页面的后续代码就会停止。

SendRedirect外部跳转

Forward内部跳转

是不同的request

虽然是不同的对象,但是,可以取到上一个页面的内容

send后的语句会继续执行,除非return

forward后的语句不会继续发送给客户端

速度慢

速度快

需要到客户端的往返,可以转到任何页面

服务器内部转换

地址栏有变化

地址栏没有变化

可以传参数,直接写在url后面

可以传参数

    4<jsp:useBean>

方法一:<jsp:useBean id=”bean的名字” class=”引用bean的类” scope=”bean的作用域”/>

方法二:<jsp:useBean id=”bean的名字” class=”引用bean的类” scope=”bean的作用域”>

        </jsp:useBean>

id:引用的javaBean在所定义的作用域的名称,区分大小写,且不同名。

class:引用的javaBean的完整包路径,一般“package.class.

scope:指定javaBeanid的有效范围,pagerequestsessionapplication

page:当前页面有效,用户间互不影响。

request:请求期间有效,用户间互不影响。

session:会话期间有效,用户影响。

application:整个Web应用,用户影响。

 5<jsp:setProperty>:与<jsp:useBean>一起使用,设置JavaBean属性值。

    <jsp:setProperty name=”useBean标记中的id” property=”*|javaBean的属性名” value=”javaBean属性值|<%=表达式%>”/>

6<jsp:getProperty>:与<jsp:useBean>一起使用,获取javaBean属性值。

 <jsp:setProperty name=”useBean标记中的id” property=”*|javaBean的属性名” />

5、补充:JSP页面中的异常处理:

n <%=exception.toString()%>          打印异常名称;

n <%exception.printStackTrace()%>     打印当前错误流中所有错误的列表;

n <%=exception.getMessage()%>       打印错误的详细描述信息;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值