servlet监听器基础.docx

上传人:b****3 文档编号:5444730 上传时间:2022-12-16 格式:DOCX 页数:14 大小:20.55KB
下载 相关 举报
servlet监听器基础.docx_第1页
第1页 / 共14页
servlet监听器基础.docx_第2页
第2页 / 共14页
servlet监听器基础.docx_第3页
第3页 / 共14页
servlet监听器基础.docx_第4页
第4页 / 共14页
servlet监听器基础.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

servlet监听器基础.docx

《servlet监听器基础.docx》由会员分享,可在线阅读,更多相关《servlet监听器基础.docx(14页珍藏版)》请在冰豆网上搜索。

servlet监听器基础.docx

servlet监听器基础

过滤器:

API(接口)

执行流程

应用、案例:

(在servlet中重复编写的代码,都可以放到过滤器中完成!

过滤器实现编码统一处理

登陆权限验证

目标:

监听器

国际化

1.监听器

1.1概述

监听器:

主要是用来监听特定对象的创建或销毁、属性的变化的!

是一个实现特定接口的普通java类!

对象:

自己创建自己用(不用监听)

别人创建自己用(需要监听)

Servlet中哪些对象需要监听?

request/session/servletContext

分别对应的是request监听器、session相关监听器、servletContext监听器

监听器(listener)

监听器接口:

一、监听对象创建/销毁的监听器接口

InterfaceServletRequestListener监听request对象的创建或销毁

InterfaceHttpSessionListener监听session对象的创建或销毁

InterfaceServletContextListener监听servletContext对象的创建或销毁

二、监听对象属性的变化

InterfaceServletRequestAttributeListener监听request对象属性变化:

添加、移除、修改

InterfaceHttpSessionAttributeListener监听session对象属性变化:

添加、移除、修改

InterfaceServletContextAttributeListener监听servletContext对象属性变化

三、session相关监听器

InterfaceHttpSessionBindingListener监听对象绑定到session上的事件

InterfaceHttpSessionActivationListener(了解)监听session序列化及反序列化的事件

404(路径写错)

500(服务器错误,调试)

1.2生命周期监听器

声明周期监听器:

监听对象的创建、销毁的过程!

监听器开发步骤:

1.写一个普通java类,实现相关接口;

2.配置(web.xml)

A.ServletRequestListener

监听request对象的创建或销毁。

代码:

/**

*监听request对象的创建或销毁

*@authorJie.Yuan

*

*/

publicclassMyRequestListenerimplementsServletRequestListener{

//对象销毁

@Override

publicvoidrequestDestroyed(ServletRequestEventsre){

//获取request中存放的数据

Objectobj=sre.getServletRequest().getAttribute("cn");

System.out.println(obj);

System.out.println("MyRequestListener.requestDestroyed()");

}

//对象创建

@Override

publicvoidrequestInitialized(ServletRequestEventsre){

System.out.println("MyRequestListener.requestInitialized()");

}

}

Web.xml

--监听request对象创建、销毁-->

cn.itcast.a_life.MyRequestListener

B.HttpSessionListener

监听session对象的创建或销毁。

C.ServletContextListener

监听servletContext对象的创建或销毁。

1.3属性监听器

监听:

request/session/servletContext对象属性的变化!

ServletRequestAttributeListener

HttpSessionAttributeListener

ServletContextAttributeListener

总结:

先写类,实现接口;再配置

1.4其他监听器:

session相关监听器

HttpSessionBindingListener

监听对象绑定/解除绑定到sesison上的事件!

步骤:

对象实现接口;再把对象绑定/解除绑定到session上就会触发监听代码。

作用:

(上线提醒!

/**

*监听此对象绑定到session上的过程,需要实现session特定接口

*@authorJie.Yuan

*

*/

publicclassAdminimplementsHttpSessionBindingListener{

…省略get/set

//对象放入session

@Override

publicvoidvalueBound(HttpSessionBindingEventevent){

System.out.println("Admin对象已经放入session");

}

//对象从session中移除

@Override

publicvoidvalueUnbound(HttpSessionBindingEventevent){

System.out.println("Admin对象从session中移除!

");

}

}

思考:

这个session监听器,和上面的声明周期、属性监听器区别?

--不用再web.xml配置

-因为监听的对象是自己创建的对象,不是服务器对象!

1.4案例

需求:

做一个在线列表提醒的功能!

用户--登陆

---显示登陆信息,列表展示。

(list.jsp)

--显示在线用户列表(list.jsp)

-列表点击进入“在线列表页面”onlineuser.jsp

实现:

1.先增加退出功能;再把session活跃时间1min;

2.写监听器,监听servletContext对象的创建:

初始化集合(onlineuserlist)

3.登陆功能:

用户登陆时候,把数据保存到servletContext中

4.List.jsp增加超链接,点击时候提交直接跳转到online.jsp

5.写监听器:

监听session销毁,把当前登陆用户从onlineuserlist移除!

2.国际化

Javaweb增强:

过滤器、监听器、国际化、文件上传下载、javaMail

●国际化又简称为i18n:

internationalization

国际化的人:

人,英语,汉语;可以说这个人是国际化的人;

软件的国际化:

软件

中国:

显示中文,以及服务符合中国习惯的文本字符串!

1999-09-09

美国:

显示英文,以及服务符合他国习惯的文本字符串!

这种软件,就叫国际化的软件!

如何做到国际化的软件,要求:

1.软件中存储特定的字符串

2.知道浏览器当前使用哪种语言(Locale)

Locale本地化

Java提供了一个本地化的对象!

封装当前语言、国家、环境等特征!

publicclassApp{

@Test

//1.本地化对象:

Locale

//封装语言、国家信息的对象,有java.util提供

publicvoidtestLocale()throwsException{

//模拟中国语言等环境

//Localelocale=Locale.CHINA;

Localelocale=Locale.getDefault();//当前系统默认的语言环境

System.out.println(locale.getCountry());//CN国家的简称

System.out.println(locale.getDisplayCountry());//国家名称

System.out.println(locale.getLanguage());//zh语言简称

//模拟美国国家

Localel_us=Locale.US;

System.out.println(l_us.getCountry());

System.out.println(l_us.getDisplayCountry());

}

}

国际化

静态数据国际化

网站中显示的固定文本的国际化:

“用户名”“密码“

国际化的软件:

1.存储所有国家显示的文本的字符串

a)文件:

properties

b)命名:

基础名_语言简称_国家简称.properties

例如:

msg_zh_CN.properties存储所有中文

Msg_en_US.properties存储所有英文

2.程序中获取

ResourceBundle类,可以读取国际化的资源文件!

动态文本国际化

中文:

1987-09-19¥1000

英文:

Sep/091987$100

●数值,货币,时间,日期等数据由于可能在程序运行时动态产生,所以无法像文字一样简单地将它们从应用程序中分离出来,而是需要特殊处理。

Java中提供了解决这些问题的API类(位于java.util包和java.text包中)

//国际化-静态数据

@Test

publicvoidtestI18N()throwsException{

//中文语言环境

Localelocale=Locale.US;

//创建工具类对象ResourceBundle

ResourceBundlebundle=ResourceBundle.getBundle("cn.itcast.f_i18n.msg",locale);

//根据key获取配置文件中的值

System.out.println(bundle.getString("hello"));

System.out.println(bundle.getString("username"));

System.out.println(bundle.getString("pwd"));

}

//国际化-动态文本-0.概述

@Test

publicvoidtestI18N2()throwsException{

//国际化货币

NumberFormat.getCurrencyInstance();

//国际化数字

NumberFormat.getNumberInstance();

//国际化百分比

NumberFormat.getPercentInstance();

//国际化日期

//DateFormat.getDateTimeInstance(dateStyle,timeStyle,aLocale)

}

//国际化-动态文本-1.国际化货币

@Test

publicvoidtestI18N3()throwsException{

//模拟语言环境

Localelocale=Locale.CHINA;

//数据准备

doublenumber=100;

//工具类

NumberFormatnf=NumberFormat.getCurrencyInstance(locale);

//国际化货币

Stringm=nf.format(number);

//测试

System.out.println(m);

}

//面试题:

代码计算:

$100*10

@Test

publicvoideg()throwsException{

Stringstr="$100";

intnum=10;

//1.分析str值是哪一国家的货币

Localeus=Locale.US;

//2.国际化工具类

NumberFormatnf=NumberFormat.getCurrencyInstance(us);

//3.解析str国币

Numbern=nf.parse(str);

System.out.println(n.intValue()*num);

}

//国际化-动态文本-2.国际化数值

@Test

publicvoidtestI18N4()throwsException{

//模拟语言环境

Localelocale=Locale.CHINA;

NumberFormatnf=NumberFormat.getNumberInstance(Locale.US);

Stringstr=nf.format(1000000000);

System.out.println(str);

}

//国际化-动态文本-3.国际化日期

/*

*日期

*FULL2015年3月4日星期三

*LONG2015年3月4日

*FULL2015年3月4日星期三

*MEDIUM2015-3-4

*SHORT15-3-4

*

*时间

*FULL下午04时31分59秒CST

*LONG下午04时32分37秒

*MEDIUM16:

33:

00

*SHORT下午4:

33

*

*

*/

@Test

publicvoidtestI18N5()throwsException{

//日期格式

intdateStyle=DateFormat.SHORT;

//时间格式

inttimeStyle=DateFormat.SHORT;

//工具类

DateFormatdf=

DateFormat.getDateTimeInstance(dateStyle,timeStyle,Locale.CHINA);

Stringdate=df.format(newDate());

System.out.println(date);

}

//面试2:

请将时间值:

09-11-28上午10时25分39秒CST,反向解析成一个date对象。

@Test

publicvoideg2()throwsException{

Stringstr="09-11-28上午10时25分39秒CST";

//创建DateFormat工具类,国际化日期

DateFormatdf=DateFormat.getDateTimeInstance(

DateFormat.SHORT,DateFormat.FULL,Locale.getDefault());

Dated=df.parse(str);

System.out.println(d);

}

Jsp页面国际化

<%

ResourceBundlebundle=ResourceBundle.getBundle("cn.itcast.f_i18n.msg",request.getLocale());

%>

<%=bundle.getString("title")%>

method=login"method="post">

<%=bundle.getString("username")%>

<%=bundle.getString("pwd")%>

">

Jsp页面国际化–使用jstl标签

JSTL标签:

核心标签库

国际化与格式化标签库

数据库标签库(没用)

函数库

setLocalevalue=""/>设置本地化对象

setBundlebasename=""/>设置工具类

message>

message>显示国际化文本

格式化数值

formatNumberpattern="#.##"value="100.99">

formatNumber>

格式化日期:

formatDatepattern="yyyy-MM-dd"value="${date}"/>

--一、设置本地化对象-->

setLocalevalue="${pageContext.request.locale}"/>

--二、设置工具类-->

setBundlebasename="cn.itcast.f_i18n.msg"var="bundle"/>

<fmt:</p><p>messagekey="title"bundle="${bundle}"></fmt:</p><p>message>

method=login"method="post">

messagekey="username"bundle="${bundle}">

message>

messagekey="pwd"bundle="${bundle}">

message>

messagekey="submit"bundle="${bundle}"/>">

作业:

继续前面的案例:

1.登陆、注册、首页列表显示、退出、分页

2.“在线列表显示“

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 财务管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1