您的位置:首页 > Web前端 > JavaScript

JSP基础语法

2013-04-11 19:46 113 查看
JSP传统语法

--Declaration

--Scriptlet

--Expression

--Comment

--Directives

--Action动作指令

--内置对象

1、Declaration

基本语法:

<%!  %>

说明:在此声明的变量、方法都会被保留成唯一的一份,直到JSP程序停止执行。此部分声明的变量会转化为SERVLET的成员变量,函数只能在此处声明。

例:

<%!

int i;

public void setName(){… …}

%>

2、Scriptlet

基本语法:

<%程序代码区%>

可以放入任何的Java程序代码,此部分声明的变量为局部变量,在service()方法里

例:

<%

for (int i=0;i<10,i++)

{

 … …

}

%>

3、表达式

基本语法:

<%=… …%>

=后面必须是字符串变量或者可以被转换成字符串的表达式

不需要以;结束,只有一行

例:

<%=“hello world”%>

<%=i+1%>

<%=request.getParameter(“name”)%>

4、Directive

Directive(编译指令)相当于在编译期间的命令

格式:

<%@Directive 属性=“属性值”%>

常见的Directive:

page

include

taglib

4.1 Directive-page

指明与JSP Container 的沟通方式

基本格式:

<%@page language=“script language”|

 extends=“className”|

 import=“importList”|

 buffer=“none|kb size”|   --none:不缓冲,默认8k

 session=“true|false”|   --是否可以使用session,默认true

 autoFlush=“true|false”  --缓冲器是否自动清除,默认true

 isThreadSafe=“true|false”|  --默认false(永远不要设成true)

 info=“infoText”|    --任何字符
 errorPage=“errorPageUrl”|

 isErrorPage=“true|false”|

 contentType=“contentTyepInfo”|

        pageEncoding=“gb2312”

%>

4.2 Directive-include

将指定的JSP程序或者HTML文件包含进来

格式:

<%@include file=“fileURL%>

JSP Engine会在JSP程序的转换时期先把file属性设定的文件包含进来,然后开始执行转换及编译的工作。(原封不动的把文件的代码copy到该位置,然后进行转换和编译,只生成一个java和class)

限制:

不能向fileURL中传递参数

不能abc.jsp?user=aaa

5 Action

Action(动作指令)在运行期间的命令

常见的:

jsp:useBean

jsp:setProperty

jsp:getProperty

jsp:include

jsp:forward

jsp:param

jsp:plugin

嵌入applet

5.1 jsp:include/jsp:param

用于动态包含JSP程序或HTML文件等

除非这个指令会被执行到,否则它是不会被Tomcat等JSP Engine编译。

格式:

<jsp:include page=“URLSpec” flush=“true”/>

<jsp:include page=“URLSpec” flush=“true”>

     <jsp:param name=“ParamName” value=“paramValue”/>

</jsp:include>

jsp:param用来设定include文件时的参数和对应的值

和编译指令include的区别:

include编译指令是在JSP程序的转换时期就将file属性所指定的程序内容嵌入,然后再编译执行;而include指令在转换时期是不会被编译的,只有在客户端请求时期如果被执行到才会被动态的编译载入

Include不能带参数, 而<jsp:include>可以。

动态包含的文件和被包含文件用的是同一个request对象。产生两个class文件

5.2 jsp:forward/jsp:param

用于将一个jsp的内容传送到page所指定的JSP程序或者Servlet中处理(URL)

格式:

<jsp:forward page=“urlSpec” flush=“true”/>

<jsp:forward page=“urlSpec”>

 <jsp:param name=“paramName” value=“paramValue”/>

</jsp:forward>

<jsp:param>用于指定参数和其对应的值

Forward的页面和forward到的页面用的是同一个request

与此相对应的是

response.sendRedirect

5.3 <jsp:forward>与response.sendRedirect的区别
<jsp:forward>

使用同一个request

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

速度快

服务器内部转换,

可以传参数
response.sendRedirect

是不同的request

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

速度慢

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

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

5.4 jsp:usebean(可以不用这个,用<% XX x = new XX()%>代替)

通过jsp:useBean,可以在JSP中使用定义好的Bean

Bean的基本要素:

必须要有一个不带参数的构造器。在JSP元素创建Bean时会调用空构造器

Bean类应该没有任何公共实例变量,也就是说,不允许直接访问实例变量,变量名称首字母必需小写

通过getter/setter方法来读/写变量的值,并且将对应的变量首字母改成大写

基本用法:

test.jsp/CounterBean.java 不要使用裸体类(规范要求)

jsp:useBean各项参数含义:

id:对象实例名称

scope:Bean作用的范围,默认为page,对整个jsp页面有效

class:Bean类名称(全名)

type:Bean实例类型,可以是本类,或其父类,或实现的接口,默认为本类

Scope各项参数的意义:

page:仅涵盖使用JavaBean的页面

request:有效范围仅限于使用JavaBean的请求

session:有效范围在用户整个连接过程中(整个会话阶段均有效)

application:有效范围涵盖整个应用程序。也就是对整个网站均有效

jsp:setProperty的格式:

<jsp:setProperty name=“beanName” 

 property=“propertyName” |property=“*”

value=“property value” |param=“paramName”/>

相当于beanName.setPropertyName(value)方法调用(setXxx()方法)

jsp:getProperty的格式:

<jsp:getProperty name=“beanName” property=“propertyName”/>

相当于beanName.getPropertyName()方法调用(getXxx()方法)

建立表单参数和Bean属性之间的关联

通过param指定表单元素的名称,通过perperty指定对应的Bean属性名称,由此建立这两个变量的关联

通过*来设置所有属性和输入参数之间的关联

在建立Bean属性和表单参数之间的对应关系时,服务器会将对应的参数自动转换成和属性类型匹配的数据

6 JSP内置对象

out

request

response

pageContext 用的很少

session

application

config 用的很少

exception

Page用的很少

6.1 out:

常用方法:

println():向客户端输出各种类型数据

newLine():输出一个换行符

close():关闭输出流

flush():输出缓冲区里的数据

clearBuffer():清除缓冲区里的数据,同时把数据输出到客户端

clear():清除缓冲区里的数据,但不把数据输出到客户端

getBufferSize():返回缓冲区的大小

6.2 request:

可以用此对象取得请求的Header、信息(如浏览器版本、语言和编码等)、请求的方式(get/post)、请求的参数名称、参数值、客户端的主机名称等

常用方法:

getMethod():返回客户端向服务器端传送数据的方法

getParameter(String paramName):返回客户端向服务器端传送的参数值,该参数由paramName指定

getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举类型数据(Enumeration)

getParameterValues(String  name):获得指定参数的所有值,由name指定

getRequestURI():获得发出请求字符串的客户端地址

getRemoteAddr():获取客户端的IP地址

getRemoteHost():获取客户端机器名称

getServerName():获取服务器的名字

getServletName():客户端所请求的脚本文件路径

getServerPort():获取服务器端的端口

对应类: javax.servlet.http.HttpServletRequest

6.3 response

表示的是返回给客户端的响应

是javax.servlethttp.HttpServletResponse接口的一个实例

经常用于设置HTTP标题,添加cookie、设置响应内容的类型和状态、发送HTTP重定向和编码URL

常用方法:

addCookie(Cookie cookie):添加一个Cookie对象,用于在客户端保存特定的信息

addHeader(String name,String value):添加HTTP头信息,该Header信息将发送到客户端

containsHeader(String name):判断指定名字的HTTP文件头是否存在

sendError(int):向客户端发送错误的信息

sendRedirect(String url):重定向JSP文件

和<jsp:forward>的区别

sendRedirect通过客户端发起二次申请,不同的request对象

Jsp:forward是同一个request,在服务器内部转发

setContentType(String contentType):设置MIME类型与编码方式

6.4 session

getAttribute

setAttribute

PS:提交表格中文传过去变乱码解决方法:request.setCharacterEncoding("gbk")
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: