JSP 的脚本,指令,动作

[size=medium][b]JSP 脚本元素[/b][/size]
  表达式:<%= xx%>
Scriptlet:<% xxx %>
声明 :<%!xxx %>


[b][color=red]表达式 的概念[/color][/b]

1.是对数据的显示,系统将其对作为一个值进行计算并显示
2.不能以 分号 " ; " 结尾
3.表达式的值 直接嵌入到html页面即可以直接在浏览器中输入结果


<body>
<h1>JSP 表达式</h1>
<b>pi的值</b><%=Math.PI %> <br/>
<b>110,119中最大的值</b><%=Math.max(110,119)%> <br/>
<b>110,119中最小的值</b><%=Math.min(110,119)%> <br/>
<b>3+2-5的值</b><%=3+2-5%> <br/>
<b>(3+2)==5的值</b><%=(3+2)==5%> <br/>
<b>(3+2)!=5的值</b><%=(3+2)!=5%> <br/>
</body>


[b][color=red]JSP ScriptLet[/color][/b]

1.就是在JSP页面嵌入 java脚本
2.JSP小脚本,被转换成servlet中的方法,因此脚本中 不能定义方法.
3.JSP脚本中,可以声明变量,但是 局部变量,不能用 private,public等访问限定修饰符来修饰,也不能用static修饰


<body>
<%
String name="toy";
System.out.println(name); //打印到 控制台 去了哦!

//打印到 页面中去
for(int i=1;i<10;i++){
for(int j=0;j<i;j++){
out.println(j); //调用 jsp的 out对象 在页面上显示了哦
}
out.println("<br/>");
}
%>
</body>


[b][color=red]JSP 声明[/color][/b]

1.就是在JSP中声明 java 的方法和 变量 (用于定义JSP代表Servlet的成员变量和方法名)
2.JSP的声明的变量 是针对所有的请求,且生命周期是整个WEB应用程序


<body>
<%!
// 声明 servlet中的 成员变量和方法
int numTimes=3;

public String sayHello(String name){
return "Hello "+name+"!";
}
%>
<br/>
<%
//每刷新页面一下 numTimes就会累加 这样说明是 成员变量
//而且 说明 JSP (servlet) tomcat启动的时候 就只实例化一次 然后被缓存起来了 所以 这个变量 就会一直累加
out.println(numTimes);
numTimes++;
out.println("<br/>");
out.println(sayHello("admin"));
%>
</body>


[size=medium][b]JSP 的指令[/b][/size]

1.page
2.include
3.taglib
语法为:
<%@ 指令名称 属性1="值1" .....%>


[b][color=red]page 指令[/color][/b]

1.用于设置JSP的属性
2.<%@ page contentType="text/html;charset=GBK" %>

[table]
|language| 定义要使用的脚本语言,如果在将来的JSP容器支持 多种语言可以使用它|"java"
|import|定义以","分割的类或者包名的列表,就像通常在java代码中使用的import语句那样|无
|pageEncoding|指定JSP文件本身的字符集编码|GBK
|contentType|定义JSP字符编码方法和JSP页面响应的MIME类型|cha'tset=iso-8859-1
|isErrorPage|表示当前页面作为 错误页面|true ,false
|errorPage|定义处理异常的JSP页面| error_url
|isELIgnored|设置是否忽略JSP页面中的EL表达式的执行| "fasle"
|session|指定这个页面是否参与一个HTTP会话| "true"
|extends|指定这个页面编译生成的servlet所继承的父类,或者所实现的接口| package.class
|autoFlush|当输出缓冲区即将溢出的时候,是否强制输出缓冲区的内容,true:正常输出,false:在buff移除的时候出现一个异常| "true"
[/table]
[b][color=red]include 指令[/color][/b]

1.用于在运行时将html 或者 JSP 嵌入到另一个 JSP 页面
2.先合并,再编译


<body>
<%@ include file="/head.jsp" %>
<%=basePath%><br/>
<b>嵌套的页面中不能 在 脚本中 定义 父页面 相同的 变量 否则会报错</b>
<b>嵌套的页面 中能用父页面中的变量</b>
<b>父页面中可以 用 子页面中的变量</b>
</body>


[b][color=red]taglib 指令[/color][/b]

1.可以让JSP页面使用 标签
2.是在JSP页面中,将标签描述符文件引用到该页面中,并且 设置前缀,利用前缀 使用标签文件中的标签


<body>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

</body>


[size=medium][b][color=red]JSP 的动作[/color][/b][/size]
JSP 动作的介绍

在该JSP被翻译成Servlet源代码的过程中,当容器遇到标准动作元素时,就调用与之对应的Servlet的方法来替代它,所有标准动作元素的前面都有一个JSP前缀作为标记,一般形式如下:
<jsp:标签名 ...属性.../>


1.<jsp:userBean>:在JSP中定义使用一个JavaBean的实例
2.<jsp:setProperty>: 设置一个JavaBean的属性
3:<jsp:getProperty>:从JavaBean中获取一个属性值
4:<jsp:include>:在JSP页面包含一个外部的文件
5:<jsp:forward>:把到达的请求转发另一个页面进行处理
6:<jsp:param>:用于传递参数值
7:<jsp:plugin>:用户在指定的客户浏览器中插入插件的属性
8:<jsp:params>:用户向HTML页面的插件传递参数值
9:<jsp:fallback>:指定如何处理客户点不支持插件运行的情况
10<jsp:root>:
11<jsp:declaration>:
12<jsp:scriptlet>:
13<jsp:expression>:
14<jsp:text>:
15<jsp:output>:
16<jsp:attribute>:
17<jsp:body>:
18<jsp:element>:
19<jsp:invoke>:
20<jsp:doBody>:


JSP的标准动作的分类 6组

1.jsp中使用大JavaBean的标准动作<jsp:userBean>定义一个使用JavaBean,实例,ID属性定义实例名称,<jsp:getProperty> 从一个JavaBean中获取一个属性值,并将其添加到响应中;<jsp:setProperty> 设置一个JavaBean的属性

2.在jsp中包含其他jsp文件或者web资源的标准动作,<jsp:include> 在请求处理阶段包含来之一个Servlet或者jsp文件的响应,注意和include指令不同

3.将到达的请求 转发到另一个jsp页面或者web资源,以便进行下一步的操作的标准动作,<jsp:forward>

4:在其他标准动作中间指定参数的标准动作,<jsp:param>对使用<jsp:include> 或者 <jsp:forward>传递到另一个Servlet和jsp页面请求添加一个传递参数


5.在客户端的页面嵌入java对象 (例如 applet,是运行在客户端的小java程序)的标准动作
<jsp:plugin>根据浏览器类型为java插件生成 Object或者 Embed标记 <jsp:params><jsp:fallback>

6.仅仅用户标记文件的标准动作
<jsp:attribute> <jsp:body> <jsp:invoke> <jsp:dobody> <jsp:element> <jsp:text> <jsp:output>



<jsp:userBean>

<jsp:useBean id=”name” class=”package.class” scope=”….” type=”…”/>
id:给一个类实例取名并且作为整个JSP页面的唯一标记,如果需要创建一个新的JavaBean,这也是引用这个JavaBean的实例的名称

class:javaBean组将的完整java类名,,一定要包括包名,如果容器没有找到指定的类实例,则会根据这个class属性指定的完整类名来创建一个新的javaBean的实例进行引用

type:告诉容器这里的javaBean实例需要实现 一个Java接口或者一个 超类,class和type 必须选其中一个

scope: 这个这个JavaBean的在那种上下文中可用,page(PageContext):在当前页面 request(ServletRequest):请求方法, session(httpSession)会话范围,appliaction 应用程序范围.


<jsp:setProperty>

1:
<jsp:userBean id="myName" ...>
<jsp:setProperty name="myName" property="someProperty" .../>
</jsp:userBean>

2.
<jsp:userBean id="myName" ...>
<jsp:setProperty name ="myName" property="somePropery" .../>

name:是必须设置 知道是javaBean的名称

property:必须的,指定对javaBean 的属性中那些值进行设置,有个特殊的用法 "* "表示在设置所有名字与javaBean 属性名称匹配的请求参数都被传递到相应属性的get方法

value:指定属性的值

param:这个属性 和value 不能同时使用,只能用一个, 如果都没有使用,就会为 使用javaBean中的默认值,如果使用property属性,容器就会把property指定的属性变量设置为param指定的请求的参数值.



<jsp:setProperty>

name:表示javaNean在jsp中的标记
property:表示提取javaBean中那个属性的值



<jsp:userBean id="testBean" class="com.helloworld.SimpleBean">
<jsp:setProperty name="testBean" property="message" value="Hello"/>
</jsp:userBean>

<h1>取值/h1>
<jsp:getProperty name="testBean" property="message"/>

<h1>重新赋值</h1>
<jsp:setProperty name="testBean" property="nessage" value="hello World" >

<h1>使用EL表达式取值</h1>
${testBean.message}


<jsp:include>

<jsp:include page="...URL..." flush="true|false"/>

<jsp:include page=" ...URL... flush="true|false">
<jsp:param ..../>
</jsp:include>



[size=medium][b][color=red]include指令 和include动作的差别[/color][/b][/size]
(有的称为 动态导入 和 静态导入)

1.语法不同
指令: <%@ include file="..url.." %>
动作: <jsp:include page="..url" />

2. 编译合并顺序不同
指令:先合并后在进行一起编译 (只有一个编译文件)
动作:单独编译 然后合并 编译后的二进制文件 (会有多个编译文件)

3.变量的使用
指令:不能定义 父页面的 同名变量 ,可以修改 和使用 父页面的变量,父页面也可以使用子页面的变量
动作:能定义 父页面的同名变量 ,不可以修改和使用 父页面的变量.父页面不能使用 子页面的变量

4.变量的作用域
指令:会延长 父页面变量的生命周期 注意 变量的值的变化
动作:不会影响变量的作用域和值

5.编译报错
指令:使用 父页面的变量的时候 子页面会报编译异常,页面前面会有 "红叉叉"(但是能正常使用,可以忽略)
动作:不会有编译异常


<jsp;forward>

<jsp:forward page="/util/errorPage.jsp"> //一个相对的路径
<jsp:forward page="<%=someJavaExpression%>"> // 一个 动态值



<jsp:param>

一般与<jsp:include > 和<jsp:forward> 一起使用
<body>
<jsp:include page="date.jsp">
<jsp:param name="" value=""/>
</jsp:include>
</body>


<jsp:plugin>

<jsp:plugin type=" ..applet 或者 javaBean " code="" codebase="" archive=" ." >
</jsp:plugin>

type:用来指定 该插件是applet 或者 javaBean


<jsp:params>

<body>
<jsp:plugin type="applet|JavaBean" code="">
<jsp:params>
<jsp:param name="" property="" value=""/>
<jsp:param name="" property="" value=""/>
<jsp:param name="" property="" value=""/>
</jsp:params>
</jsp:plugin>
</body>


<jsp:fallback>

<jsp:fallback>
客户端不支持插件运行时候显示的 html和 jsp 代码 (只有客户端不支持的时候才能运行)
</jsp:fallback>


修改jsp 中 tomcat 的标致 准备一个 .ico的图标

//在jsp 的 head 中 加入

<link rel="Shortcut Icon" type="image/x-icon" href="${pageContext.request.contextPath}/images/favicon.ico"/>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值