JSP页面中脚本片段、声明、jsp表达式

首先,我们要了解jsp运行原理。JSP的本质就是一个Servlet,JSP的运行之前会先被Tomcat服务器翻译为.java文件,然后在将.java文本编译
为.class文件,而我们在访问jsp时,处理请求的就是那个翻译后的类。

Servlet
Service,也就是脚本片段
声明,全局变量与方法在里面
  1. <% %>叫做脚本片段,其中写的内容会翻译在Servlet的Service方法中,显然我们可以在Service方法中定义局部变量或者调用其他方法.
  2. <%!%>称作声明,其中写的内容将来会直接翻译在Servlet类中,因为我们可以在类中定义方法属性以及全局变量,所以我们可以在<%!%>中声
    明方法、属性、全局变量。
  3. <%=%>称作jsp表达式,用于将已经声明的变量或者表达式输出到网页上面。

总结

  • 因为JSP中的变量与内置对象的代码都写在在Service中(脚本片段),而与用来定义方法与全局变量(声明)相关的代码都写在Servlet里面,也就是与Service是同级的,因此在<%! %>中是不能调用内置对象的,比如application,response,request等。
  • 如果想在<%! %>中使用application对象可以利用ServletContext来间接获取applicaiton中的属性。顺便在这里提一下ServletContext与applicaiton的关系与区别。
ServletContext applicaiton = getSerVletContext();

ServletContext与applicaiton的关系与区别。

  1. servletcontext主要用在servlet中,当然也可以在jsp中使用;
  2. application只在jsp页面中使用;
  3. application和servletcontext都保存容器的全局信息;
  4. application是对servletcontext在jsp中应用的包装,因此它们其实表示的是同一个对象,用application保存的属性可以用servletcontext来读取,反之亦同;
  5. 在jsp中可以直接使用application,也可以用getServletContext()方法来获得servletcontext对象,此对象的使用和application完全一样;
  6. 不懂之处: 在<%! %>中不能使用applicaiton,却可以使用ServletContext。
发布了22 篇原创文章 · 获赞 0 · 访问量 148

猜你喜欢

转载自blog.csdn.net/weixin_42649617/article/details/104864552