kettas笔记_jsp.doc_第1页
kettas笔记_jsp.doc_第2页
kettas笔记_jsp.doc_第3页
kettas笔记_jsp.doc_第4页
kettas笔记_jsp.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

jsp就是用于代替DispServlet,来完成显示逻辑的。 1)jsp适合完成显示逻辑,把java脚本嵌入到html中。 2)jsp文件以“.jsp”结尾 3)向静态html一样存储,应用的根下,也可以存在某个子目录下面,就是不能放在WEBINF。WEBINF中的内容不允许用户通过浏览器直接访问 4)访问jsp像访问html一样访问 JSP的运行原理 1)JSP在服务器端运行(Tomcat),客户端看到是jsp在服务器端的输出结果 2)JSP的本质是一个Servlet,当用户请求一个JSP时,Tomcat会按照特定的语法规则,将一个JSP翻译成一个Servlet代码(.java)。真正为用户请求提供服务,产生应答的是翻译得到的Servlet。 JSP的执行过程: client-Tomcat-jsp文件翻译成.java文件-编译(.class)-创建Servlet对象-调用对象的Service方法-client JSP中的java脚本( 脚本元素 )1)表达式脚本 :具有输出功能的脚本 . 能够计算表达式的结果,同时能将结果显示在网页上,是三种脚本中唯一具有显示功能的脚本. 表达式脚本中只能出现java表达式,不能包含 if , for , while 等逻辑控制语句,更不能写“;”2)声明脚本 : 用来声明变量和函数 . 在声明脚本中声明的变量和函数,可以再其他脚本里直接使用 . 3)普通脚本 : 可以编写任意的java代码,通常用来完成流程控制,逻辑判断. 标签之间不能相互嵌套.脚本元素表达式,声明 , 普通指令元素 : 页面指令 : 标签库 :静态包含指令 : 用于将另外一张页面的源码包含到本jsp中来.a.Jsp b.jsp Aaaaaaa 11111111 bbbbbb 22222222 ccccccc 3333333Temp.jsp 111111 222222 Aaaaa Bbbbb Cccccc 3333331)利用静态包含,将多个网页中的公共部分提取出来,减少代码量,可以提高公用代码的可维护性.2)增加java代码的可重用性Function.jsp a.jsp b.jsp 特点 :1)静态包含 包含的是源代码2)包含的过程发生在翻译之前3)包含之后只有一个Servlet产生.4)在相互包含的jsp中不能声明同名的变量。动作元素 动态包含,包含的是对方的输出结果。将对方的输出结果合并到自己的结果中来,一起送给客户端看.1)包含的是另一个jsp的输出结果。2)发生在运行的时候.3)会生成多个独立的Servlet4)不在意重名变量. 页面指令:属于指令元素中的一种 页面指令是对JSP内容特征一个简要说明,Tomcat根据这些说明,作出正确的翻译结果 相当于Servlet中的response.setContentType(text/html);和response.setCharacterEncoding(utf-8); contentType:用于表明应答类型。以便浏览器作出正确的处理结果 :导包 :导入多个包,包和包之间用逗号相隔。 这三行等价于上面的一行,都是导入多个包。pageEncoding:用于指明JSP源代码中所使用的字符编码。Tomcat根据pageEncoding的指定的字符编码对源文件进行编译,pageEncoding的作用,只体现在翻译的过程中:表示该页面是否参与会话,也就是说在这个页面中是否会使用HttpSession对象。在JSP中,HttpSession被做成JSP的一个隐含对象了在Servlet中,只有调用了getSession(true)才会创建Session。而在JSP中,不需要调用getSession(true),只要访问JSP,Session就创建:指定JSP翻译是继承哪个父类。buffer=:设置缓冲区的大小,一般为1024的整数倍。现在都是自动设置缓冲区的大小autoFlush=true/false;缓冲区的内容时候会自动刷新,默认为true。errorPage=/error.html或error.jsp:当页面出现异常时,直接跳到错误页面isErrorPage=true/false:本页面是不是一个专门用来处理异常的页面。对于同一个页面,isErrorPage和errorPage不能共同使用页面指令的共同特点:1)所有页面指令都可以合在一起写,也可以分开写。2)页面指令都写在页面的最前面隐含对象:Tomcat实现声明并初始化的变量,称作隐含对象,在JSP可以直接进行使用。隐含对象共有9个。在声明脚本中,不能使用隐含request-HttpServletRequest:代表用户的请求response-HttpServletResponse:代表用户的应答session-HttpSession:JSP中是否有session对象,取决于页面指令。session=true/false默认值为trueapplication-ServletContext:全局唯一,缓存数据库中的数据。out-response.getWrter()page-相当于程序中的thisconfig-ServletConfig:getInitPar()代表ServletConfig对象,主要作用是读取配置文件中的初始化参数。就JSP中也可以像Servlet一样配置exception-异常。只有isErrorPage=true的jsp中才会有该隐含对象。就是刚刚发生的异常对象pageContext-javax.servlet.jsp.PageContext 1)pageContext本身也是一个作用域,该作用域指存活在本页面当中。getAttribute(),setAttribute() A.jsp-forward-B.jsp 每个jsp页面都有自己独立的pageContext对象。通常用来在同一页面的多个标签之间传递数据 例如:pageContext , request, session, servletContext( application ) . 2)不仅能够管理自己的命名属性,而且能够管理其他作用域中的命名属性 存数据:setAttribute(name,value)和setAttribute(name,value,score) score可以是pageContext.PAGE_SCORE和pageContext.REQUEST_SCORE和pageContext.SESSION_SCORE和pageContext.APPLICATION_SCORE这四种 取数据:getAttribute(name,value)和getAttribute(name,value,score) score和存数据中的score一样 pageContext.findAttribute(abc):按照(pageContext,request,session,application)从小到大的顺序在4个作用域里依次查找。没找到,则返回null,找到了,则返回找到的数据并停止本次查找 3)通过pageContext能够获得jsp中所有隐含对象今天写的源文件:forwordA.jsp forwordB.jsp(request,session,application的作用域和区别和pageContext)config.jsp在声明脚本中,不能使用隐含对象 .contentType , import , pageEncoding , session 分页查询 1)在数据库查询方面,能够根据用户想看的页数(n),以及每页显示的行数(a)准确的查出本页面所需要显示的数据.(n-1) * a +1 2) 在页面上需要提供分页使用的连接( 上一页,下一页), 用户可以通过这些链接能够请求1,解决数据库查询问题 : A; 利用可滚动结果集已知 , 用户想看的页数( n ) , 每页多少行 (a )能够得到每次分页查询从第几行取数据.( row )select * from t_emp order by idResultSet rs 。可滚动结果集.Rs.absolute( row ) Int count = 0;Do Rs.next();Xxxxxxx ; Count+ ;while( count 10 ) ; 利用Oracle数据库伪列 rownum满座查询条件的顺序.Select rownum , name from t_emp order by id Rownum name 1zhangsan2lisi3wangwu4zhaoliu5xxxxxxselect id from t_emp where rown 5 这种条件.select id from t_emp where rown 5 order by idselect * from(select rownum rn, emp.* from t_emp emp order by id )where rn5 and rn 3&(and) 1 gt (greater than) lt ( less than) = eq (equals) = ge (greater equal) = le (less equal) 2)能访问作用域中的命名属性 (pageContext,request,session,application) $age按照从小到大的顺序,在作用域中依次查找age $PageScope.age $requestScope.age $SessionScope.age $applicationScope.age 通过EL中四个隐含对象,在指定作用域中查找 3)能访问javabean的成员变量 被访问的javabean必须存储在某个作用域中javabean:必须有无参构造函数,要有get/set方法,最好能实现 Implements Serializable接口 request.setAttribute(employee,e); id:$employee.id:.id实际上是调用了.getId()方法 1)在EL表达式,只能查看成员变量,不能修改 2,通过EL表达式,实际上访问的不是变量,而是Get方法 4)能够访问Cookie,客户端参数,请求头 Cookie:JSESSIONID,response.addCookie,request.getCookies() 客户端参数:form,url?.,request.getParameter() name=value - javax.servlet.http.Cookie name value maxAge response.addCookie( c ) , request.getCookies() Cookie$ cookie.age $ cookie.JSESSIONID $ empty cookie.login 客户端参数 : form , url?xxx=xxxxx Request.getParameter( “” );request.getParameter( “name” )= value$ param.age 获得请求头 : 地址 : xxxxxxxxxxxxx 收信人 : xxxx 寄信人 : xxxxxxxx$ pageScope , requestScope , sessionScope , applicationScope cookie , param , header 具体实例: % Enumeration enu = request.getHeaderNames() ; while(enu.hasMoreElements() )out.println( + enu.nextElement() + ) ; % cooke : $header.cookie host : $ header.host accept : $ header.accept param name : $ empty name : $empty $cookie.JSESSIONID.value $cookie.JSESSIONID.maxAge login : $cookie.login 能访问javabean的成员变量 ID : $ employee.id   $ employee id Name : $ Salary : $ employee.salary DOB : $ employee.birthday.year + 1900 $ (employeebirthday)year Mothd : $ employee.birthday.month + 1 能访问作用域中的命名属性 $ arr0   $ arr1   $ arr2 $ age $ requestScope.age $ sessionScope.age 能完成简单的数学,逻辑运算 1 + 1 = $ 1 + 1 2 1 $ 2 1   $ 2 gt 1 21 and 42 $ (21) & (42) empty a $ empty a not empty a $ not empty a   $ ! empty a JSTL

温馨提示

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

评论

0/150

提交评论