jsp详细说明
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jsp详细说明相关的知识,希望对你有一定的参考价值。
1:JSP (Java Server Page)是 Sun Microsystems 公司的一种规范,它将 Java 与 html 相结合。JSP本质是就是Servlet; JSP 是使用Java 开发基于 Web 的应用程序不可或缺的组成部分
<%
for(int i=0;i<3;i++)
{
%>
<input type="button" value="<%=i%>"><br>
<%
}
%>
2:jsp程序(文件)的基本组成元素:
注释元素,
指令元素(相当是编译指令)
脚本元素 (其中包括九大内建对象) ,
动作元素
v 注释元素
Jsp文件中包含四种注释:
客户端显示的注释 (可在其中包括动态内容)
<!-- comment [ <%= expression %> ] -->
程序员专用注释(只能通过查看原始 JSP 文件查看; JSP容器忽略此注释的主体)
<%-- comment --%>
<% /** 多行注释 **/ %>
<% //单行注释 %>
v 指令元素
指令(Directives)主要用来提供整个JSP 网页相关的信息,并且用来设定JSP网页的相关属性,例如:网页的编码方式、语法、信息等。
起始符号为: <%@
终止符号为: %>
中间部分就是一些指令和一连串的属性设定,如下所示:
<%@ directive attribute ="value" %>
包含三种指令: page指令 include指令 taglib指令
page指令
page 属性 (属于指令元素)
info 页面信息
language 定义使用的脚本语言,目前只能是java
pageEncoding 定义JSP字符编码
contentType 定义JSP字符编码和页面MIME
contentType=“text/html; charset=gb2312”
extends 继承
Import 引用java类包
session 指定在一个http会话该页面是否参与, 默认值为true
buffer 到客户端输出流的缓冲大小 buffer=“8kb”或者 buffer=“none”
autoFlush 默认true,如果false,缓冲满时运行就异常
isThreadSafe 是否多线程处理请求
errorPage 指定该页面出现异常时调用的页面
isErrorPage 该页是否是错误页,则可以使用exception
include指令
将其他文件(.jsp .html等)引入到本文件中。
格式: <%@ include file = "relativeURLspec" %>
include 指令只有一个属性,那就是file,而relativeURLspec 表示此file 的路径。
例如: <%@include file=“/other.htm”%>
注意: 不能将Servlet引入到jsp中。 即file属性不能指向一个Servlet。
taglib指令
taglib 指令的语法如下:
<%@ taglib uri = "tagLibraryURI" prefix="tagPrefix" %>
此指令将在JSTL一节有详细使用
v 脚本元素 (九大内建对象)
使开发者能直接将java代码嵌入JSP页面HTML标记中。
有三种类型:代码段(Scriptlets) 表达式(Expressions) 声明(Declarations)
代码段(Scriptlets)
scriptlet中可以包含有效的程序片段, 只要是合乎java本身的标准语法即可。通常我们主要的程序也是写在这里面,scriptlet 是以 <% 为起始;%> 为结尾。
Scriptlet 的语法:<% code fragment %>
表达式(Expressions)
expressions标签是开始是:<%=
结束是:%>。 其中间内容包含一段合法的表达式;
expressions 的语法:<%= expression %>
范例:
<font color="blue"><%= getName() %></font>
<%= (new java.util.Date()).toLocaleString() %>
表达式在执行后会被自动转化为字符串,然后显示出来。
声明(Declarations)
在JSP 程序中声明合法的变量和方法。
起始标记是: <%!
终止标记是: %>
声明的语法:
<%! declaration; [ declaration; ]+ ... %>
示例:
<%! int i = 0; %>
<%! int a, b, c; %>
<%! public String speak(){ return “”; } %>
<%!
int i=0;
public String speak(){ return “”; }
%>
注意:使用<%! %>方式所声明的变量为全局变量,即表示:若同时n 个用户在执行此JSP网页时,将会共享此变量
jsp内建对象是)(属于脚本元素): 在jsp中预定义好的对象;开发者可以在jsp直接使用,无需定义和创建。
Jsp内建对象有: (蓝色要求撑握)
page
out
request
response
session
application
config
exception
pageContext
v 动作元素
动作元素实际就是jsp页面的一些标记,通过解释转换成相应的java代码,达到某些功能。
动作元素与指令元素不同,动作元素是在客户端请求时动态执行的,每次有客户端请求时可能都会被执行一次,而指令元素是在编译时被编译执行,它只会被编译一次。
一个JSP动作元素,通过它可以操作隐含对象和其它服务器端对象,也能够定义新的脚本变量。
动作元素(Actions)遵循XML的语法,由一个开始标记开始,一个主体和一个结束标记。如果主体是空的,它也可以使用空标记。标记必须有一个前缀 ”jsp:”。
上面中:<jsp:useBean :scope 是设置其范围的:例如可以设这些值
<jsp:useBean scope = page|request|session|application>
<%@include和jsp:include的区别
<%@ include file="date.jsp" %> | <jsp:include page="date.jsp" flush="true"/> |
include编译指令是在JSP程序的转换时期就将file属性所指定的程序内容嵌入,然后再编译执行; | 而include指令在转换时期是不会被编译的,只有在客户端请求时期如果被执行到才会被动态的编译载入 根据运行时的情况来决定要引入哪一个页面 |
只生成一个class文件 | 多个 |
Include不能带参数
| <jsp:include>可以
|
同一个request对象 | 不同的request对象,可以取得包含它的页面的参数,并添加了自己的参数 |
<%@ include file=“”%>在编译时包含进主组件,称之为静态包含; 效率相比高 | <jsp:include page=“”> 在请求运行时包含进主组件,称之为动态包含; 效率相比低
|
常用 | 不常用 |
<jsp:forward>
该操作允许将请求转发到另一个web组件(JSP,Servlet,HTML等)。一旦遇上此标记即会停止执行当前的JSP,转而执行被转发的资源。和Servlet和的请求转发相似。
格式:<jsp:forward page=""/>
<jsp:param>
jsp:param操作被用来以“名-值”对的形式为其他标签提供附加信息。写一般与<jsp:forward>,<jsp:include>,<jsp:plug>一起使用。
它的使用方式如下:
<jsp:param name="paramName" value="paramValue"/>
<jsp:include page=“userinfo.jsp”>
<jsp:param name=“username” value=“hellking”> ….
</jsp:include>
<jsp:forward page=“userinfo.jsp”>
<jsp:param name=“username” value=“hellking”>
forward和sendredirect的区别
Sendredirect | Forward |
是不同的request | 虽然是不同的对象,但是,可以取到上一个页面的内容 |
send后的语句会继续执行,除非return | forward后的语句不会继续发送给客户端 |
速度慢 | 速度快 |
需要到客户端的往返,可以转到任何页面, | 服务器内部转换, |
地址栏有变化 | 地址栏没有变化 |
可以传参数,直接写在url后面 | 可以传参数 |
/代表的是http://127.0.0.1/ <%response.sendRedirect("/test/ServletToJSP");%> <form action="/test/ServletToJSP"> <a href="/test/ServletToJSP">test</a> | /代表的是http://127.0.0.1/test this.getServletContext().getRequestDispatcher ("/servlet_jsp/ServletUseJsp.jsp") 并且只能以/开头 |
常用 | 常用 |
Cookie 和session的区别
注意cookie有时候禁不掉
Cookie | session |
存储在客户端 | 存储在服务器端 |
两种类型 l 有声明周期 l 无声明周期 | 两种实现方式 l 依赖于cookie l url重写 |
父路径不能访问子路径的cookie | 同一个session的窗口共享一个session |
典型应用: l 3个月不用再登陆 l 购物车(http://www.china-pub.com/) | 典型应用: l 用户登陆 l 购物车也可以用session实现。· |
不可靠 | 可靠 |
以上是关于jsp详细说明的主要内容,如果未能解决你的问题,请参考以下文章