J2EE——2014.5.26
来源:互联网 发布:mac可以加硬盘吗 编辑:程序博客网 时间:2024/06/11 17:59
1.load-on-startup Servlet
启动应用时就创建Servlet,配置:web.xml文件中通过<servlet.../>的<load-on-startup.../>子元素配置。load-on-startup属性只接受一个整型值,这个值越小,Servlet就越优先实例化。
2.Listener
常用Web事件监听接口:
ServletContextListener:监听Web应用的启动和关闭
~contextInitialized(ServletContextEvent sce)、contextDestroyed(ServletContextEvent sce)方法
~
通过sce.getServletContext()取得application
ServletContextAttributeListener:监听ServletContext范围(application)内属性的改变
~attributeAdded(ServletContextAttributeEvent event):属性存入application范围时触发
~attributeRemoved(ServletContextAttributeEvent event):删除时触发
~attrubuteReplaced(ServletContextAttributeEvent event):替换时触发
~
event.getName() event.getValue()取得变化的属性名和值 event.getServletContext()取得application
ServletRequestListener:监听用户请求
ServletRequestAttributeListener:监听ServletRequest范围内属性改变
~使用类似于ServletContextListener
HttpSessionListener:监听用户session的开始和结束
~sessionCreated(HttpSessionEvent se)
~sessionDestroyed(HttpSessionEvent se)
~
HttpSession session = se.getSession();
ServletContext application = session.getServletContext();
~
通过检查HttpServletRequest可以更精确监控在线用户状态:
1)定义ServletRequestListener监听每个用户请求,用户请求到达时,系统将用户请求的session ID、用户名、正在访问的资源等信息记录下来。
2)启动一条后台线程,每个一段时间内检查以上每条在线记录,如果某条在线记录访问时间与当前时间相差超过指定值则删除,这条后台线程随着Web应用启动而启动,可以考虑使用ServletContextListener完成。
HttpSessionAttributeListener:监听HttpSession范围内属性改变
配置方式:
~使用@WebListener修饰Listener实现类
~在web.xml中使用<listener.../>配置
<listener>
<listener-class>包.类名</listener-class>
</listener>
应用:应用启动时将一个数据源(javax.sql.DataSource实例)设置成application属性,所有JSP页面通过该实例来取得数据库连接。————数据库连接池。
3.表达式语言(EL)
语法格式:${expression}
支持算术表达式和逻辑表达式,所有数值当成浮点数处理,支持div、mod等运算符,可以在数字与数字之间比较,还可以在字符和字符之间比较,字符串比较是根据对应UNICODE值决定。
~内置对象
pageContext:代表该页面的pageContext对象
pageScope:获取page范围的属性值
requestScope:获取request范围的属性值
sessionScope:获取session范围的属性值
applicationScope:获取application范围的属性值
param:获取请求的参数值
paramValues:获取请求的参数值,该对象获取属性值为数组的属性值
header:获取请求头的属性值
headerValues:获取请求头的属性值,该对象获取属性值维数组的属性值
initParam:获取请求Web应用的初始化参数
cookie:获取指定的Cookie值
4.MVC特点
~一个模型对应多个视图,减少代码的维护量,模型改变时也易于维护。
~模型返回的数据与显示逻辑分离,模型数据可以用任何显示技术。
~应用分隔为三层,降低各层之间的耦合,提供了应用的可扩展性。
5.自定义标签——————通过简单的标签在页面上生成一个内容片断
继承javax.servlet.jsp.tagext.SimpleTagSupport
要求:
1)如果标签类包含属性,每个属性都有相应getter和setter方法。
2)重写doTag()方法,这个方法负责生成页面内容。
TLD文件——标签库定义,每一个TLD文件对应一个标签库。
~
<tlib-version>1.0</tlib-version>
<short-name>MyTag</short-name>
<uri>http://tomcat.apache.org/jsp2-example-taglib</uri> ————指定标签库URI,相当于指定标签库的唯一标识
<tag>
<description>Outputs Hello, World</description>
<name>helloWorld</name> ————标签库名称,JSP根据此名称使用标签
<tag-class>jsp2.examples.simpletag.HelloWorldSimpleTag</tag-class>——指定标签的处理类
<body-content>empty</body-content> ——指定标签体内容
<!-- 配置标签属性-->——标签处理类含有属性时
<attribute>
<name>driver</name>——属性名
<required>true</required>——该属性是否为必须属性。true/false
<fragment>true</fragment>——是否支持JSP脚本、表达式等动态内容。true/false
</attrubute>
</tag>
使用该标签库:<%@ taglib uri="xxx" prefix="mytag"%>
<mytag:helloWorlddriver="xxxxx" />
~getJspBody()返回标签包含的标签体:JspFragment对象,执行该对象的invoke()方法,可以输出标签体内容
~taglib语法格式:
<%@ taglib uri="tagliburi" prefix="taglibprefix" %>prefix指定标签库前缀,所有使用该前缀标签由此标签库处理
使用标签语法格式:
<tagPrefix:tagName tagAttribute="tagValue"...>
<tagBody/>
</tagePrefix:tagName>
6.strust2核心过滤器————web.xml中配置
<filter>
<filter-name>strust2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
- J2EE——2014.5.26
- J2EE——2014.5.21
- J2EE——2014.5.24
- J2EE的体系架构——J2EE
- ——J2SE, J2EE
- J2EE——Ant
- J2EE——Servlet
- J2EE——JSP
- J2EE——JNDI
- J2EE——JDBC
- J2EE——XML
- J2EE——JDBC
- J2EE——JNDI
- J2EE——servlet
- J2EE——JSP
- J2EE——JMS
- 【J2EE系列】—Servlet
- 【J2EE】—概览三步走
- JSP页面间传值el表达式
- 利用Eclipse中的Maven构建Web项目(一)
- 如何调用单篇文章内的所有图片附件?
- 高吞吐低延迟Java应用的垃圾回收优化
- PHP数组关于数字键名的问题
- J2EE——2014.5.26
- 使用Volatile变量还是原子变量
- Makefile基础
- 用c++库函数实现WCHAR写入文件
- hibernate实现分表
- 第十三周工作周报
- .value和.innerHTML
- Android.mk用法基础
- 逆序建立链表