JSP的学习
1.什么是JSP?
JSP全名为 Java Server Pages,中文名叫java服务器页面,其根本是一个简化的 Servlet设计,它 是由Sun Microsystems 公司倡导、许多公司参与一起建立的一种动态网页技术标准.
2.为什么学JSP?
在学习了 Servlet 之后,使用 Servlet 进行页面的展现,代码书写过于麻烦。极大的影响了开发的效率,JSP中可以支持java,html,css,js语言的直接编写。效率高。
3.JSP的作用?
解决了在java书写代码麻烦额问题,提高书写的效率。
4.JSP的特点?
1)本质上还是Servlet
2)跨平台,一次编写处处运行
3)组件跨平台
4)健壮性和安全性
5.Jsp 的访问原理:
浏览器发起请求,请求 JSP,请求被Tomcat服务器接收,执行JspServlet 将请求的 JSP 文件转义成为对应的 java 文件(也是Servlet),然后执行转义好的 java文件。 如下图所示:

6.Jsp 的语法和指令:
1)JSP的page指令
page作用:设置jsp转译的时候的一些配置信息。
属性及作用:
a.language="java" 声明转译的语言
b. pageEncoding="utf-8" 设置jsp的数据保存的编码格式
c. import="java.util.* 声明转译时导入的java包文件
d.contentType="text/html; charset=utf-8 设置数据的响应编码格式
e. session="false" 设置session的状态,默认为true,也就转译的servlet文件中默认session是开启的,使用false关闭
f. isErrorPage="false" 默认为false ture表示开启exception异常对象的使用
g. errorPage="error.jsp" 设置当jsp运行出现异常错误时跳转指定的页面
2)Jsp的局部代码块的使用?
<% 局部代码块%>
3)Jsp的全局代码块的使用?
<%! 全局代码块%>
局部代码块声明和全局代码块声明的区别是?
使用局部代码块声明的java代码会被原样转译到_jspService方法中。
全局代码块中声明的java代码,在被转译时,会转译成jsp对应的java文件的全局的代码,即为成员变量和成员方法。
使用全局代码块声明方法,使用局部代码块调用方法。
4)Jsp的脚本段
<%= 脚本语句%>
5)Jsp的静态引入(JSP的include指令)
<%@include file=” 要引入的资源的相对路径”%>
特点:
被引入的jsp文件和原有jsp文件被转译成一个java文件使用。
注意:静态引入的相关jsp文件中不能声明同名变量。
6)Jsp的动态引入
<jsp:includepage=” 要引入的资源的相对路径”>
特点:
被引入的文件会被单独转译,原有jsp文件会调用被引入的jsp文件。
注意:动态引入的相关jsp文件中可以声明同名变量。
7)页面转发(forword标签)
作用:
从当前jsp跳转另外一个jsp页面。
注意:
forward标签中除了<jsp:param value="" name=""/>子标签以外不能出现其他内容,否则会报错。
8)Jsp的注释
html:<!--注释--> 会被转译也会被响应给浏览器,但是浏览器不会执行
css:/* 注释*/ 会被转译也会被响应给浏览器,但是浏览器不会执行
js:// 注释 会被转译也会被响应给浏览器,但是浏览器不会执行
java:// 会被转译,但不会执行
jsp:<%--注释--%> 注释内容不会被转译,也不会被执行
7.Jsp 的9个内置对象?四个作用域对象?
7.1、Jsp 的9个内置对象
1)pageContext:页面上下文对象,此对象封存了另外8个对象。
注意:一个jsp页面一个pageContext对象,pageContext对象每次请求都会重新创建。
作用域:当前jsp页面
2)request:封存了请求相关数据,由服务器创建
3)session:解决了同一个不同请求之间的数据共享问题
4)application:ServletContext对象,解决了不同用户之间的数据共享问题
5)out:响应数据的对象,交于response对象,out对象底层使用了缓冲区。out对象的效率高于response
6)response:响应对象,设置编码格式
7)page:代表当前被执行的jsp转译的java文件的对象(this)
8)config:ServletConfig对象,使用此对象完成资源的初始化。
9)exception:jsp页面的异常对象,封存了异常信息。
7.2、四个作用域对象?

8.jsp和Servlet的职责讲解
JSP 负责页面展现,Servlet 负责业务逻辑处理。
9.请求转发和重定向jsp页面以及相对路径讲解
注意:../ 为退出当前文件到上一层。
10.Servlet中请求转发和重定向的绝对路径
10.1.Servlet中请求转发和重定向的相对路径可能发生的问题?
在jsp页面中进行资源之间的跳转时,如果书写的是相对路径这样会造成如果当前文件的路径发生变更,从当前路径查找资源的相对路径都要重新进行书写。
相对路径的定义:相对路径指的是从当前请求路径查找jsp所经过的路径。
10.2 Servlet中的重定向和请求转发的绝对路径:
重定向:
* 在重定向中的路径中第一个/表示服务器根目录。
* 示例:
* resp.sendRedirect("/虚拟项目名/资源路径");//重定向jsp页面
* 请求转发:
* 在请求转发中第一个/表示项目根目录
* 示例:
* req.getRequestDispatcher("/资源路径").forward(req, resp);//请求转发到jsp页面
11.jsp中的绝对路径和basePath方式
11.1 、 JSP中的决对路径:
在jsp中路径中的第一个/表示服务器根目录。
11.2basePath方式:
在Myeclipse中创建的jsp页面会自动生成路径处理代码basePath
代码:

而basePath的值为当前项目根目录,并且在head标签中使用了<base href="<%=basePath%>">
相当于将当前页面的资源全部默认定位为从项目根目录开始查找,我们就不需要写第一个/了
注意:
basePath方式和添加/方法只能二选一。