Servlet学习笔记(七)—— JSP概述

发布时间:2017-09-02 11:33:32
Servlet学习笔记(七)—— JSP概述 1.Servlet两个缺陷: ①所有HTML标签必须包在Java字符串中,使得发送HTTP响应十分繁琐; ②所有文本和HTML标签都必须进行硬编码,即使对表示层做极其微小的修改,也需要重新编译。
2.注释: (1)JSP备注:,不会发送到浏览器,不能嵌套 (2)HTML备注:,不被容器处理,直接发送到浏览器,用途之一是标识JSP页面。在处理带有许多JSP片段的应用程序时,开发者通过查看HTML源代码,可以轻松查出某个HTML代码部分生成了那个JSP页面。
3.隐式对象:

对象 类型

request javax.servlet.http.HttpServletRequest

response javax.servlet.http.HttpServletResponse

out javax.servlet.jsp.JspWriter

session javax.servlet.http.HttpSession

application javax.servlet.ServletContext

config javax.servlet.ServletConfig

pageContext javax.servlet.jsp.PageContext

page javax.servlet.jsp.HttpjspPage

exception java.lang.Throwable

out类似于HttpServletResponse中调用 page对象表示当前的JSP页面 getWriter()之后得到的java.io.PrintWriter
4.三个句法元素: (1)指令directive:指示JSP转换器应该如何将某JSP页面转换为Servlet ①page:就当前JSP页面的某些方面对JSP转换器提出指示 。page指令可以出现在页面的任何位置。只是当它包含contentType或者pageEncoding属性时,必须放在所有模板数据之前,并且是在利用Java 代码发送任何内容之前。这是因为必须在发送任何内容之前设置内容类型和字符编码。 ②include:将另一个文件的内容放在当前的JSP页面中。文件扩展名.jspf (2)脚本元素scripting:将Java代码和比高成一个JSP页面 ①Scriplet:在一个Scriplet中定义的变量,对于它后面的其他Scriplet也是可见的 ②声明:能在JSP页面使用的变量和方法 ③表达式:Today is 表达式后面不需要分号 关闭脚本元素:随着Expression Language的发展,建议利用EL来访问服务器端的对象,而不是在JSP页面中编写Java代码。因此,原本开启的脚本元素,可以在部署描述符的中定义一个scripting-invalid元素,将它关闭,例如: *.jsp <scripting-invalid>true</scripting-invalid> (3)动作action:被编译成执行某个动作的Java代码 ①useBean:创建一个与某个Java对象相关的脚本变量,将表现逻辑与业务逻辑分开 ②setProperty与getProperty:保存与获取一个java对象中的一个属性 ③include动作: include指令和include动作的区别: include指令是在页面转换时使用,比如JSP容器将页面转换成一个生成的Servlet的时候;include动作是在发生请求的时候使用。 可以通过include动作传递参数,但是include指令不可以。 使用include指令时,被包含资源的文件扩展名并不重要;使用include动作时,文件扩展名必须是jsp ④forward:将当前页面跳转到另一个不同的资源 forword与redirect的区别: http://zhulin902.iteye.com/blog/939049 http://www.2cto.com/kf/201109/105650.html
5.错误处理: (1)用try语句处理Java代码 (2)指定一个页面,让它在应用程序遇到未捕捉的异常时显示出来。 利用page指令的isErrorPage属性,就可以把一个JSP页面变成一个错误处理页面 6.概述: (1)Jsp页面也是一个Servlet,但简单的多: ①不需要编译JSP页面; ②*.jsp为扩展名的文本文件,可以用任意文本编辑器编写。 (2)JSP页面在JSP容器中运行,Servlet容器一般也是JSP容器。Tomcat就是一个Servlet/JSP容器。 (3)第一次请求一个JSP页面时,容器所做的两件事: ①将JSP页面转换车一个JSP页面实现类,即一个实现javax.servlet.jsp.JspPage或者javax.servlet.jsp.HttpjspPage接口的Java类。JspPage是javax.servlet.Servlet的子接口,所以每个Jsp页面都编程一个Servlet。 ②转换成功,容器编译Servlet类,加载和实例化Java字节码,执行它通常对Servlet所做的生命周期操作。 (4)对于同一个JSP页面的后续请求,容器会查看这个JSP页面自从最后一次转换以来是否被修改过。如果修改过,就会重新转换、编译、执行;若没有,则执行内存中已经存在的Servlet。所以,采集软件,第一次掉一个JSP页面的时间比后续请求都更长。解决这个问题的措施: ①配置应用程序,在应用程序启动而不是初始请求的时候,调用所有的JSP页面进行转换编译。 ②预先编译JSP页面,并将它们以Servlet的方式进行部署。 (5)JSP API的4个包: ①javax.servlet.jsp ②javax.servlet.jsp.target ③javax.el ④javax.servlet.jsp.el (6)JSP 页面包含句法元素和模板数据: ①就是句法元素,HTML标签和文本就是模板数据。 (7)JSP不需要在部署描述符中进行标注,或者映射成一个URL
(8)添加完一个新的JSP页面不需要重启Tomcat 7.如何查看JSP转译成servlet后的源代码? 在eclipse的工作区\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\(项目名)\org\apache\jsp这里。

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:天门网站建设 http://tianmen.45qun.com