1、JSP学习资料JSP简明参考JSP概论,介绍JSP历史JSP简介:JSP: Java Server Pages(前台页面), JSP1.2 , JSP 2.0Server(服务器,后台程序),Client(客户端),Browse(浏览器)WebApp: B/S != C/SWebAppServer: Tomcat, JBoss, WebLogic, WebSphare,注意:JEE只能做BS项目JSP和servlet的历史:首先出现的servlet,处理前后台,servlet处理前台功能代码过多,页面人员无法参与开发,开发周期很长,维护效率太低。jsp出现,前后台都用jsp开发,代码不能重用(
2、import)jsp和serlvet分别处理前后台创建一个简单JSP的B/S项目中:创建一个WEB-INF的文件夹,在WEB-INF里面创建一个lib驱动包文件夹(放入常用驱动),在WEB-INF里面创建一个classes文件夹(MyEclipse会自动把java文件编译好放在此文件夹下面),在web.xml文件里面写入,把网页文件放在和WEB-INF同级目录下面,文件包括(html,jsp)。打开web服务器,在浏览器地址里面:输入http:/localhost:8089/项目名/输入http:/127.0.0.1:8089/项目名/输入http:/对方主机IP:对方tomcat映射端口/项
3、目名/(支持局域网测试)都可以对当前的B/S项目进行浏览JSP四大特点:1.指令元素,一般都是在一个html或者jsp文件的开始定义,分为页面指令page,包含指令include,标签指令taglib。2.动作元素,jsp专用的标签元素3.脚本元素,手动写入j2se代码局部表达式只有在此局部定义以后的代码才能访问全局表达式 当前jsp页面上下都可以访问显示表达式类似j2se里面的System.out.println();4.JSP中的9大对象。JSP核心语法注释:HTML/XML 注释:!- comment -内部允许使用表达式.客户端的HTML代码会产生相同的注释代码.隐藏的注释(JSP中,
4、但不发送到客户端.jsp编译时会忽略这部分注释.Scriptlets 注释: 同Java注释. (本身就是在Java代码中.)注意:jsp自身的注释优先级是最高的(尽可能使用此注释方式)指令元素在整个JSP文件中有效, 设置全局变量, 声明类, 要实现的方法和输出内容的类型等.并不向客户产生任何输出.例如:指令元素-page页面指令1directivename 就是page.一个jsp页面中包含的多个页面指令被抽出来叠加应用制一个页面上. 除了import外, 其他页面指令只能出现最多一次.使用方法:其中attribue和其可选值:(属性可以单独使用,也可以同时使用几个).属性名意义可选Val
5、ue默认值language指使用的脚本语言JavaJavaimport用,隔开, 表示引入类java.lang.*sessionhttp会话中是否包含此页面true/falsetruebuffer对客户端输出流的缓冲, none表示无, 否则以不小于指定的数值缓冲.none / 具体的缓冲值不小于8kbautoFlushtrue表示缓冲区满时,刷新客户端, false则出现运行异常true/falsetrueinfo对jsp页面的信息备注isErrorPage表明是否为其他页面的error目标, true时可以使用exception对象.true/falsefalseerrorPage有异常时
6、指向的页面isThreadSafe是否能多线程的使用, true表示允许一个JSP同时处理多个用户的请求.true/falsetruecontentType字符编码和MIME类型text/html; charset=iso-8859-1pageEncodingJSP页面的字符编码pageEncoding=”ISO-8859-1”isELIgnored指定EL(表达式语言)是否被忽略true/falsetrue指令元素-include指令 1包含的文件在编译期间被解析.如果路径以 / 开头表示参照应用, 否则参照改jsp页面本身.指令元素-taglib指令 1JSP2.0 新增了JSTL标签库.
7、JSF前缀不能使用: jsp, jspx, java, javax, sun, servlet, sunw .脚本脚本元素-声明 2定义变量或者方法(对应与产生的类的属性和方法.)脚本元素-表达式 2 将被转换为字符串(如果是对象,则使用对象的toString()方法).脚本元素-Scriptlet 2Scriptlet被包含在编译后的Servlet的Service方法中, 多个Scriptlet按照出现的顺序执行, 可以合并为一个Scriptlet. 一个Scriptlet可以使用它前面的Scriptlet定义的变量.动作元素动作元素在请求处理阶段起作用, 使用XML语法写出.或者匹对标签标
8、准的动作元素有: , , , , , , , , , , , , , , , , , , , 动作元素中目前还有可能使用的是:,注意:jsp动作元素严格匹配单双标签,所以,当使用单标签的时候,记得斜线收回标签,否则会报错动作元素- 1提供”名-值”对, 和 jsp:include , jsp:forward , jsp:plugin 一起使用.例如: 注意:此标签必须嵌套使用,不能单独使用动作元素- 2允许在请求时间内在现成的JSP里面包含静态或者动态资源. 被包含的对象只有对JspWriter对象有访问权, 并且不能设置头或者Cookie . 如果页面是缓冲的, 那么缓冲区的刷新要优于包含的
9、刷新, 语法:或者(同时传人参数):.例如: 动作元素- 1停止执行当前的JSP, 转发请求到另一个JSP, Servlet 或者静态资源文件, 要求资源必须位于和本JSP相同的上下文环境中. 或者(同时传人参数):例如:转发和转向都会继续执行当前页的下面的代码,但是此标签不会执行下面的代码,此标签内核机制相当于转发动作元素- 1和useBean一起使用, 用于设置Bean的属性.其中name指jsp:useBean的id, propertyDetails可选形式: property = “*“ property = “propertyName“ property = “propertyNam
10、e“ para =”paraName” property = “propertyName“ value =”propertyValue”property = “*” Bean的属性名, 类型和 request 对象中的参数匹配, 由于表单传过来的都是String, 则JSP会把这些参数转换为Bean中对应的值.request中的空值或者request没有相应属性, 则在Bean属性中不会设置值 .property = “propertyName“ 指定设置某个参数的值,指定了Bean的属性名, 而且属性名与request参数的名字相同,. Request中有空值, 则不会设置任何值.prope
11、rty = “propertyName“ para =”paraName” 指定的参数设置指定的属性.property = “propertyName“ value =”propertyValue” 指定的值可以是字符串,也可以是表达式(需要类型匹配), 用于设置指定属性的值.注意:此标签要和标签结合使用,单独不能使用,jsp:getProperty使用方式:在userbean标签之中使用,获取一个对象的属性值,id属性是对象的名字,property是对象属性的名字动作元素- 1显示bean的属性到网页上.指定获取指定Bean的指定属性, 属性不能是被索引了的.注意:此标签要和标签结合使用,单
12、独不能使用,jsp:setProperty使用方式:在userbean标签之中使用,设置一个对象的属性值,id属性是对象的名字,property是对象属性的名字,value是设置对象属性的值动作元素- 1 2首先试图定位一个Bean实例, 如果这个Bean不存在, 将会从一个class或者模板中进行实例化.其中, scope表示存在的范围: page , request, session, applicationtypedesc可选形式:1. class=”className” : 要求类路径和类名, 需要public的空参数构造函数的非抽象类,2. beanName=”beanName” t
13、ype=”typeName” : 使用instance方法从一个class中实例化一个Bean, 同时指定Bean的类型.Type=” typeName” type是一个类或者接口, 如果没有使用class或者beanName指定type, Bean将不能实例化.例如: 注意:jsp:useBean使用方式:id属性是定义新创建对象的名字,并且设置在scope范围中,以id为key值,class是此类的包名加类名,scope是此对象存放的范围。上面的例子相当于下面的J2SE代码: OneBean onebean = new OneBean(); request.setAttribute(one
14、bean,onebean); onebean.setUsername(think); onebean.getUsername();动作元素- 2用来产生客户端浏览器的特别标签(Object 或者 Embed), 可以使用它来插入Applet或者JavaBean . 用于HTML4.0, 用于HTML 3.2 .语法:jsp:plugin type=”applet|bean” code=”classFileName” codeBase=”classFileDirectoryName” name=”instanceName” archive=”URIToArchive, “align=”botto
15、m|top|middle|left|right”height=”howMantPixels” width=” howMantPixels”hspace=” howMantPixels”vspace=” howMantPixels”jreversion=”JREVersionNumber | 1.1”nspluginurl=”URLToPlugin”iepluginurl=” URLToPlugin” jsp:param name=”parameterName” value=”parameterValue|” / +text message for user 属性/子元素描述默认值typebea
16、n applet 之一codeJava类文件的名称, 需要包括扩展名.classcodeBaseJava类的根目录JSP文件的当前路径nameBean或者Applet的实例名称,则同一个JSP中可以调用.archive逗号隔开的路径名列表, 那些用于codebase指定的目录下的类装载器预装载的存档文件所在的路径名.align对齐方式bottom|top|middle|left|rightheight, width显示的高,宽(单位为像素)hspace, vspace左右上下留出的空间jreversion所需的Java Runtime Environment (JRE) 版本.1.1nsplu
17、ginurlNetscape Navigator 能使用的JRE下载地址iepluginurlInternet Explorer用户能够使用的JRE下载地址:如http:/ jsp:params需要传人的参数jsp:fallbackJava插件不能启动是显示给用户的一段文字动作元素-的一部分,见上面的描述.JSP内建的对象9个对象的简介在J2EE开发中,最主要使用的是两个开发包: 1.javax.servlet包 2.javax.servlet.http包这两个包在web开发中占据了大部分的使用javax.servlet包是J2EE中web开发原型包javax.servlet.http包是J2
18、EE中web开发针对http协议开发的包jsp中的9大对象,都来自于javax.servlet.http包标示为*号的对象是开发中比较常用的对象* application:容器(web服务器)对象,它可以得到容器中的内容config:项目配置参数(目前被servlet配置所代替)exception:jsp中的异常对象* out:页面内容输入对象page:页面对象,最主要是_jspService方法,此方法由容器自动调用pageContext:页面上下文(当前页面的内容)* request:请求对象,由用户发起(目前B/S项目开发的重点)* response:响应对象,用户请求被服务器接收以后,
19、就会产生此对象* session:请求对象和响应对象的连接池存储数据:pageContext,request,session,application (对象范围从小到大)在页面中,一个request和response会产生一个唯一的sessionrequest-session-response (request由用户产生,不同的用户产生的对象也就不同)下面是9个对象在J2EE API中的的原型: request: javax.servlet.http.HttpServletRequest response: javax.servlet.http.HttpServletResponse sess
20、ion: javax.servlet.http.HttpSession application: javax.servlet.ServletContext out: javax.servlet.jsp.JspWriter config: javax.servlet.ServletConfig exception: java.lang.Exception page: javax.servlet.jsp.HttpJspPage pageContext: javax.servlet.jsp.PageContextrequest对象是9大对象中,最重要的开发对象9个对象只能存在于page对象的_jsp
21、Service方法中,也就是只能在局部脚本中操作9个对象,所以说9个对象是由web服务器调用page对象的_jspService方法创建的applicationapplication随着服务器启动而创建, 直到关闭服务器.整个应用的共享对象. 主要作用在于取得或更改Servlet的设定.封装了接口javax.servlet.ServletContext .1. Object getAttribute( String name ) ;返回由name指定的application属性。2. Enumeration getAttributeNames() ;返回所有的application属性。3.
22、ServletContext getContext( String uripath ) ;取得当前应用的ServletContext对象。4. String getInitParameter( String name ) ;返回由name指定的application属性的初始值。5. Enumeration getInitParameters() ;返回所有的application属性的初始值的集合。6. int getMajorVersion() ;返回servlet容器支持的最高Servlet API的版本号。7. String getMimeType( String file ) ;返回
23、指定文件的类型,未知类型返回null。一般为text/html和image/gif。8. int getMinorVersion() ;返回servlet容器支持的最低Servlet API的副版本号。9. String getRealPath( String path ) ;返回给定虚拟路径所对应物理路径。10. RequestDispatcher getNamedDispatcher( String name ) ;为指定名字的Servlet对象返回一个RequestDispatcher对象的实例。11. RequestDispatcher getRequestDispatcher( String path ) ;返回一个RequestDispatcher对象的实例。12. URL getResource( String path ) ;返回指定的资源路径对应的一个URL对象实例,参数要以/开头。13. InputStream getResourceAsStream( String path ) ;返回一个由path指定位置的资
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1