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。
 ServletContext application;
 synchronized void sendMessage(String new_chengyu){    //用于将数据保存到application中	 
	 application = getServletContext();
	 application.setAttribute("chengyu", new_chengyu); 
 }
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值