JSP动态网页程序设计详解


  本文标签:JSP

JSP页面从形式上就是在传统的网页HTML文件中加入Java程序片段(Scriptlet)和JSP标签  。Servlet/JSP容器收到客户端发出的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式响应给客户端  。

基本语法:

注释:

1、客户端可以看到的注释:  (可以在批注中加上动态的表达式)

2、开发程序员专用的注释:<%-- comment --%>  或者 <%/** this is a comment **/%>

声明:

  1. <%!declaration; [declaration;]+...%> 

该声明的变量为类变量  。意味着:若同时有n个用户在执行此JSP网页时,他们将会共享此变量  。会引起线程同步上的麻烦  。(不建议使用)

小脚本:

<% Java 代码%>

此类定义的变量为局部变量,不存在多线程同步问题,是线程安全的  。

表达式:

<%=expression %> 不能使用“;”作为表达式的结束符号  。

JSP指令元素:

只是告诉JSP引擎对JSP页面如何编译  。

page指令:设定整个JSP网页的属性和相关功能  。

  1. <%@page attribute1="value1" attribute2="value2" ...%>   
  2. <jsp:directive.page attribute1="value1"...>    

例如:

  1. <%@page contentType="text/html; charset=utf-8" language="java" import="java.net.*"%>  

include指令:用于指示JSP容器在JSP编译时插入一个包含文本或代码的文件,这个包含的过程是静态的  。注意包含文件中要避免使用,可能会导致错误  。

  1. <%@include file="relativeURLspec"%> 
  2. <jsp:directive.include file="relativeURLspec">  

例如:

  1. <%@include file="Hello.html">   

taglib指令:

  1. <%@taglib uri="tagLibraryURI" prefic="tagPrefix"%> 
  2. <jsp:directive.taglib uri="tagLibraryURI" prefic="tagPrefix">  

JSP操作元素:

  1. <jsp:include>   
  2. <jsp:forward>   
  3. <jsp:param>   
  4. <jsp:useBean>   
  5. <jsp:setProperty>   
  6. <jsp:getProperty>  

request对象与网络信息的提交:

JSP中提供了request对象来接收客户端发送回来的数据  。

◆URL一般语法:protocol://host:port/virtualPath?queryString

◆protocol:表示协议,用于声明在远程机器之间传送信息的低层机制(http ftp https等)  。

◆host:表示请求要发送到的远程机器的名称或者ip地址  。

◆port:声明服务器要监听请求的机器端口号  。

◆virtualPath:包含一个以斜线为分隔符的一组标识符,服务器把它映射到一个物理路径和JSP的位置  。

◆querString:是查询字符串,它是一个成对的名称和值的列表,作为JSP的参数被传递到处理它的JSP页面  。如果有多个参数需要传递,将以“&”号分隔开成对的名称和值  。

request对象所提供的方法:

获取路径和协议信息:

  1. String getProtocol()  获取通信所使用的协议和版本号(如:HTTP /1.1)   
  2. String getScheme()   获取请求中的协议名称(如:HTTP)   
  3. String getPathInfo()  获取请求中处于JSP路径和查询字符串之间的额外信息   
  4. String getContextPath()   
  5. String getRequestURI()   
  6. String getServletPath()   
  7. String getRealPath(String path)  

获取主机和端口信息:

  1. String getServerName()  获取响应请求的服务器名称  。   
  2. int getServerPort()          获取响应请求的服务器端主机端口号  。   
  3. String getLocalName()    获取响应请求的服务器端主机名  。   
  4. String getLocalAddr()      获取响应请求的服务器端地址  。   
  5. int getLocalPort()            获取响应请求的服务器端端口  。   
  6. String getRemoteAddr()  获取发出请求的客户端IP地址  。   
  7. String getRemoteHost()  获取发出请求的客户端主机名  。   
  8. int getRemotePort()        获取发出请求的客户端主机端口  。 

获取查询字符串:

String getQueryString() 获取get()方法传递的参数字符串,即URL中?后面的部分  。

获取查询字符串中的变量值:

  1. String getParameter(String name)  获取客户端发送给服务器端的参数值  。   
  2. Enumeration getParameterNames()  返回请求中所有参数的集合  。   
  3. String[] getParameterValues(String name)  获得请求中指定参数的所有值  。  

例如:

  1. http://localhost:8080/liuxl/jsp/querystring.jsp?str=JSP   
  2. String s=request.getParameter("str"); 获取变量str的值,执行后s的值为“JSP”  。 

注意:getParameter()方法的返回值只能是字符串  。若传递val=100,则需要进行类型转换  。

  1. if(request.getParameter("val")!=null) //判断字符串是否为空     
  2. {         
  3.         num=Integer.parseInt(request.getParameter("val")); //将字符串转化为整数     
  4. }     
  5. else    
  6. {     
  7.         num=0;     
  8. }    
  9.  
  10. if(request.getParameter("val")!=null) //判断字符串是否为空   
  11. {      
  12.         num=Integer.parseInt(request.getParameter("val")); //将字符串转化为整数   
  13. }   
  14. else   
  15. {   
  16.         num=0;   
  17. }  

表单及其在信息传递中的应用:

表单:

是一个能够包含表单元素的区域,HTML为表单提供了多种图形用户界面组件元素 (如文本框,密码框,下拉菜单等),这些表单元素能够让用户在表单输入信息,可以用它们来构成表单内容,作为用户可以输入的域,并可以将其提交给一个JSP进行处理  。

格式:

  1. <form name="" action="" method="">   
  2. ...   
  3. form>  

其中: name用于指定表单的名称  。action用于指定表单被提交时所要执行的动作  。method指定传递请求给JSP所用的方法(GET、POST、PUT,常用POST)  。

1、标签  常用于输入信息或提交信息

语法:

说明:type允许指定输入类型(text(文本框)、password(密码框)、checkbox(复选框)、radio(单选按钮)、image(图像域)、reset(重置按钮)、submit(提交按钮))  。 name为表单元素的名称  。value为表单元素的初始值  。

例如:

  1. 文本框:<input name="" type="text" value="" size="" maxlength="">   
  2. 密码框:<input name="" type="password" value="" size="" maxlength="">   
  3. 提交按钮:<input name="" type="submit" value="">   
  4. 重置按钮:<input name="" type="reset" value="">   
  5. 单选按钮:<input name="" type="radio" value="" checked> 

(用于从一组选项中选择其中一个选项,checked是可选属性,如果有该属性,则表示该按钮显示时为被选中,否则为未选中  。)

  1. e.g:<input name="radiobutton" type="radio" value="1" checked>选项1   
  2. <input name="radiobutton" type="radio" value="2">选项2  

在选中按钮1的情况下提交URL如下:...?radiobutton=1...

  1. 复选框:<input name="" type="checkbox" value="" checked>  

(用于从一组选项中选择多个选项,checked同上  。与单选按钮相似,复选框常成组使用,与单选按钮不同的是,被选中的多个复选框都会被提交,因此其name可以相同(按数组处理),也可以不同(按不同变量进行处理))

  1. e.g:<input name="checkbox" type="checkbox" value="swim">swim   
  2. <input name="checkbox" type="checkbox" value="run">run  

如果在提交时两个都选中,则URL形式如下:...?checkbox=swim&checkbox=run...

2、

说明:cols为文本域宽度(字符数),rows为文本域的高度(行数) 
   
3、