jsp基本语法
一 脚本元素
1.JSP数据定义
语法格式:
<%! 变量声明 %>
例:
<%!
String name=”liu”;
int i=0;
%>
2.JSP程序块
脚本段是在请求处理期要执行的Java代码段。脚本段可以输出,并将输出返回给客户端;也可以进行流程控制。
语法格式:
<%代码段%>
例:
<% double r=10.0, s;
s=3.14 * r * r;
out.print(s);
%>
3.JSP表达式
JSP中提供了一种表达式,可以很方便的输出运算结果
语法格式:
<%=Java表达式 %>
注:“<%=”三个字符之间不能有空格,表达式之后没有“;”。
例:
<%=3.14*r*r %>
二 jsp指令元素
格式:
<%@ 指令名 属性名1=“属性值”; 属性名2=“属性值”;… %>
1. page指令
page指令主要用来设定整个JSP文件的属性和相关功能
例:
<%@ page language="java" import="java.util.*,bean.Student" pageEncoding="UTF-8"%>
2.include指令
将一个文件内容静态地包含到当前jsp文件的指定位置
语法格式:
<%@ include file = ”被包含文件URL” %>
3. taglib指令
在jsp页面中引入自定义标签库
语法格式:
<%@ taglib uri=”tagLibraryURI” prefix=”tagPrefix” %>
其中uri="tagLibraryURI"是指明标签库文件的存放位置。而prefix="tagPrefix"则表示该标签使用时的前缀。
例:
<%@ taglib uri = "/struts-tags" prefix = "s"%>
三 jsp动作元素
1.< jsp:param>
以“Key-value”的形式为其他动作元素提供参数,一般和< jsp:include>、< jsp:forward>和< jsp:plugin>一起使用。
语法格式:
<jsp:param name = “paramName” value = “paramValue”/>
例:
<jsp:param name= "username" value ="liu"/>
上面的操作就是将liu的值和username对应起来,从而使liu和usename两者相关联。
2.< jsp:include>
在当前JSP页面中动态地包含一个HTML文件或JSP文件
include指令是在编译级别完成的包含,即把当前JSP和被包含的JSP合并成一个JSP,然后再编译成一个Servlet。
include动作标签是在运行级别完成的包含,即当前JSP和被包含的JSP都会各自生成Servlet,然后在执行当前JSP的Servlet时完成包含另一个JSP的Servlet。
语法格式:
< jsp:include page="{relativeURL|<%= expression %> }“flush=“true” />
或者 < jsp:include page=”{relativeURL|<%= expression %>}“flush=“true”>
< jsp:param name=“paramName"value=”{ paramValue|<%= expression %>}”/> < /jsp:include>
< jsp:include>可以向一个对象提出请求,并可以将结果包含在一个JSP文件中。
例:
<jsp:include page=" scripts/login.jsp " >
<jsp:param name="usename" value="zheng" />
</jsp:include>
3.< jsp:forward>
该动作的功能是告诉JSP容器停止当前JSP文件的执行,将请求转向另一资源(HTML文件,JSP文件,servlet)
语法格式:
<jsp:forward page=" { relativeURL | <%= expression %> } " />
或者为:
< jsp:forward page=" { relativeURL | <%= expression %> } " >
<jsp:param name=“paramName” value="{ paramValue | <%= expression >}"/>
< /jsp:forward>
4 < jsp:useBean >
用于实例化一个JavaBean,或定位一个已经存在的JavaBean实例,并把实例的应用赋予一个变量。
语法格式:
< jsp:useBean id=“对象名称” scope=“储存范围” class=“类名”></jsp:useBean>
id属性:表示该JavaBean实例化后的对象名称。 在所定义的范围中确认Bean的变量,使之能在后面的程序中使用此变量名来分辨不同的Bean ,这个变量名对大小写敏感,必须符合所使用的脚本语言的规定,这个规定在Java Language 规范已经写明。如果Bean已经在别的“< jsp:useBean>” 标记中创建,则当使用这个已经创建过的Bean时,id的值必须与原来的那个id值一致;否则则意味着创建了同一个类的两个不同的对象。
scope属性:指定该JavaBean的范围,也就是指JavaBean实例化后的对象储存 范围。范围的取值有如下四种,分别是page、request、session和 application。
class属性:用来指定JavaBean的类名,这里所指的类名包括包名和类名。
5 < jsp:setProperty>
为指定的Bean的属性赋值,必须和< jsp:useBean >一起使用。该动作通过调用Bean的set*方法来为属性赋值。
<jsp:setProperty name=“实例化对象名” property="*"/>
<jsp:setProperty name=“实例化对象名” property=“属性名称”/>
<jsp:setProperty name=“实例化对象名” property=“属性名称” param=“参数名称”/>
<jsp:setProperty name=“实例化对象名” property=“属性名称” value=“属性值” />
name属性用来设置实例化对象名,必须和< jsp:useBean>中的id属性保持一致。
property属性用来指定JavaBean属性名称。
param属性用来指定接受参数名称,value属性用来指定属性值。
6 < jsp:getProperty>
用于访问Bean的属性并输出到JSP页面中,相当于调用Bean的get**方法。
语法格式:
<jsp:getProperty name=“实例化对象名” property=“属性名称”/>
其中:
name属性:实例化对象名,和< jsp:useBean>中的id属性保持一致。
property属性:用来指定JavaBean属性名称。
注释
1 HTML注释
< !-- 注释 -->
不能出现在JSP代码段中,对客户端是可见的。
2 JSP注释
<%-- 注释 --%>
被JSP容器忽略,但不会被返回给客户端。一般用于代码功能注释
3 Java注释
<% //单行注释%>
<%/* 多行注释 */%>
内置对象
不用声明就可以在JSP脚本中使用的对象。用自己的生命周期。
9个内置对象:out,response,request,session,application,exception,config,page,pageContext等
out对象
表示一个输出流,其主要功能是向客户端输出信息。
常用方法有:
void print()
void println()
void newline() //输出一个空行
void close() //关闭输出流
out.getBufferSize() //获取当前缓冲区的大小
request对象
request对象是javax.servlet.http.httpservletrequest接口的实例化对象。
request对象封装了客户端请求的所有信息,如请求头,提交参数,cookie信息,客户端浏览器信息等。
常用方法有:
void setAttribute(String name, Object value):向request对象添加一个附加属性
Object getAttribute(String name):获取request中的附加属性
void removeAttribute(String name):移除request中附加属性
String getHeader(String name):获取指定名称的请求头
Enumeration getHeaderNames():获取所有请求头名称
int getIntHeader(String name):获取值为int类型的请求头
String getQueryString():返回请求URL中的参数
int getContentLength():获取请求体的字节数
String getContentType():获取请求类型
String getMethod():返回请求方法,
Locale getLocale():返回当前客户端浏览器的Locale
String getCharacterEncoding():获取请求编码,
void setCharacterEncoding(String code):设置请求编码,只对请求体有效
String getContextPath():返回上下文路径,例如:/hello
String getQueryString():返回请求URL中的参数,例如:name=zhangSan
String getRequestURI():返回请求URI路径,例如:/hello/oneServlet
StringBuffer getRequestURL():返回请求URL路径,
String getServletPath():返回Servlet路径,例如:/oneServlet
String getRemoteAddr():返回当前客户端的IP地址;
String getRemoteHost():返回当前客户端的主机名,
String getScheme():返回请求协议,例如:http;
String getServerName():返回主机名,例如:localhost
int getServerPort():返回服务器端口号,例如:8080
response对象
是javax.servlet.http.HttpServletResponse接口的实例。
对客户端的请求进行响应,设置响应头,向客户端写入coolie信息,将处理结果返回给客户端。
常用方法:
addHeader(String name,String value)
添加http头文件,该Header将会传到客户端去,如果有同名的Header存在,那么原来的Header会被覆盖。
setHeader(String name,String value)
设定指定名字的http文件头的值,如果该值存在,那么它将会被新的值覆盖。
flushBuffer()
强制将当前缓冲区的内容发送到客户端。
addCookie(Cookie cookie)
添加一个Cookie对象,用来保存客户端的用户信息,可以用request对象的getCookies()方法获得这个Cookie。
setRedirect(url)
把响应发送到另一个指定的页面(url)进行处理。
setContentType(String type)
设置HTTP响应的MIME类型。
sendError(int sc)
向客户端发送错误信息。
请求转发和重定向
application对象
是javax.servlet.ServletContext接口的实例化对象。是一个公共对象,它代表整个web应用程序。
常用方法:
getInitParameter() //读取web.xml中参数
setAttribute/getAttribute/removeAttribute //绑定获取移除
getRealPath(“1.jsp”) //用于获取文件绝对路径:
getResoursePaths(“/picture”) //用于获取目录下的所有目录和文件 的路径,返回Set类型:
getResourceAsStream("/1.properties") //用于获得web应用中的资源:
session对象
是javax.servlet.http.HttpSession接口实例。
是支持HTTP会话机制的解决方案。
代表服务器与客户端所建立的会话,在不同的JSP页面中保留客户的信息。
会话:从客户打开浏览器连接到服务器开始,到客户关闭浏览器离开这个服务器结束。
session对象具有一个唯一的ID
常用方法:
HttpSession session = request.getSession();如果session已经被创建,则返回已经创建的。如果未创建,则创建新的session。一个客户端拥有一个session对象。
session.setMaxInactiveInterval(6) 以秒为单位设置session的最大空闲时间(也可以在web.xml中中配置空闲时间)。
session.invalidate() 强制session失效。
getAttribute(String name):获得指定名字的属性,如果该属性不存在,将会返回null。
getAttributeNames():返回session对象中存储的每一个属性对象,结果集是一个Enumeration类的实例。
getCreationTime():返回session对象被创建的时间,单位为毫秒。
getId():返回session对象在服务器端的编号。每生成一个session对象,服务器都会给它一个编号,而且这个编号不会重复,这样服务器才能根据编号来识别session,并且正确地处理某一特定的session及其提供的服务。
getLastAccessedTime():返回当前session对象最后一次被操作的时间,单位为毫秒。
getMaxInactiveInterval():获取sessionn对象生存时间,单位为秒。
removeAttribute(String name):删除指定属性的属性值和属性名。
setAttribute(String name,Java.lang.Object value):设定指定名字的属性,并且把它存储在session对象中(会话中保存对象)。
config对象
“config” 对象提供一些配置信息,常用的方法有getInitParameter和getInitParameterNames,以获得Servlet初始化时的参数。
config对象是ServletConfig类的一个对象,存放着一些Servlet初始化信息,且只有在JSP页面范围内才有效。
其常用方法如下:
getInitParameter(name):取得指定名字的Servlet初始化参数值。
getInitParameterNames():取得Servlet初始化参数列表,返回一个枚举实例。
getServletContext():取得Servlet上下文(ServletContext)。
getServletName():取得生成的Servlet的名字。
page对象
page对象代表JSP页面本身,只是this引用的一个代名词,一般很少用到该对象。
exception对象
是Java.lang.Throwable类的对象实例,表示运行时异常。
此对象不能在一般JSP文件中直接使用,而只能在使用了“<%@ page isErrorPage=”true “%>”的JSP文件中使用
常用方法如下:
getMessage():返回错误信息。
printStackTrace():为标准错误的形式输出一个错误和错误的堆栈。
toString():以字符串的形式返回一个对异常的描述。
pageContext对象
是javax.servlet.jsp.pageContext类的对象实例,它提供jsp页面的上下文,代表jsp页面本身,一般很少使用
常用方法:
getRequest(),
getResponse(),
getPage()
getServletContext()
getApplication()
getOut()
getSession()
getException()
getServletConfig()
getAttribute()//返回与指定范围内名称有关的变量或null,例如:
CustomContext MyContext = (CustomContext);
pageContext.getAttribute(“Large Bird”, PageContext.SESSION_SCOPE);
这段代码在作用域中获得一个对象。
forward(String relativeUrlPath)//把页面重定向到另一个页面或者Servlet组件上。
findAttribute()//用来按照页面请求、会话以及应用程序范围的顺序实现对某个已经命名属性的搜索。
getException()//返回当前的exception对象。
setAttribute()//用来设置默认页面的范围或者指定范围之中的已命名对象。这段代码在作用域中设置一个对象。
removeAttribute()//用来删除默认页面范围或指定范围之中已命名的对象。