频道栏目
首页 > 资讯 > Jsp > 正文

Servlet、Jsp学习小总结(jsp 转化流程)

18-06-01        来源:[db:作者]  
收藏   我要投稿

Servlet、Jsp学习笔记

jsp 转化流程

JSP页面本质上是一个Servlet。然而,用JSP页面开发比使用Servlet更容易,JSP页面在JSP容器中运行,一个Servlet容器通常也是JSP容器。例如,Tomcat就是一个Servlet/JSP容器。当一个JSP页面第一次被请求时,Servlet/JSP容器主要做以下两件事情:

jsp文本文件–》jsp页面实现类 -》编译该servlet实现类-》处理客户请求

转换JSP页面到JSP页面实现类,该实现类是一个实现javax.servlet.jsp.JspPage接口或子接口
javax.servlet.jsp.HttpJspPage的Java类。JspPage是
javax.servlet.Servlet的子接口,这使得每一个JSP页面都是一个Servlet。该实现类的类名由Servlet/JSP容器生
成。一般来说xx.jsp转换的servlet 名称会变为 xx_jsp

如果转换成功,Servlet/JSP容器随后编译该Servlet类,并装载和实例化该类,像其他正常的Servlet一样执行生命周期操作。每个servlet 在容器内都是单例

EL表达式

主要的两种表达形式:

${object["propertyName"]}
${object.propertyName}

限制在JSP页面中编写脚本和 EL 表达式

(限制在jsp页面中写java代码)在web.xml中只能有一个标签


 
 
  *.jsp
  <scripting-invalid>true</scripting-invalid>
 

  
 
  *.jsp
  true  
 

include动作 和include指令的区别

这里,理解include指令和include动作非常重要。对于include指令,资源引入发生在页面转换时,即当JSP容器将页面转换为生成的Servlet时。而对于include动作,资源引入发生在请求页面时。因此,使用include动作是可以传递参数的,而include指令不支持。

jsp文本文件—-(b)–》jsp页面实现类 —(a)—》编译该servlet实现类-》处理客户请求


  
 
这是发生在A处


<%@ include file="url"%> 发生在b处

监听器分类

javax.servlet.ServletContextListener:它能够响应ServletContext生命周期事件,它提供了ServletContext创建之后和ServletContext关闭之前的会被调用的方法。

javax.servlet.ServletContextAttributeListener:它能够响应ServletContext范围的属性添加、删除、替换事件。

javax.servlet.http.HttpSessionListener:它能够响应HttpSession的创建、超时和失效事件。 javax.servlet.http.HttpSessionAttributeListener:它能响应HttpSession范围的属性添加、删除、替换事件。 javax.servlet.http.HttpSessionActivationListener:它在一个HttpSession激活或者失效时被调用。 javax.servlet.http.HttpSessionBindingListener:可以实现这个接口来保存HttpSession范围的属性。当有属性从HttpSession添加或删除时,HttpSessionBindingListener 接口能够做出响应。 javax.servlet.ServletRequestListener:它能够响应一个ServletRequest的创建或删除。 javax.servlet.ServletRequestAttributeListener:它能响应ServletRequest范围的属性值添加、删除、修改事件。 javax.servlet.AsyncListener:一个用于异步操作的监听器

Decorator模式

Decorator模式或者Wrapper模式允许修饰或者封装
(在字面意义中,即修改行为)一个对象,即使你没有该对象的源代码或者该对象标识为final。
Decorator模式适用于无法继承该类(例如,对象的实现类使用final标识)或者无法创建该类的实例,但可以从另外的系统中可以取得该类的实现时。例如,
Servlet容器方法。只有一种方法可以修改ServletRequest或者ServletResponse行为,即在另外的对象中封装该实例。**唯一的限制是,修饰对象必须继承一个接口,然后
实现接口以封装这些方法。**
CNa9lq.md.png

public class Decorator implements Component {
 private Component decorated;//被包装的对象
 // constructor takes a Component implementation public Decorator(Component component) {
 this.decorated = component;
 }
 // undecorated method
 @Override
 public void methodA(args) {
 decorated.methodA(args);
 }
 // decorated method
 @Override
 public void methodB(args) {
 decorated.methodB(args)
 }
}
相关TAG标签
上一篇:Corrupt Mayor's Performance Art
下一篇:关于“C++为什么要有继承?什么是继承?”的探讨
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站