JSP部分知识讲解

JSP本质上是一个文件,它的作用是用户第一次请求这个文件的时候,我们的web容器会将它编译成.java文件,再编译成.class文件,在进行加载和实例化,再由我们实例化后的Servlet给用户应答。
向用户发出请求调用的是servlet的Service方法。
在这里插入图片描述
使用JSP的原因:
1.JSP的出现是为了解决Servlet在响应时不适合向外输出页面的问题
2.Servlet本质上是一段java代码, 非常适合处理逻辑, 但是不合适向外输出页面。
3.HTML适合用来开发页面, 展示数据, 但是HTML开发出来的页面本质上就是一个文档, 无法展示动态的数据。
4.JSP非常适合编写HTML代码, 适合作为响应页面向外输出, 同时JSP里可以写java代码, 也可以展示动态的数据。所以JSP可以解决既要处理逻辑又要向外输出页面的难题。

延伸:
例子:如果请求的是1.html,我们会认为Tomcat找到1.html就会返回给我们,其实不是这样的…
请求会在web容器中配置的web.xml里的url-pattern中查找。但这里面配置的都是Servlet的东西,
但servlet里面肯定没有一个映射1.html的东西,找完没有那该如何?
在这里插入图片描述
那就会将所有没被Servlet响应的请求都交给一个映射的路径为“/“的Servlet来统一处理–》这个servlet默认情况下就是咱们Tomcat提供的default Servlet。它的两个作用:1.找到并返回静态资源 2.找不到则返回404。平常产生的404,也是由此servlet产生。
在这里插入图片描述
JSP三大指令:
1.page指令 :作用: 告诉tomcat服务器如何翻译jsp文件
语法: <%@ page language=”java” –告诉服务器使用什么动态语言来翻译jsp文件
import=”java.util.*” –告诉服务器java文件使用什么包,导入包时,多个包之间用逗号分割
pageEncoding=”utf-8” –告诉服务器使用什么编码翻译jsp文件(成java文件)
contentType=”text/html; charset=utf-8” 服务器发送浏览器的数据类型和内容编码
设置pageEncoding即可解决中文乱码问题
errorPage=”error.jsp” 如果页面出错,将要跳转到的页面
isErrorPage=”false” 如果设置此属性为false, 翻译过来的servlet中将不会含有Exception隐式对象,其中封装的就是上一个页面中抛出的异常信息
buffer=“none | 8kb | sizekb” out隐式对象所使用的缓冲区的大小
session=”true”
<%@ page isELIgnored="true|false”%>如果设定为真,那么JSP中的表达式被当成字符串处理。比如下面这个表达式<p>KaTeX parse error: Expected '}', got 'EOF' at end of input: …ored="true"时输出为{2000 % 20},而isELIgnored="false"时输出为100。Web容器默认isELIgnored="false"。
%>
2.include指令:语法:<%@include file=”common/header.jsp”%> -
作用:在当前页面用于包含其他页面
include指令实现的包含叫做静态包含: 多个JSP文件翻译成一个servlet, 最终由这一个servlet向外输出数据, 这是源文件级别的包含
其他方式的包含叫做动态包含: 被包含的页面各自翻译成servlet, 包含的过程其实就是各个servlet分别执行后在输出流上的合并
总结: 静态包含在效率上更高一些, 尽量使用静态包含.
3.taglib指令(TODO):作用:导入标签库
语法:<%@taglib uri=”tld文件的uri名称” prefix=”简写” %>

JSP的9大内置对象
1.application javax.servlet.ServletContext 的实例,代表JSp所属的web应用本身,可用于页面之间交换信息
2.config javax.servlet.ServletConfig 的实例,代表JSP的配置信息,常用的方法有
getInitParameter(String paramName)
getInitParameternames()
3.exception java.lang.Throwable 的实例,代表其他页面中的异常和错误,只用当页面时错误处理页面,即page的isErrorPage=true 时,该对象才可以使用,方法getMessage(),printStackTrace()
4.out javax.servlet.jsp.JspWriter 的实例,该实例代表jsp的页面输出流,用于输出内容
5.page:代表页面本身,也就是servlet中的this,一般不用
6.pageContext javax.servlet.jsp.PageContext的实例,该对象代表该jsp的上下 文,使用该对象可以访问页面中的共享数据
常用方法:getServletContext() getServletConfig()
7.request javax.servlet.http.HttpServletRequest 的实例,封装了一次请求
8.response javax.servlet.http.HttpServletResponse的实例,封装了一次响应
9.session javax.servlet.http.HttpSession 的实例,代表一次会话

猜你喜欢

转载自blog.csdn.net/cs_dnzk/article/details/87474113