http://developer.51cto.com/art/201012/237062.htm
JSP 页面从形式上就是在传统的网页HTML文件中加入Java程序片段(Scriptlet)和JSP标签。Servlet/JSP容器收到客户端发出的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式响应给客户端。
基本语法:
注释:
1、客户端可以看到的注释:<!-- comment [<%=expression%>] --> (可以在批注中加上动态的表达式)
2、开发程序员专用的注释:<%-- comment --%> 或者 <%/** this is a comment **/%>
声明:
- < %!declaration; [declaration;]+...% >
该声明的变量为类变量。意味着:若同时有n个用户在执行此JSP网页时,他们将会共享此变量。会引起线程同步上的麻烦。(不建议使用)
小脚本:
<% Java 代码%>
此类定义的变量为局部变量,不存在多线程同步问题,是线程安全的。
表达式:
<%=expression %> 不能使用“;”作为表达式的结束符号。
JSP指令元素:
只是告诉JSP引擎对JSP页面如何编译。
page指令:设定整个JSP网页的属性和相关功能。
- < %@page attribute1 = "value1" attribute2 = "value2" ...% >
- < jsp:directive.page attribute1 = "value1" ... >
例如:
- < %@page contentType = "text/html; charset=utf-8" language = "java" import = "java.net.*" % >
include指令:用于指示JSP容器在JSP编译时插入一个包含文本或代码的文件,这个包含的过程是静态的。注意包含文件中要避免使用<html><body>,可能会导致错误。
- < %@include file = "relativeURLspec" % >
- < jsp:directive.include file = "relativeURLspec" >
例如:
- < %@include file = "Hello.html" >
taglib指令:
- < %@taglib uri = "tagLibraryURI" prefic = "tagPrefix" % >
- < jsp:directive.taglib uri = "tagLibraryURI" prefic = "tagPrefix" >
JSP操作元素:
- < jsp:include >
- < jsp:forward >
- < jsp:param >
- < jsp:useBean >
- < jsp:setProperty >
- < jsp:getProperty >
request对象与网络信息的提交:
JSP中提供了request对象来接收客户端发送回来的数据。
◆URL一般语法:protocol://host:port/virtualPath?queryString
◆protocol:表示协议,用于声明在远程机器之间传送信息的低层机制(http ftp https等)。
◆host:表示请求要发送到的远程机器的名称或者ip地址。
◆port:声明服务器要监听请求的机器端口号。
◆virtualPath:包含一个以斜线为分隔符的一组标识符,服务器把它映射到一个物理路径和JSP的位置。
◆querString:是查询字符串,它是一个成对的名称和值的列表,作为JSP的参数被传递到处理它的JSP页面。如果有多个参数需要传递,将以“&”号分隔开成对的名称和值。
request对象所提供的方法:
获取路径和协议信息:
- String getProtocol() 获取通信所使用的协议和版本号(如:HTTP /1.1)
- String getScheme() 获取请求中的协议名称(如:HTTP)
- String getPathInfo() 获取请求中处于JSP路径和查询字符串之间的额外信息
- String getContextPath()
- String getRequestURI()
- String getServletPath()
- String getRealPath(String path)
获取主机和端口信息:
- String getServerName() 获取响应请求的服务器名称。
- int getServerPort() 获取响应请求的服务器端主机端口号。
- String getLocalName() 获取响应请求的服务器端主机名。
- String getLocalAddr() 获取响应请求的服务器端地址。
- int getLocalPort() 获取响应请求的服务器端端口。
- String getRemoteAddr() 获取发出请求的客户端IP地址。
- String getRemoteHost() 获取发出请求的客户端主机名。
- int getRemotePort() 获取发出请求的客户端主机端口。
获取查询字符串:
String getQueryString() 获取get()方法传递的参数字符串,即URL中?后面的部分。
获取查询字符串中的变量值:
- String getParameter(String name) 获取客户端发送给服务器端的参数值。
- Enumeration getParameterNames() 返回请求中所有参数的集合。
- String[] getParameterValues(String name) 获得请求中指定参数的所有值。
例如:
- http://localhost:8080/liuxl/jsp/querystring.jsp? str = JSP
- String s = request .getParameter("str"); 获取变量str的值,执行后s的值为“JSP”。
注意:getParameter()方法的返回值只能是字符串。若传递val=100,则需要进行类型转换。
- if(request.getParameter("val")!=null) //判断字符串是否为空
- {
- num = Integer .parseInt(request.getParameter("val")); //将字符串转化为整数
- }
- else
- {
- num = 0 ;
- }
- if(request.getParameter("val")!=null) //判断字符串是否为空
- {
- num = Integer .parseInt(request.getParameter("val")); //将字符串转化为整数
- }
- else
- {
- num = 0 ;
- }
表单及其在信息传递中的应用:
表单:
是一个能够包含表单元素的区域,HTML为表单提供了多种图形用户界面组件元素 (如文本框,密码框,下拉菜单等),这些表单元素能够让用户在表单输入信息,可以用它们来构成表单内容,作为用户可以输入的域,并可以将其提交给一个JSP进行处理。
格式:
- < form name = "" action = "" method = "" >
- ...
- </ form >
其中: name用于指定表单的名称。action用于指定表单被提交时所要执行的动作。method指定传递请求给JSP所用的方法(GET、POST、PUT,常用POST)。
1、<input>标签 常用于输入信息或提交信息
语法:<input type="" name="" value="">
说明:type允许指定输入类型(text(文本框)、password(密码框)、checkbox(复选框)、radio(单选按钮)、 image(图像域)、reset(重置按钮)、submit(提交按钮))。 name为表单元素的名称。value为表单元素的初始值。
例如:
- 文本框: < input name = "" type = "text" value = "" size = "" maxlength = "" >
- 密码框: < input name = "" type = "password" value = "" size = "" maxlength = "" >
- 提交按钮: < input name = "" type = "submit" value = "" >
- 重置按钮: < input name = "" type = "reset" value = "" >
- 单选按钮: < input name = "" type = "radio" value = "" checked >
(用于从一组选项中选择其中一个选项,checked是可选属性,如果有该属性,则表示该按钮显示时为被选中,否则为未选中。)
- e.g: < input name = "radiobutton" type = "radio" value = "1" checked > 选项1
- < input name = "radiobutton" type = "radio" value = "2" > 选项2
在选中按钮1的情况下提交URL如下:...?radiobutton=1...
- 复选框: < input name = "" type = "checkbox" value = "" checked >
(用于从一组选项中选择多个选项,checked同上。与单选按钮相似,复选框常成组使用,与单选按钮不同的是,被选中的多个复选框都会被提交,因此其name可以相同(按数组处理),也可以不同(按不同变量进行处理))
- e.g: < input name = "checkbox" type = "checkbox" value = "swim" > swim
- < input name = "checkbox" type = "checkbox" value = "run" > run
如果在提交时两个都选中,则URL形式如下:...?checkbox=swim&checkbox=run...
2、<textarea>标签 声明了一个用户可以输入多行文本的区域
语法:<textarea name="" rows="" cols="" >text</textarea>
说明:cols为文本域宽度(字符数),rows为文本域的高度(行数)
3、<select>标签 声明了一个可选项的列表,用户可以选择一个或多个选项
- < select name = "" size = "" multiple >
- < option value = "" selected > option </ option >
- ...
- < option value = "" > option </ option >
- </ select >
说明:name是名称,size是列表区域高度(即可显示的选项数),multiple是可选属性,若有表示可选择多项。selected是一个可选属性,有表示该选项设置为已选中。