第1章JSP概述1、JSP(JavaServerPages)是基于Java语言的一种Web应用开发技术。利用这一技术可以建立安全、跨平台、易维护的Web应用程序2、一个服务器上可以有很多基于JSP的Web应用程序,以满足各种用户的需求。这些Web应用程序必须有一个软件来统一管理和运行,这样的软件被称做JSP引擎或JSP容器。将安装JSP引擎的计算机称作一个支持JSP的Web服务器。这个服务器负责运行JSP,并将运行结果返回给用户3、在传统的HTML页面文件中加入Java程序片和JSP标记就构成了一个JSP页面文件,按文本文件保存,扩展名为.jsp4、新建Web服务目录:可以把Tomcat服务器所在计算机的某个目录(非webapps下的子目录)设置成一个Web服务目录,并为该Web服务目录指定虚拟目录。打开D:\apache-tomcat-6.0.13\conf\server.xml找到/Host并在它的前面加入Contextpath=/appledocBase=D:\zhangdebug=0reloadable=true/将JSP页面example1_1.jsp保存到D:\zhang目录中,在浏览器的地址栏中输入就可以访问该JSP页面5、JSP运行原理:当服务器上的一个JSP页面被第一次请求执行时,服务器上的JSP引擎首先将JSP页面文件转译成一个java文件,并编译这个java文件生成字节码文件,然后执行字节码文件响应客户的请求.(1)把JSP页面中的HTML标记符号(页面的静态部分)交给客户的浏览器负责显示。(2)负责处理JSP标记,并将有关的处理结果发送到客户的浏览器。(3)执行“%”和“%”之间的java程序片(JSP页面中的动态部分),并把执行结果交给客户的浏览器显示。(4)当多个客户请求一个JSP页面时,Tomcat服务器为每个客户启动一个线程,该线程负责执行常驻内存的字节码文件来响应相应客户的请求。第2章JSP页面与JSP标记1、JSP页面可由5种元素组合而成:①普通的HTML标记符;②JSP标记,如指令标记、动作标记;③变量和方法的声明;④Java程序片;⑤Java表达式;2、JSP页面的运行原理:把JSP页面中普通的HTML标记符号,交给客户的浏览器执行显示。JSP标记、数据和方法声明、Java程序片由Tomcat服务器负责执行,将需要显示的结果发送给客户的浏览器。Java表达式由Tomcat服务器负责计算,将结果转化为字符串,交给客户的浏览器负责显示。3、在JSP页面的标记符:“%!”和“%”之间声明的变量称作JSP页面的成员变量。“%!”和“%”之间声明方法。该方法在整个JSP页面有效在“%”和“%”之间插入Java程序片。程序片中声明的变量称为JSP页面的局部变量。4、多个客户请求一个JSP页面时,Java程序片将被执行多次,分别在不同的线程中执行。5、“%=”和“%”之间可以是一个Java表达式。表达式的值由服务器负责计算,并将计算结果用字符串形式发送到客户端显示。6、HTML注释格式:!--注释内容--JSP注释格式:%--注释内容--%7、page指令用来定义整个JSP页面的一些属性和这些属性的值。page指令标记可以指定如下属性的值contentType、import、language、session、buffer、auotFlush、isThreadSafe、pageEncoding。属性值用单引号或双引号括起来。可以用一个page指令指定多个属性的值,也可以使用多个page指令分别为每个属性指定值.page指令的作用对整个JSP页面有效,与其书写的位置无关,习惯把page指令写在JSP页面的最前面。(1)page指令__language属性:定义JSP页面使用的脚本语言,该属性的值目前只能取java。例如:%@pagelanguage=java%(2)page指令__import属性:该属性的作用是为JSP页面引入Java运行环境提供的包中的类,这样就可以在JSP页面的程序片部分、变量及函数声明部分、表达式部分使用包中的类。(3)page指令_contentType属性:contentType属性值确定JSP页面响应的MIME(MultipurposeInternetMailExtention)类型和JSP页面字符的编码。(4)page指令_session属性:用于设置是否需要使用内置的session对象。session的属性值可以是true或false。session属性默认的属性值是true。(5)page指令_buffer属性:内置输出流对象out负责将服务器的某些信息或运行结果发送到客户端显示,buffer属性用来指定out设置的缓冲区的大小或不使用缓冲区。例如:%@pagebuffer=“24kb”%buffer属性的默认值是8kb。buffer属性可以取值“none”,设置out不使用缓冲区。(6)page指令_autoFlush属性:指定out的缓冲区被填满时,缓冲区是否自动刷新autoFlush属性的默认值是true(7)page指令_isThreadSafe属性:用来设置JSP页面是否可多线程访问isThreadSafe属性的默认值是true。(8)page指令_info属性:info属性的属性值是一个字符串,其目的是为JSP页面准备一个常用且可能需要经常修改的字符串。例如:%@pageinfo=“wearestudents”%注:可以在JSP页面中使用方法:getServletInfo();获取info属性的属性值。8、include指令标记:作用是在JSP页面出现该指令的位置处,静态插入一个文件。其语法格式如下:%@includefile=文件的URL%注:如果该文件和当前JSP页面在同一Web服务目录中,那么“文件的URL”就是文件的名字;如果该文件在JSP页面所在的Web服务目录的一个子目录中,比如fileDir子目录中,那么“文件的URL”就是“fileDir/文件的名字”。注:静态插入,就是当前JSP页面和插入的文件合并成一个新的JSP页面,然后JSP引擎再将这个新的JSP页面转译成Java文件9、include动作标记:语法格式:jsp:includepage=文件的URL/或jsp:includepage=文件的URLparam子标记/jsp:includeinclude动作标记告诉JSP页面动态加载一个文件。注:include动作标记是在JSP页面运行时才处理文件,被处理的文件在逻辑和语法上独立于当前JSP页面。10、param动作标记:param标记以“名字-值”的形式为其它标记提供附加信息.语法格式:jsp:paramname=“名字”value=“指定给param的值”注:param标记不能独立使用,需作为jsp:include、jsp:forward、jsp:plugin标记的子标记来使用。注:当该标记与jsp:include动作标记一起使用时,可以将param标记中的值传递到include动作标记要加载的文件中去,被加载的JSP文件可以使用Tomcat服务器提供的request内置对象获取include动作标记的param子标记中name属性所提供的值11、forward动作标记:该指令的作用是:从该指令处停止当前页面的继续执行,而转向执行page属性指定的JSP页面。语法格式:jsp:forwardpage=要转向的页面/或jsp:forwardpage=要转向的页面param子标记/jsp:forward12、plugin动作标记:该动作标记指示JSP页面加载Javaplugin插件。该插件由用户负责下载,并使用该插件来运行Javaapplet小程序。语法格式:jsp:plugintype=appletcode=小程序的字节码文件jreversion=java虚拟机版本号width=小程序宽度值height=小程序高度值jsp:fallback提示信息:用来提示用户的浏览器是否支持插件下载/jsp:fallback/jsp:plugin13、useBean动作标记:该标记用来创建并使用一个Javabean,Sun公司的倡导是:用HTML完成JSP页面的静态部分,用Javabean完成动态部分,实现真正意义上的静态和动态分离。第4章JSP内置对象有些成员变量不用声明就可以在JSP页面的脚本(Java程序片和Java表达式)中使用,这就是所谓的内置对象。内置对象有:resquest、response、session、out、application1、request对象:在JSP中,内置对象request封装了用户请求页面时所提交的信息,该对象调用相应的方法可以获取封装的信息.即request对象可以获取用户提交的信息。用户在请求JSP页面时,通常会使用HTML表单提交信息,表单的一般格式是:FORMmethod=get|postaction=提交信息的目的地页面提交手段/FORMrequest对象获取用户提交信息的最常用的方法是getParameter(Strings).(1)处理汉字信息:当用request对象获取用户提交的汉字字符时,会出现乱码问题,所以对含有汉字字符的信息必须进行特殊的处理。首先,将获取的字符串用ISO-8859-1进行编码,并将编码存放到一个字节数组中,然后再将这个数组转化为字符串对象即可.如下所示:Stringstr=request.getParameter(girl);byteb[]=str.getBytes(ISO-8859-1);str=newString(b);可以用内置对象request对象来获取请求所提交的各类信息,request对象的常用方法如下:getProtocol():获取请求使用的通信协议,如http/1.1等。getServletPath():获取请求的JSP页面所在的目录。getContentLength():获取HTTP请求的长度。getMethod():获取表单提交信息的方式,如POST或GET。getHeader(Strings):获取请求中头的值。getHeaderNames():获取头名字的一个枚举。getHeaders(Strings):获取头的全部值的一个枚举。getRemoteAddr():获取客户的IP地址。getRemoteHost():获取客户机的名称(如果获取不到,就获取IP地址).getServerName():获取服务器的名称。getServerPort():获取服务器的端口号。getParameterNames():获取表单提交的信息体部分中name参数值的一个枚举.(2)处理HTML标记:JSP页面可以含有HTML标记,当用户通过浏览器请求一个JSP页面时,Tomcat服务器将该JSP页面中的HTML标记直接发送到用户的浏览器,由用户的浏览器负责执行这些HTML标记。而JSP页面中的变量声明、程序片以及表达式由Tomcat服务器处理后,再将有关的结果用文本方式发送到用户端的浏览器处理HTML标记_FORM标记FORM标记被习惯地称作表单,用户经常需要使用表单提交数据。表单的一般格式是:FORMmethod=get|postaction=提交信息的目的地页面name=表单的名字数据提交手段部分/FORM其中Form……/Form是表单标记,其中的method属性取值get或post。提交手段包括:通过文本框、列表、文本区等,例如:FORMaction=tom.jspmethod=postINPUT…Select…/SelectOption…/OptionTextArea…/TextArea/FORM①处理