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>




0 0
原创粉丝点击