JSP

关于jsp的前世今生......

1.jsp的本质是servlet.

2.jsp声明    <%!          %>

   jsp脚本    <%           %>

   jsp表达式  <%=         %>

2.jsp的3个编译指令:(在jsp编译生成servlet时,起作用)

page

include:静态包含  <%@include  file=" " %>

          动态包含   <jsp:include   >

          二者区别

taglib

3.jsp的7个动作(处理)指令:(在servlet运行时,起作用)

 <jsp:forward  />

<jsp:include    />

<jsp:useBean    />     <jsp:setProperty     />      <jsp:getProperty     />    这三个用于操作javaBean

<jsp:plugin   />

<jsp:param   />

4.jsp脚本中9个内置对象    (即Jsp对应的servlet的_jspService()方法已经创建了这9个对象)

由于jsp与servlet之间不会相互调用  所以jsp与servlet之间传递数据通过application  session  request   page 四大对象(类似银行)的对象来传递数据

 application ----   javax.servlet.ServletContext类的实例(一个web应用从启动到关闭  只有这一个这个类的实例  所以无论在哪里获取都是同一个对象)     在jsp页面中直接内置   在servlet中需要获取

     application 对象的作用范围最大   从一个web应用被加载(tomcat启动)到该web应用被关闭(tomcat退出)一直存在   且只有一个。

     作用

     1:只要把一个键值对放入application对象中 ,就可以在该web应用所有的jsp页面,servlet中获取该键值对。

     2:获取web.xml文件中的配置信息。

 config----   javax.servlet.ServletConfig类的实例     (该对象不唯一  每个jsp页面,servlet的config对象都属于自己   只用来获取自己的配置信息)           同样jsp中内置该对象   在servlet中需要获取该对象

     该对象用来获取当前jsp页面在web.xml中的配置信息           用于jsp页面在web.xml文件中很少进行配置   所以该对象在jsp页面中很少使用

     在servlet中获取该对象     可以获取该servlet在web.xml中配置信息    servlet在web.xml有可能会配置一些东西     所以该对象在servlet中 可能会用到

exception ----  javax.lang.Throwable类的实例          只有jsp页面的 编译指令page的isErrorPage="true"时,即该页面 是错误处理页面  才会拥有该对象   

         普通的页面   通过编译 指令page的errorPage= "  " 来制定该页面的才错误处理页面   ,普通页面发生异常后,通过request把异常对象发给错误处理页面  ,把该异常对象付给错误处理页面的exception      

 out     ------javax.servlet.jsp.JspWriter类的实例    out对象 的作用  和  <%=    %>输出表达式的作用相同    用来输出变量值及常量 

 page    -------该对象代表jsp页面本身  作用不大  相当于servlet中this

 pageContext   -----javax.servlet.jsp.PageContext类的实例    该对象代表该页面的上下文,通俗理解,该对象就像一个大管家,通过该对象可以指定把一个键值对放入page ,request,session,application的任一个对象中     ,  

通过该对象还可以在jsp,servlet中获取上面任意一个对象    

request     ------javax.servlet.http.HttpServletRequest接口的实例     极为重要的一个对象       同样这jsp页面中内置   在servlet中 通过方法的形参传入 

            每个request对象 都封装一次用户请求  每一次请求就生成 一个新的request对象        所有的请求参数都封装在request对象中  

           作用 :

            1:获得请求头 /请求参数       若干个方法   

            2:利用request进行地址转发 forward            

              请求链未断开    即在第二次请求的时候  还是原先的request对象   

            在servlet中

              request.getRequestDispatcher("/a.slt").forward(reqeust.response);

           在jsp中 相当于 

              动作指令  <jsp:forward    />

          

response     --------javax.servlet.http.HttpServletResponse接口的实例     次重要的一个对象     同样在jsp页面中内置   在servlet中  通过方法形参传入

          response对象 表示响应  ,但是一般的字符类的响应,使用更加简单的out对象 (jsp中内置 ,servlet中需要获取)

           作用:

           1.response响应生成非字符响应 

           2.利用reponse进行地址重定向  

           3.利用response来增加cookie

session    ---------   javax.servlet.http.HttpServletResponse类的实例     也是很重要的一个对象    同样在jsp页面中内置    在servlet中 需要获取

           session对象  表示一次用户会话  从浏览器与服务端建立连接   到浏览器与服务端断开连接 (一般是关闭浏览器 )          

           在一次浏览器与服务端连接的过程中    这个web应用只用一个session对象   所以在任何地方获得session对象都是同一个    

           放入session对象中 键值对  在这次会话期间   都有效  都可以使用    但是一旦关闭浏览器   再重新打开浏览器连接该web应用  就会生成一个新的session对象 

  

原文地址:https://www.cnblogs.com/wangliyue/p/4104408.html