Servlet学习笔记(七)—— JSP概述
程序员文章站
2022-03-23 20:42:56
1.Servlet两个缺陷:
①所有HTML标签必须包在Java字符串中,使得发送HTTP响应十分繁琐;
②所有文本和HTML标签都必须进行硬编码,即使对表示层做极其微小的修改...
1.Servlet两个缺陷:
①所有HTML标签必须包在Java字符串中,使得发送HTTP响应十分繁琐;
②所有文本和HTML标签都必须进行硬编码,即使对表示层做极其微小的修改,也需要重新编译。
2.注释: (1)JSP备注:,不会发送到浏览器,不能嵌套 (2)HTML备注:,不被容器处理,直接发送到浏览器,用途之一是标识JSP页面。在处理带有许多JSP片段的应用程序时,开发者通过查看HTML源代码,可以轻松查出某个HTML代码部分生成了那个JSP页面。
3.隐式对象:
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的区别:
https://zhulin902.iteye.com/blog/939049
/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这里。
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 |
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代码。因此,原本开启的脚本元素,可以在部署描述符的
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这里。
下一篇: selenium知识详情介绍