JSP语法以及其他相关知识点笔记.doc_第1页
JSP语法以及其他相关知识点笔记.doc_第2页
JSP语法以及其他相关知识点笔记.doc_第3页
JSP语法以及其他相关知识点笔记.doc_第4页
JSP语法以及其他相关知识点笔记.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

JSP技术通过以上的案例发现Servlet做为一个动态网页开发技术太不靠谱。尤其是需要编写一个页面的时候,需要指定页面的模板标签、还要处理很多的业务逻辑。因此比较繁琐。思考:Servlet为什么写一个页面那么吃力?主要的原因在于Servlet实在java中写标签。鉴于以上的原因那么SUN提供了动态网页开发技术之JSP。JSP即Java Server Page。可见JSP本身是页面,那么在页面那种编写HTML标签应该非常轻松。u JSP体验 system date: 总结:1. servlet就是在java中写html比较烦,servlet是做获取参数并请求转发。2. jsp就是html中写java比较烦,jsp主要是显示数据。JSP运行原理JSP本质是一个Servlet只不过这个Servlet更加善于编写页面。JSP语法学习JSP应该从以下几个方面学习:u JSP模板元素JSP是在HTML中写java代码,那么JSP中最基本的是HTML元素。我们将这些元素称之为JSP的模板元素。u JSP输出表达式JSP表达式主要用于输出变量以及输出表达式。语法:表达式后面不能有分号。举例1:输出一个表达式。21 = 1 % 运行结果21 = true org.apache.jsp.index_jsp1135cd9总结:所有的JSP页面中的输出表达式会被翻译在java类中的_jspService()并使用out.write()方法进行了封装。该输出表达式还可以输出变量,但是当前需要先定义一个变量。u JSP脚本JSP脚本主要用于定义局部变量和编写JAVA业务代码。语法:举例1:使用JSP脚本定义变量。sum = 总结:JSP脚本被翻译在_jspService()中,使用该语法定义的变量全部是局部变量。因此不能添加任何的变量修饰符。举例2:使用JSP脚本实现页面的倒三角输出。% for(int i = 0; i6; i+) for(int j = i; j * 举例3:使用JSP脚本输出H1H6的各级标题。% for(int i = 1; i /h 总结:使用JSP脚本是否可以定义方法和类? 方法中不能继续写方法,但是可以定义局部内部类。举例3:定义局部内部类。 u JSP声明JSP声明主要是声明类的成员变量和方法。语法:举例1:声明一个成员属性。 / 20如果必须要访问访问到10,那么可以使用以下的语句 举例2:定义一个成员方法。 举例3:实现JSP生命周期方法的重写。u JSP注释JSP注释主要为了方便开发人员阅读JAVA代码。语法:总结:HTML注释可以在查看浏览器页面源码的时候可见。但是JSP的注释是给开发者看的因此在浏览器端是无法看见的。u JSP指令(重点)JSP指令主要用于通知浏览器如何解析或者处理当前的JSP页面数据。语法:常见的JSP指令1. pagepage指令只要用于通知浏览器如何解析页面的数据。举例1:在JSP中导入类。JSP的page指令中只有import属性可以连续出现多次,因此可以使用该属性导入多个包中类。import=java.util.Date import=java.io.File简化:import=java.util.Date,java.io.File举例2:Insert title here 系统时间: error.jsp错误处理页面 举例3:使用JSP的page指令属性忽略页面中的EL表达式。错误处理页面 $20+30 总结:如果不忽略那么显示的值是50,如果忽略那么直接显示$20+30。2. includeJSP中可以使用包含指令来将公用的页面直接包含进来,进而提高代码的维护性。 some text some text some text some text总结:被包含页面和包含页面被翻译在同一个java文件中。因此将这种包含方式称之为静态包含。那么被包含页面中最好不要出现包含页面中已经具有的数据。3. taglibJSP的taglib指令可以引入其他的标签库文件,使得在JSP页面中可以直接使用标签进行数据的逻辑处理。u JSP动作(重点)JSP动作主要是用于简化JSP中出现的JSP脚本片段。常见的动作 包含页面 请求转发 传递参数举例1:使用JSP动作包含页面。该方式在包含页面的时候将包含页面和被包含页面都进行了翻译和编译,因此称之为动态包含。包含页面action.jsp 包含页面的数据被包含页面included.jsp 被包含页面的数据: 举例2:使用JSP动作实现页面的转发。 JSP内置对象JSP在进行编译的时候动态的创建了很多的内置对象,那么如果开发者知道,可以直接在JSP页面中使用这些对象。我们将这些内置的对象称之为JSP内置九大对象。如果需要将以下的九大内置对象直接获取出来,那么可以这样做:编写一个错误处理页面,那么请求查看翻译好的jsp文件。public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException PageContext pageContext = null; HttpSession session = null; Throwable exception = org.apache.jasper.runtime.JspRuntimeLibrary.getThrowable(request); if (exception != null) response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); ServletContext application = null; ServletConfig config = null; JspWriter out = null; Object page = this; JspWriter _jspx_out = null; PageContext _jspx_page_context = null; .因为在JSP中编写JSP脚本以及JSP输出表达式都会默认翻译在_jspService()那么以上该方法中定义的九大对象开发者可以任意使用。JSP九大对象Servlet类型requestHttpServletRequestresponseHttpServletResponsesessionHttpSessionconfigServletConfigapplicationServletContextoutJspWriterpageObjectpageContextPageContextexceptionThrowableu out对象1. 同时使用out和response的输出字符流给页面输出数据。% out.write(jack); response.getWriter().write(lucy);%输出结果是lucy jack。因为以上两个都是字符流且带有自己的缓冲区,因此JSPWriiter的缓冲区数据在JSP执行完毕之后才将数据刷新给Response字符流的缓冲区,因此out对象输出的数据在后面。如果需要提前输出,那么需要进行缓冲区数据的强行刷新。% out.write(jack); out.flush(); response.getWriter().write(lucy);%2. 使用JspWriiter和response的字节流同时输出数据。% out.write(jack); out.flush(); response.getOutputStream().write(lucy.getBytes();%以上代码运行结果是jack然后抛出异常getWriter() has already been called for this response。在JSP中不能同时使用字节流和字符流。3. 如何使用JSP实现图片的下载。为了避免页面JSP中使用out对象,那么需要将JSP的所有的模板元素全部删除掉包括页面中的回车和换行。4. 使用out隐含对象的write方法和println方法。% String str1 = data; String str2 = null; int a = 65; out.write(str1);/ data out.write(str2);/ 不显示 out.write(a);/ A out.write(); out.println(str1);/ data out.println(str2);/ null out.println(a);/ 65%u pageContext对象PageContext类主要的描述的是的JSP页面的上下文环境,可以获取servlet的信息、也可以将当前JSP的上下文环境传递给指定的类实现对JSP页面的操作。1. 获取JSP中所有的数据% out.write( (pageContext.getRequest() = request ) + );out.write( (pageContext.getResponse() = response ) + );out.write( (pageContext.getSession() = session ) + );out.write( (pageContext.getServletConfig() = config ) + );out.write( (pageContext.getServletContext() = application ) + );out.write( (pageContext.getPage() = page ) + );out.write( (pageContext.getException() = exception ) + );out.write( (pageContext.getOut() = out ) + );%思考:为什么SUN需要将其他八大对象通过pageContext也要进行获取?因为以后如果需要一个普通的java类来处理JSP页面数据那么直接将PageContext类传递过去即可。如:自定义标签。2. 常见的域我们将可以使用setAttribvute()/getAttribute()方法存储和获取数据的对象称之为域对象。域对象生命周期page在当前页面中有效request请求转发session默认半小时application服务器关闭的时候3. 设置和获取不同域属性(重点)总结:使用pageContext设置和获取域属性的时候可以显示的指定域,如果没有指定域,那么默认该域是page域。问题:在实际的开发中设置属性和获取属性是分别由不同的程序员开发的程序,那么如果在获取的时候开发者不明确这样的属性名到底存储在哪一个域中,那么应该怎么办?解决方案:可以使用以下语句该语句默认从pagerequestsessionapplication逐个查找需要的属性,如果找到直接返回。因此该语句就是EL表达式的底层实现原理。JSP配置JSP的本质是Servlet,那么Servlet是可以进行web.xml配置,那么理论上JSP也可以进行基本的配置。修改web.xml title czbk myjsp /init.jsp ip 1 myjsp /haha.html 编写代码获取配置信息 this is my jsp! JSP排错1. 翻译阶段 %- org.apache.jasper.JasperException: /error.jsp(7,8) Unterminated <%- tag 2. 编译阶段 org.apache.jasper.JasperException: Unable to compile class for JSP: 3. 运行阶段 org

温馨提示

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

评论

0/150

提交评论