资料jsp笔记资料jsp资料jsp_第1页
资料jsp笔记资料jsp资料jsp_第2页
资料jsp笔记资料jsp资料jsp_第3页
资料jsp笔记资料jsp资料jsp_第4页
资料jsp笔记资料jsp资料jsp_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、JSP编程 JSP 全称 Java Service Page。 与Servlet类似,运行在服务器内部,能够接受用户的请求,并产生动态的输出结果。 虽然JSP技术在应用方面比较广泛,但是其技术基础正是Servlet,所以在学习JSP之前,一定要牢固的掌握Servlet编程以及相关的web开发技巧。 所有的JSP源文件都以 “.jsp”结尾 。 Jsp源文件既可以保存在web应用的根目录下,也可以保存在web应用下的某个子目录中 通过JSP可以将Java代码嵌入到html标签中,产生动态的输出结果 time.jsptime页面指令, 用于指定JSP的应答类型,插入到Html标签中的Java代码

2、如果time.jsp保存在web应用的根下 : http:/localhost:8989/myapp/time.jsp 如果time.jsp保存在web应用的某个子目录下面 http:/localhost:8989/myapp/subdir/time.jsp 不需要编译,就可以直接运行 如果jsp有编译错误,会显示在浏览器上 代码修改之后,不需要重新启动服务器 不需要配置,浏览器可以向访问HTML文件一样访问JSP JSP更擅长于显示结果,Servlet更擅长于处理业务 JSP是将java代码嵌入到html中,html是jsp得主体 Servlet是将HTML嵌入到java中,java是Ser

3、vlet的主体 JSP 与 Servlet的分工TOMCATforwardServlet: 完成数据库查询等业务操作JSP将查询结果显示给客户端客户端向Servlet 发起请求利用request传递数据request 声明脚本 用于声明变量和函数a= time : 表达式脚本 用于计算表达式的结果,并将结果显示在网页上 表达式脚本是唯一能够产生输出功能的脚本 表达式脚本只能写 表达式 或 函数调用,不能声明变量或函数 在表达式脚本中不能使用”;”结尾 这种写法是错误的 普通脚本 : 可以编写除函数声明之外的任何java代码,如流程控制, 调用函数,JDBC等%int counter = 0 ;

4、for( int i =0 ; icounter is 三种java脚本之间不能相互嵌套%int a = 10 + 5 ;正确的写法% 错误%for(int i=0;i%for(int i=0;i10;i+)正确的写法% 错误 html标签不能嵌套在java标签中%= 1+1%正确的写法错误 分别使用h1 到 h7 七种字体显示Hello World 使用JSP输出99乘法表1*1=12*1=2 2*2=43*1=3 3*2=6 3*3=9. 9*9=81 使上例中的99乘法表显示为红蓝相间的颜色1*1=12*1=2 2*2=43*1=3 3*2=6 3*3=94*1=4 4*2=8 4*3=

5、12 4*4=16 页面指令,用于定义jsp运行时的一些特性 contentType : JSP的应答类型 contentType=“text/html” contentType=“text/html;charset=gbk”在设置应答类型的同时,设定应答的字符集 import : 用于导入jsp中需要导入的package session=“true|false” 是否为访问jsp的请求创建session对象,默认值为true 注意jsp中使用session与servlet中使用session的区别 language=“java” 指明html中嵌入的是何种语言,默认值为java 目前只支持j

6、ava一种语言 isELIgnored :是否忽略EL表达式 其默认值由web服务器决定 errorPage:设定一个错误页面的URL 如果本页面出现异常,会自动跳转到错误页面 isErrorPage=“true|false” 设定本页面是否是一个错误页面,默认值为false 错误页面会比普通页面多一个隐含对象,即异常对象This is a.jsp%int a = 10 ; if( a I can an exception!b.jspa.jsp 通过页面指令 pageEncoding来指明该指令用于指明页面中的静态文本的编码方式,如果发现页面中的静态文字出现乱码,可以使用该指令来解决。静态文本

7、的字符集要与编辑器采用的字符集一致 隐含对象是指在jsp中已经创建好的,可以直接使用的对象 request : HttpServletRequest客户端请求 response:HttpServletResponse session : HttpSession application: ServletContext out : 输出流 config : ServletConfig page : 相当于jsp中的 this exception : 只有错误页面才会有的隐含对象,代表异常 pageContext :jsp中的第四个作用域应答 session , response, out ppli

8、cation%List eduList = applicaction.getAttribute( “eduList” );out.println( “”);for(Edu e : eduList ) out.println( “”+ e.getTitle()+”) ;out.println( “”);% requestHello exceptionThis is a.jsp%int a = 10 ; if( a b.jspa.jsp pageContext是JSP中特有的一个对象 是第四个作用域: 拥有getAttribute 和 setAttribute 两个方法 其作用范围只在本页面当中.

9、是四个作用域中范围最小的一个 通常用来在标签与标签之间传递数据 可以在其他作用域中查找命名属性 pageContext.findAttribute( “a” ); 按照从小到大的顺序,依次在pageContext,request, session,application中查找名字叫a的命名属性,找到第一个后,就立即停止搜索,如果没有找到,则返回null 通过页面指令 pageEncoding来指明该指令用于指明页面中的静态文本的编码方式,如果发现页面中的静态文字出现乱码,可以使用该指令来解决。静态文本的字符集要与编辑器采用的字符集一致此处可以使用相对路径和绝对路径 静态包含指令,用于将目标文件

10、的源代码包含到本页面中 相当于进行了一次拷贝粘贴操作,被包含的目标文件不会生成独立的servlet源码 如果被包含的多个文件中有重名的变量,会出现变量冲突此处可以使用相对路径和绝对路径 动态包含指令,用于将目标文件的输出结果和本页面合并在一起被包含的目标文件独立运行,会生成独立的servlet文件由于只是进行结果的合并,不存在变量冲突 向被动态包含的JSP传递两个客户端参数, 参数的名字分别为a和b,在header.jsp中,可以向获取普通的客户端参数一样去使用这两个参数$param:a 将请求从本页面转发到a.jsp 相当于servlet中的请求转发功能此处可以使用相对路径和绝对路径向b.j

11、sp 传递的客户端参数JSP编程EL表达式 JSP中特有一种简洁的基于表达式的语言使用各个作用域中的命名属性使用对象中的成员变量使用客户端参数以及Cookie进行简单的数算,逻辑运算 通过使用EL表达式,可以使JSP得源码变得更加简洁 request.getAttribute( “a” ) $a session.getAttribute(“b”) $b application.getAttribute(“c”); $c pageContext.getAttribute(“d”) $d$ name 按照从小到大的顺序在四个作用域中查找名字为name的命名属性 当作用域中存在重名变量时,可以在EL

12、中明确指定查找的作用域: $pageS $ requestS $sessionS $applicationS 由于user是一个对象,无法整体显示,所以通过EL取出各个成员变量分别显示name : $age : $ u.age EL表达式不会直接去访问对象的成员变量,而是通过对象中提供的get方法获取变量的值 在使用EL表达式访问成员变量时,要确保对象中有对应的get方法$u.age正确$u.gender错误$错误$u.studentName正确public class Studentprivate

13、 String name ; private int age ; private String gender ; public int getAge()return age ;public String getStudentName() return name ; 通过EL中的隐含对象param来实现 $ 使用一个名字为name的客户端参数 等价于 注意区分客户端参数与命名属性 $使用命名属性u的name成员变量 $ 使用名字为name的客户端参数 通过EL中的隐含对象cookie来实现 $ cookie.JSESSIONID 表示使用一个名

14、字为JSESSIONID的cookie 注意,cookie在服务器端以对象的形式体现,要使用cookie 的各个成员变量,要通过下列方法 : $cookie.JSESSIONID.value /调用cookie的getValue() $cookie.JSESSIONID.maxAge /调用cookie的getMaxAge()方法 支持Java中的所有数 $ 1 + 1 $ 1 * 2 $ 3/2 支持 java中的所有布尔运算符合逻辑运算符 布尔运算符 : ,= , 3 $ 23&|!and or not(与,并且)(或,或者)(非, 取反)$ab & cb | cd $ ! cb and

15、cb or cd$ not c= b $ a = b $ a = b $ a = b $ emptya empty: el 中特有的运算符,判断一个变量是否为空当a为空,empty 返回true否则 empty 返回 falseJSP编程Java标准标签库 JSTL 由apache的jakarta小组开发的运行在JSP上的一组标签库 可以实现流程控制、URL操作等功能 通过使用JSTL,可以替代java标签,大大简化JSP代码 确保在web 项目中导入了jstl.jar 和 standard.jar 这两个jar包提供了实现jstl标签功能的java代码 在使用jstl的jsp中导入标签库 u

16、ri :标签库的唯一标识,为了保证唯一性,通常使用一个url或者一个email地址。 prefix : 标签库前缀,用于区分不同标签库中的同名标签 设置一个命名属性 var : 设置命名属性的名字 value : 命名属性的值 默认作用域为pageContext 指定request作用域 scope的其他可选值为 page : pageConetxt session : HttpSession application : ServletContext 通过el表达式为命名属性赋值 将标签体的输出结果作为a的值$1+1标签体的输出内容不会显示在网页上,而是作为命名属性的a的值保存起来。我们可以输

17、出a来显示标签体$ a 移除命名属性 a 默认作用域为pageContext 移除session中的命名属性a scope的其他取值 : page request application 向页面中输出命名属性a的值 . 如果value的值为空,默认输出123 是否直接显示xml中的特殊字符 , & 等 1” escapeXml=“true” / 在页面中直接显示 21 10”body 相当于java中的if语句,如果test属性指定的布尔表达式为真时,标签题内的代码才会执行your name is $name 条件标签没有类似else的功能,可以通过使用两个相反的条件来表示 if else 逻

18、辑Hello ,your name is $nameWhats your name ? 选择标签类似于Java中的switch语句body 1body 2body 3 body 4 固定次数的循环Hello world 循环从1开始,到小于等于5 结束 ,上例中的标签体一共被执行6次$st.index   $st.count varStatus 用于指定循环变量的名字,在本例中, 循环变量的名字叫做st 循环变量并不是一个简单的整数,而是一个对象, 由index和count两个成员变量组成 index : 表示循环变量本身的值,本例中依次为 5, 6, 7 count : 用于统计循环进行的次数,永远从1开始,在本例中依次为 1, 2, 3$$student.ageitems : 被迭代的集合,通常使用el从作用域中取出var : 当前迭代的对象名字,可以在循环体内使用无论是items,还是在循环体内使用迭代对象,都要使用EL表达式。 一组用于访问数据库

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论