[code]
1。Scriptlet------script 脚本 let小程序 s所以这个就是脚本小程序
1.1声明
<% !
%>----可以直接在<%!%>的scriptlet中定义全局常量,编写方法,编写类,但是一般情况下,不会直接在JSP中定义一个类。但是绝对不能再里面写语句
<%!
public static final String DBDRIVER = "oracle.jdbc.driver.OracleDriver";
%> ----最常做的事就是声明全局常量
<%!
public static int add(int i , int j){
return i+j;
}
%> ----定义方法,此操作一般不会经常使用
----------------------------------------------------------------------
1.2。<%= %>---表达式输出
<%=add(10,20)%>
等效于
<% out.print(add(10,20)) ; %>
但是out.print()---一般用在java中,而不是用在jsp中
因为表达式输出分离了java代码和html代码,使得代码错落有致,比较清晰,所以在jsp开发中绝对不可出现out.println()这样的代码
只要页面中显示的是500错误,则表示服务器端的程序出错,此时必须检查代码,所以,必须处理异常
---------------------------------------------------------------------------
2。page指令
page表示当前一个JSP页面,可以理解为一个对象的本身,即:把一个JSP当作一个对象来看待。
page指令的主要功能有以下几个:
1。设置MIME类型
2。 导包指令
3。 其他指令:错误页(这个不使用了),禁止session,页面的缓冲等等(这些都不用管)
2.1
案例:现在假设建立一个JSP页面,要求里面设置上中文
范例:显示中文
<h1>中国,你好</h1>
显示结果: 出现了乱码
之所以出现了乱码,是由于本身的页面编码和显示的编码不一致造成的
所以,此时,为了可以显示出正确的编码,那么最好在页面加载的时候就已经可以设置好自己所需要的编码了,此时,就必须使用page指令,编写如下代码
<%@page contentType="text/html;charset=GBK" %>
<h1>你好,中国</h1>
---这个相当于让浏览器自动右键--->编码--->gbk为默认显示
但是如果我们的MIME给写错了会出现什么典型的情况?
比如<%@page contentType="test/html;charset=GBK" %>
只要是MIME出错,那么浏览的时候会变成直接下载这个jsp而不是访问这个jsp......很奇怪吧,因为你告诉了浏览器一种不认识的类型,那么浏览器就像我不认识,那么我怎么解读呢,哎,还是交给用户来自己解读把。。所以弹出下载页面
只要合理的应用了MIME类型,则一个页面可以显示成任意风格的形式,例如:现在希望一个JSP页面最终显示成一个word...
word的MIME是:application/msword-----所有的mime类型都可以在conf/web.xml中找到
那么我们在jsp上面可以这样
<%@page contentType="application/msword" %>
.......
那么这个jsp就是一个word.....牛逼啊
2.2 import指令
import指令是page指令中唯一可以设置多次的指令
<%page import="java.util.*,java.io.*"%>
3.include
他可以将工具信息,头部菜单,尾部菜单放到一个文件中,用的时候包含进来
在jsp中有两种语句
@include
<jsp:include>
3.1@include
该指令属于静态包含,可以包含任意的文件,当然,只是把文件的内容包含进来
比如现在搞三个文件
content.htm
内容是: <h1>content.htm</h1>
content.txt
内容是: <h1>content.txt</h1>
content.abc
内容是: <h1>content.dsfdfs</h1>
然后建立一个页面包他们包含进来
<h1>include/demo01.jsp</h1>
<%@include file="content.htm" %>
<%@include file="content.txz" %>
<%@include file="content.abc" %>
那么相当于把这些文件的内容包含了进来,而且不关心文件到底是什么格式的,都当成文本来搞,其实从字面意思就能理解,他include的东西是一个文件而已
3.2 <jsp:include />
此语句是动态包含,如果被包含的页面时JSP,则先处理之后再将结果包含,而如果包含的是非"*.jsp"文件,则只是把文件内容静态包含,功能与@include类似
此指令对语法要求非常严格,有以下两种形式的语法
语法1:
<jsp:include page="页面"/>
语法2:
<jsp:include page="页面">
<jsp:param name="参数名" value="值" />
.....
</jsp:include>
范例:使用语法一完成与之前类似的功能
<h1>include/demo01.jsp</h1>
<jsp:include page="content.htm"/>
<jsp:include page="content.aba"/>
这个和上面的效果是一样的。。。
下面用语法二,将包含jsp页面,而且向里面传递参数
建立content.jsp,此文件可以接受参数
内容是:
<h1><%=request.getParameter("ref1") %></h1>
<h1><%=request.getParameter("ref2")%></h1>
建立includedemo.jsp并向里面传递参数
<h1>hhhhh</h1>
<jsp:include page="content.jsp">
<jsp:param name="ref1" value="Hello world ref1"/>
<jsp:param name="ref2" value="hellow world ref2"/>
</jsp>
两种包含的区别:
1。 静态包含:
实验如下:
有如下的jsp
demo.jsp
<%@page contentType="text/html;charset=GBK" %>
<%
int i = 1000;
%>
<h1>demo.jsp中i的值是<%=i%></h1>
main.jsp中
<%@page contentType="text/html;charset=GBK" %>
<h1>main页面</h1>
<%
int i = 10; //注意:被包含页面中也有这个变量哈
%>
<h2>main中的值为:<%=i%></h2>
<%@include file="demo.jsp" %>
因为<%@include file="demo.jsp" %>只是把这个东西看成是一个普通文件,他不会处理jsp的代码,所以他会先把他全部写到main.jsp中-----先包含然后交给包含页面处理
等效于:
<%@page contentType="text/html;charset=GBK" %>
<h1>main页面</h1>
<%
int i = 10; //注意:被包含页面中也有这个变量哈
%>
<h2>main中的值为:<%=i%></h2>
<%@page contentType="text/html;charset=GBK" %> ----包含的是未处理的文件内容
<%
int i = 1000;
%>
<h1>demo.jsp中i的值是<%=i%></h1>
那么这里可以看到出现了重复的i,那么肯定报错。。。
下面我们使用<jsp:include/>来处理
<%@page contentType="text/html;charset=GBK" %>
<h1>main页面</h1>
<%
int i = 10; //注意:被包含页面中也有这个变量哈
%>
<h2>main中的值为:<%=i%></h2>
<include:jsp page="demo.jsp" />
那么他等效于:
<%@page contentType="text/html;charset=GBK" %>
<h1>main页面</h1>
<%
int i = 10; //注意:被包含页面中也有这个变量哈
%>
<h2>main中的值为:<%=i%></h2>
<h1>demo.jsp中i的值是10</h1>----他包含的是处理后的内容
4。跳转指令
跳转指令,当一执行此指令时,程序会无条件立即跳转
语法1:
<jsp:forward page="页面"/>
语法2:
<jsp:forward page="页面">
<jsp:param name="参数名" value="值" />
.....
</jsp:forward>
demo.jsp 中
<h1>哈哈</h1>
<jsp:forward page="demo2.jsp" />
demo2.jsp
<h1>哈哈,我是demo2</h1>
运行后就直接跳转了。。。这是服务器端跳转
[/code]
1。Scriptlet------script 脚本 let小程序 s所以这个就是脚本小程序
1.1声明
<% !
%>----可以直接在<%!%>的scriptlet中定义全局常量,编写方法,编写类,但是一般情况下,不会直接在JSP中定义一个类。但是绝对不能再里面写语句
<%!
public static final String DBDRIVER = "oracle.jdbc.driver.OracleDriver";
%> ----最常做的事就是声明全局常量
<%!
public static int add(int i , int j){
return i+j;
}
%> ----定义方法,此操作一般不会经常使用
----------------------------------------------------------------------
1.2。<%= %>---表达式输出
<%=add(10,20)%>
等效于
<% out.print(add(10,20)) ; %>
但是out.print()---一般用在java中,而不是用在jsp中
因为表达式输出分离了java代码和html代码,使得代码错落有致,比较清晰,所以在jsp开发中绝对不可出现out.println()这样的代码
只要页面中显示的是500错误,则表示服务器端的程序出错,此时必须检查代码,所以,必须处理异常
---------------------------------------------------------------------------
2。page指令
page表示当前一个JSP页面,可以理解为一个对象的本身,即:把一个JSP当作一个对象来看待。
page指令的主要功能有以下几个:
1。设置MIME类型
2。 导包指令
3。 其他指令:错误页(这个不使用了),禁止session,页面的缓冲等等(这些都不用管)
2.1
案例:现在假设建立一个JSP页面,要求里面设置上中文
范例:显示中文
<h1>中国,你好</h1>
显示结果: 出现了乱码
之所以出现了乱码,是由于本身的页面编码和显示的编码不一致造成的
所以,此时,为了可以显示出正确的编码,那么最好在页面加载的时候就已经可以设置好自己所需要的编码了,此时,就必须使用page指令,编写如下代码
<%@page contentType="text/html;charset=GBK" %>
<h1>你好,中国</h1>
---这个相当于让浏览器自动右键--->编码--->gbk为默认显示
但是如果我们的MIME给写错了会出现什么典型的情况?
比如<%@page contentType="test/html;charset=GBK" %>
只要是MIME出错,那么浏览的时候会变成直接下载这个jsp而不是访问这个jsp......很奇怪吧,因为你告诉了浏览器一种不认识的类型,那么浏览器就像我不认识,那么我怎么解读呢,哎,还是交给用户来自己解读把。。所以弹出下载页面
只要合理的应用了MIME类型,则一个页面可以显示成任意风格的形式,例如:现在希望一个JSP页面最终显示成一个word...
word的MIME是:application/msword-----所有的mime类型都可以在conf/web.xml中找到
那么我们在jsp上面可以这样
<%@page contentType="application/msword" %>
.......
那么这个jsp就是一个word.....牛逼啊
2.2 import指令
import指令是page指令中唯一可以设置多次的指令
<%page import="java.util.*,java.io.*"%>
3.include
他可以将工具信息,头部菜单,尾部菜单放到一个文件中,用的时候包含进来
在jsp中有两种语句
@include
<jsp:include>
3.1@include
该指令属于静态包含,可以包含任意的文件,当然,只是把文件的内容包含进来
比如现在搞三个文件
content.htm
内容是: <h1>content.htm</h1>
content.txt
内容是: <h1>content.txt</h1>
content.abc
内容是: <h1>content.dsfdfs</h1>
然后建立一个页面包他们包含进来
<h1>include/demo01.jsp</h1>
<%@include file="content.htm" %>
<%@include file="content.txz" %>
<%@include file="content.abc" %>
那么相当于把这些文件的内容包含了进来,而且不关心文件到底是什么格式的,都当成文本来搞,其实从字面意思就能理解,他include的东西是一个文件而已
3.2 <jsp:include />
此语句是动态包含,如果被包含的页面时JSP,则先处理之后再将结果包含,而如果包含的是非"*.jsp"文件,则只是把文件内容静态包含,功能与@include类似
此指令对语法要求非常严格,有以下两种形式的语法
语法1:
<jsp:include page="页面"/>
语法2:
<jsp:include page="页面">
<jsp:param name="参数名" value="值" />
.....
</jsp:include>
范例:使用语法一完成与之前类似的功能
<h1>include/demo01.jsp</h1>
<jsp:include page="content.htm"/>
<jsp:include page="content.aba"/>
这个和上面的效果是一样的。。。
下面用语法二,将包含jsp页面,而且向里面传递参数
建立content.jsp,此文件可以接受参数
内容是:
<h1><%=request.getParameter("ref1") %></h1>
<h1><%=request.getParameter("ref2")%></h1>
建立includedemo.jsp并向里面传递参数
<h1>hhhhh</h1>
<jsp:include page="content.jsp">
<jsp:param name="ref1" value="Hello world ref1"/>
<jsp:param name="ref2" value="hellow world ref2"/>
</jsp>
两种包含的区别:
1。 静态包含:
实验如下:
有如下的jsp
demo.jsp
<%@page contentType="text/html;charset=GBK" %>
<%
int i = 1000;
%>
<h1>demo.jsp中i的值是<%=i%></h1>
main.jsp中
<%@page contentType="text/html;charset=GBK" %>
<h1>main页面</h1>
<%
int i = 10; //注意:被包含页面中也有这个变量哈
%>
<h2>main中的值为:<%=i%></h2>
<%@include file="demo.jsp" %>
因为<%@include file="demo.jsp" %>只是把这个东西看成是一个普通文件,他不会处理jsp的代码,所以他会先把他全部写到main.jsp中-----先包含然后交给包含页面处理
等效于:
<%@page contentType="text/html;charset=GBK" %>
<h1>main页面</h1>
<%
int i = 10; //注意:被包含页面中也有这个变量哈
%>
<h2>main中的值为:<%=i%></h2>
<%@page contentType="text/html;charset=GBK" %> ----包含的是未处理的文件内容
<%
int i = 1000;
%>
<h1>demo.jsp中i的值是<%=i%></h1>
那么这里可以看到出现了重复的i,那么肯定报错。。。
下面我们使用<jsp:include/>来处理
<%@page contentType="text/html;charset=GBK" %>
<h1>main页面</h1>
<%
int i = 10; //注意:被包含页面中也有这个变量哈
%>
<h2>main中的值为:<%=i%></h2>
<include:jsp page="demo.jsp" />
那么他等效于:
<%@page contentType="text/html;charset=GBK" %>
<h1>main页面</h1>
<%
int i = 10; //注意:被包含页面中也有这个变量哈
%>
<h2>main中的值为:<%=i%></h2>
<h1>demo.jsp中i的值是10</h1>----他包含的是处理后的内容
4。跳转指令
跳转指令,当一执行此指令时,程序会无条件立即跳转
语法1:
<jsp:forward page="页面"/>
语法2:
<jsp:forward page="页面">
<jsp:param name="参数名" value="值" />
.....
</jsp:forward>
demo.jsp 中
<h1>哈哈</h1>
<jsp:forward page="demo2.jsp" />
demo2.jsp
<h1>哈哈,我是demo2</h1>
运行后就直接跳转了。。。这是服务器端跳转
[/code]