監(jiān)聽(tīng)器的概述1、什么是監(jiān)聽(tīng)器監(jiān)聽(tīng)器就是一個(gè)實(shí)現(xiàn)了特定接口的Java類(lèi),這個(gè)Java類(lèi)用于監(jiān)聽(tīng)另一個(gè)Java類(lèi)的方法調(diào)用窍株,或者屬性的改變煮落。當(dāng)被監(jiān)聽(tīng)對(duì)象發(fā)生上述事件后敞峭,監(jiān)聽(tīng)器某個(gè)方法將會(huì)立即被執(zhí)行2、監(jiān)聽(tīng)器的用途用來(lái)監(jiān)聽(tīng)其他對(duì)象的變化的蝉仇,主要應(yīng)用在圖形化界面的開(kāi)發(fā)上例如Java中的GUI旋讹、Android等,都有大量的監(jiān)聽(tīng)器的使用3轿衔、監(jiān)聽(tīng)器的術(shù)語(yǔ)事件源:指的是被監(jiān)聽(tīng)對(duì)象(汽車(chē))監(jiān)聽(tīng)器:指的是監(jiān)聽(tīng)的對(duì)象(報(bào)警器)事件源和監(jiān)聽(tīng)器綁定:在汽車(chē)上安裝報(bào)警器事件:指的是事件源對(duì)象的改變(踹了汽車(chē)一腳)沉迹,主要功能是獲得事件源對(duì)象(二)監(jiān)聽(tīng)器的入門(mén)1、監(jiān)聽(tīng)器的入門(mén)程序2害驹、監(jiān)聽(tīng)器的執(zhí)行過(guò)程(三)Servlet中的監(jiān)聽(tīng)器一鞭呕、Servlet中的監(jiān)聽(tīng)器簡(jiǎn)介在Servlet中定義了多種類(lèi)型的監(jiān)聽(tīng)器,它們用于監(jiān)聽(tīng)的事件源分別是ServletContext宛官、HttpSession和ServletRequest這三個(gè)域?qū)ο蠖虐琛ervlet中的監(jiān)聽(tīng)器的分類(lèi)1、一類(lèi):監(jiān)聽(tīng)三個(gè)域?qū)ο蟮膭?chuàng)建和銷(xiāo)毀的監(jiān)聽(tīng)器(三個(gè))2摘刑、二類(lèi):監(jiān)聽(tīng)三個(gè)域?qū)ο蟮膶傩宰兏▽傩蕴砑咏Α⒁瞥⑻鎿Q)的監(jiān)聽(tīng)器(三個(gè))3枷恕、三類(lèi):監(jiān)聽(tīng)HttpSession中JavaBean的狀態(tài)改變(鈍化党晋、活化、綁定徐块、解除綁定)的監(jiān)聽(tīng)(兩個(gè))(四)ServletContextListener監(jiān)聽(tīng)器的使用一未玻、ServletContextListener監(jiān)聽(tīng)器的作用用來(lái)監(jiān)聽(tīng)ServletContext域?qū)ο蟮膭?chuàng)建和銷(xiāo)毀的監(jiān)聽(tīng)器二、ServletContext創(chuàng)建和銷(xiāo)毀1胡控、創(chuàng)建:在服務(wù)器啟動(dòng)的時(shí)候扳剿,為每個(gè)Web應(yīng)用創(chuàng)建單獨(dú)的ServletContext對(duì)象2、銷(xiāo)毀:在服務(wù)器關(guān)閉的時(shí)候昼激,或者項(xiàng)目從Web服務(wù)器中移除的時(shí)候三庇绽、ServletContextListener監(jiān)聽(tīng)器的方法1锡搜、監(jiān)聽(tīng)ServletContext對(duì)象的創(chuàng)建contextInitialized(ServletContextEvent sce)2、監(jiān)聽(tīng)ServletContext對(duì)象的銷(xiāo)毀ontextDestroyed(ServletContextEvent sce)四瞧掺、編寫(xiě)監(jiān)聽(tīng)器1耕餐、監(jiān)聽(tīng)器的代碼2、監(jiān)聽(tīng)器的配置五辟狈、ServletContextListener的企業(yè)用途1肠缔、加載框架的配置文件Spring框架提供了一個(gè)核心監(jiān)聽(tīng)器叫ContextLoaderListener2、定時(shí)任務(wù)調(diào)度(五)HttpSessionListener監(jiān)聽(tīng)器的使用一哼转、HttpSessionListener監(jiān)聽(tīng)器作用用來(lái)監(jiān)聽(tīng)HttpSession對(duì)象的創(chuàng)建和銷(xiāo)毀二明未、HttpSession創(chuàng)建和銷(xiāo)毀創(chuàng)建:服務(wù)器端第一次調(diào)用getSession()方法的時(shí)候銷(xiāo)毀:非正常關(guān)閉服務(wù)器(正常關(guān)閉服務(wù)器Session會(huì)被序列化)Session過(guò)期(默認(rèn)過(guò)期時(shí)間30分鐘)手動(dòng)調(diào)用session.invalidate()方法三、HttpSessionListener監(jiān)聽(tīng)器的方法1壹蔓、監(jiān)聽(tīng)HttpSession對(duì)象創(chuàng)建sessionCreated(HttpSessionEvent se)2趟妥、監(jiān)聽(tīng)HttpSession對(duì)象銷(xiāo)毀sessionDestroyed(HttpSessionEvent se)四、編寫(xiě)監(jiān)聽(tīng)器監(jiān)聽(tīng)HttpSession對(duì)象創(chuàng)建和銷(xiāo)毀1庶溶、監(jiān)聽(tīng)器的代碼2煮纵、監(jiān)聽(tīng)器的配置3懂鸵、問(wèn)題:訪問(wèn)HTML是否會(huì)創(chuàng)建Session偏螺?不會(huì)訪問(wèn)JSP是否會(huì)創(chuàng)建Session?會(huì)訪問(wèn)Servlet是否會(huì)創(chuàng)建Session匆光?不會(huì)(默認(rèn)沒(méi)有調(diào)用getSession方法)(六)ServletRequestListener監(jiān)聽(tīng)器的使用一套像、ServletRequestListener監(jiān)聽(tīng)器的作用用于監(jiān)聽(tīng)ServletRequest對(duì)象的創(chuàng)建和銷(xiāo)毀二、ServletRequest對(duì)象的創(chuàng)建和銷(xiāo)毀創(chuàng)建:從客戶端向服務(wù)器發(fā)送一次請(qǐng)求终息,服務(wù)器就會(huì)創(chuàng)建Request對(duì)象銷(xiāo)毀:服務(wù)器對(duì)這次請(qǐng)求作出了響應(yīng)之后夺巩,Request對(duì)象就銷(xiāo)毀了三、ServletRequestListener監(jiān)聽(tīng)器的方法1周崭、監(jiān)聽(tīng)ServletRequest對(duì)象的創(chuàng)建requestInitialized(ServletRequestEvent sre)2柳譬、監(jiān)聽(tīng)ServletRequest對(duì)象的銷(xiāo)毀requestDestroyed(ServletRequestEvent sre)四、編寫(xiě)監(jiān)聽(tīng)器代碼1续镇、監(jiān)聽(tīng)器代碼在服務(wù)器啟動(dòng)的時(shí)候需要有一個(gè)初始值為零美澳。當(dāng)瀏覽器訪問(wèn)服務(wù)器上的某個(gè)JSP了,就會(huì)創(chuàng)建Session摸航,此時(shí)獲取初始值制跟,進(jìn)行+1操作。如果Session銷(xiāo)毀了酱虎,獲取該值進(jìn)行-1操作二雨膨、代碼實(shí)現(xiàn)1、創(chuàng)建ServletContextListener進(jìn)行初始化2读串、創(chuàng)建HttpSessionListener3聊记、配置監(jiān)聽(tīng)器4撒妈、創(chuàng)建JSP頁(yè)面八)監(jiān)聽(tīng)三個(gè)域?qū)ο蟮膶傩宰兏谋O(jiān)聽(tīng)器一、三類(lèi)監(jiān)聽(tīng)器1甥雕、ServletContextAttributeListener監(jiān)聽(tīng)ServletContext對(duì)象中的屬性變更(屬性添加踩身、移除、替換)的監(jiān)聽(tīng)器attributeAdded(ServletContextAttributeEvent event)attributeRemoved(ServletContextAttributeEvent event)attributeReplaced(ServletContextAttributeEvent event)2社露、HttpSessionAttributeListener監(jiān)聽(tīng)HttpSession對(duì)象中的屬性變更(屬性添加挟阻、移除、替換)的監(jiān)聽(tīng)器attributeAdded(HttpSessionBindingEvent event)attributeRemoved(HttpSessionBindingEvent event)attributeReplaced(HttpSessionBindingEvent event)3峭弟、ServletRequestAttributeListener監(jiān)聽(tīng)ServletRequest對(duì)象中的屬性變更(屬性添加附鸽、移除、替換)的監(jiān)聽(tīng)器attributeAdded(ServletRequestAttributeEvent srae)attributeRemoved(ServletRequestAttributeEvent srae)attributeReplaced(ServletRequestAttributeEvent srae)二瞒瘸、演示第二類(lèi)監(jiān)聽(tīng)器1坷备、演示HttpSessionAttributeListener2、配置監(jiān)聽(tīng)器3情臭、編寫(xiě)測(cè)試的JSP(九)監(jiān)聽(tīng)HttpSession中Java類(lèi)狀態(tài)改變的監(jiān)聽(tīng)器一省撑、第三類(lèi)監(jiān)聽(tīng)器概述1、保存在Session域中的Java類(lèi)可以有多種狀態(tài):綁定到Session中俯在、從Session中解除綁定竟秫、隨Session對(duì)象持久化到一個(gè)存儲(chǔ)設(shè)備中(鈍化)、隨Session對(duì)象從一個(gè)存儲(chǔ)設(shè)備中恢復(fù)(活化)2跷乐、Servlet規(guī)范中中定義了兩個(gè)特殊的監(jiān)聽(tīng)的接口肥败,來(lái)幫助Java類(lèi)了解自己在Session域中的狀態(tài),分別是:HttpSessionBindingListener接口HttpSessionActivationListener接口實(shí)現(xiàn)了這兩個(gè)接口的類(lèi)愕提,是不需要在web.xml中進(jìn)行配置的二馒稍、HttpSessionBindingListener監(jiān)聽(tīng)器1、監(jiān)聽(tīng)Java類(lèi)在HttpSession中的綁定和解除綁定的狀態(tài)的監(jiān)聽(tīng)器valueBound(HttpSessionBindingEvent event)valueUnbound(HttpSessionBindingEvent event)2浅侨、測(cè)試代碼三纽谒、HttpSessionActivationListener監(jiān)聽(tīng)器1、監(jiān)聽(tīng)HttpSession中Java類(lèi)的鈍化和活化的監(jiān)聽(tīng)器sessionDidActivate(HttpSessionEvent se)sessionWillPassivate(HttpSessionEvent se)2如输、測(cè)試代碼3鼓黔、配置完成Session的序列化和反序列化Context標(biāo)簽可以配置在:Tomcat/conf/context.xml:所有Tomcat下虛擬主機(jī)和虛擬目錄下的工程都會(huì)序列SessionTomcat/conf/Catalina /local host/context.xml:只有l(wèi)ocal host虛擬主機(jī)下的所有項(xiàng)目會(huì)序列化Session工程/METAINF/context.xml:只有當(dāng)前工程才會(huì)序列化Session(十)Filter一、Filter的概述1挨决、什么是FilterFilter稱(chēng)為過(guò)濾器请祖,它是Servlet技術(shù)中最實(shí)用的技術(shù),Web開(kāi)發(fā)人員通過(guò)Filter技術(shù)脖祈,對(duì)Web服務(wù)器所管理的資源(JSP肆捕、Servlet、靜態(tài)圖片盖高、靜態(tài)html文件等)進(jìn)行攔截慎陵,從而實(shí)現(xiàn)一些特殊的功能Filte就是過(guò)濾從客戶端向服務(wù)器發(fā)送請(qǐng)求2眼虱、為什么學(xué)習(xí)過(guò)濾器二、Filter的入門(mén)1席纽、第一步:編寫(xiě)一個(gè)類(lèi)實(shí)現(xiàn)Filter接口2捏悬、第二步:對(duì)過(guò)濾器進(jìn)行配置三、FilterC hain對(duì)象的概述1润梯、什么是FilterC hainFilterC hain過(guò)濾器鏈:在一個(gè)Web應(yīng)用中过牙,可以開(kāi)發(fā)編寫(xiě)多個(gè)Filter,這些Filter組合起來(lái)稱(chēng)為是一個(gè)過(guò)濾器鏈Web服務(wù)器根據(jù)Filter在web.xml文件中的注冊(cè)順序(mapping的配置順序)決定先調(diào)用哪個(gè)Filter纺铭,依次調(diào)用后的過(guò)濾器寇钉,如果沒(méi)有下一個(gè)過(guò)濾器,則調(diào)用目標(biāo)資源2舶赔、FilterC hain的演示四扫倡、Filter的生命周期1、Filter的生命周期描述Filter的創(chuàng)建和銷(xiāo)毀是由web服務(wù)器負(fù)責(zé)竟纳。Web應(yīng)用程序啟動(dòng)的時(shí)候撵溃,Web服務(wù)器創(chuàng)建Filter的實(shí)例對(duì)象,并調(diào)用其init方法進(jìn)行初始化的操作(Filter對(duì)象只會(huì)創(chuàng)建一次锥累,init方法也只會(huì)執(zhí)行一次)每次Filter進(jìn)行攔截的時(shí)候缘挑,都會(huì)執(zhí)行doFilter的方法當(dāng)服務(wù)器關(guān)閉的時(shí)候,或者應(yīng)用從服務(wù)器中移除的時(shí)候揩悄,服務(wù)器會(huì)銷(xiāo)毀Filter對(duì)象2卖哎、FilterCon fig對(duì)象的概述(1)FilterCon fig對(duì)象的作用:用來(lái)獲得Filter的相關(guān)的配置的對(duì)象(2)FilterCon fig對(duì)象的APIgetFilter Name()getInitParameter(String name)getInitParameterNames()getServletContext()3鬼悠、FilterCon fig的演示五删性、過(guò)濾器的相關(guān)配置1、<url-pattern >的配置完全路徑匹配:以/開(kāi)始焕窝,例如/aaa/aaa/bbb目錄匹配:以/開(kāi)始蹬挺,例如/*/aaa/*/aaa/bbb/*擴(kuò)展名匹配:不能以/開(kāi)始,以*開(kāi)始它掂,例如*.jsp *.do*.action2巴帮、<servlet -name>的配置專(zhuān)門(mén)以Servlet的配置的名稱(chēng)攔截Servlet3、<dispatc her>的配置默認(rèn)的情況下虐秋,過(guò)濾器會(huì)攔截請(qǐng)求榕茧,如果進(jìn)行轉(zhuǎn)發(fā)(需要攔截這次轉(zhuǎn)發(fā))dispatc her的取值有四個(gè)REQUEST:默認(rèn)值。默認(rèn)過(guò)濾器攔截的就是請(qǐng)求FORWARD:轉(zhuǎn)發(fā)INCLUDE:頁(yè)面包含的時(shí)候進(jìn)行攔ERROR:頁(yè)面出現(xiàn)全局錯(cuò)誤頁(yè)面跳轉(zhuǎn)的時(shí)候進(jìn)行攔截(十一)權(quán)限驗(yàn)證過(guò)濾器一客给、案例需求現(xiàn)在一個(gè)網(wǎng)站上需要有登錄的功能用押,在登錄成功后,重定向到后臺(tái)的成功頁(yè)面(后臺(tái)的頁(yè)面有很多)靶剑。如果現(xiàn)在沒(méi)有登錄蜻拨,直接在地址欄上輸入后頁(yè)面地址編寫(xiě)一過(guò)濾器池充,可以對(duì)沒(méi)有登錄的用戶進(jìn)行攔截(沒(méi)有登錄,回到登錄頁(yè)面缎讼;如果已經(jīng)登錄收夸,放行)二、案例登錄功能1血崭、創(chuàng)建表(MySQL執(zhí)行如下語(yǔ)句)create databaseweb05charset utf8;use web05;create table user(id int primarykey auto _increment,userna me varchar(20),password varchar(20))charset ut f8;insert into user values (null,'aaa','123');2卧惜、搭建項(xiàng)目的環(huán)境3、代碼實(shí)現(xiàn)三夹纫、權(quán)限驗(yàn)證的過(guò)濾器實(shí)現(xiàn)(十二)通用的字符集編碼過(guò)濾器的分析一序苏、案例需求假設(shè)網(wǎng)站需要向后臺(tái)提交中文的數(shù)據(jù)(有可能是GET,也有可能是POST)捷凄,中文處理根據(jù)不同的請(qǐng)求方式忱详,處理的方式也是不同的需要調(diào)用request.getParameter() ;方法接收數(shù)據(jù),但是這時(shí)存在亂碼跺涤,如果想調(diào)用request.getParameter()方法匈睁,無(wú)是get還是post請(qǐng)求,提交的中文都沒(méi)有亂碼二桶错、增強(qiáng)一個(gè)類(lèi)的方法1航唆、通過(guò)上面的分析,現(xiàn)在要增強(qiáng)request的getParameter方法院刁,增強(qiáng)的過(guò)程要寫(xiě)在過(guò)濾器當(dāng)中(1)如何增強(qiáng)一個(gè)類(lèi)中的方法糯钙?1)繼承必須要能夠控制這個(gè)類(lèi)的構(gòu)造2)裝飾者被增強(qiáng)的類(lèi)和增強(qiáng)的類(lèi)需要實(shí)現(xiàn)相同的接口在增強(qiáng)的類(lèi)中獲得被增強(qiáng)的類(lèi)的引用缺點(diǎn):接口中的方法過(guò)多,會(huì)導(dǎo)致要重寫(xiě)很多其他的方法3)動(dòng)態(tài)代理類(lèi)需要實(shí)現(xiàn)接口三退腥、通用的字符集編碼過(guò)濾器的代碼實(shí)現(xiàn)1任岸、過(guò)濾器的代碼2、增強(qiáng)類(lèi)的代碼package com.good.domain;public class User { private Integer id; private String username; private String password;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}package com.good.controller;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.good.domain.User;import com.good.model.UserModel;/*** Servlet implementation class UserServlet*/@WebServlet("/UserServlet")public class UserServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {try {String username = request.getParameter("username");String password = request.getParameter("password");User user = new User();user.setUsername(username);user.setPassword(password);UserModel userModel = new UserModel();User existUser = userModel.login(user);if(existUser == null) {request.setAttribute("msg", "用戶名或密碼錯(cuò)誤");request.getRequestDispatcher("/login.jsp").forward(request, response);}else {request.getSession().setAttribute("exisetUser", existUser);response.sendRedirect(request.getContextPath() + "/jsp/success.jsp");}} catch (Exception e) {e.printStackTrace();}}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}package com.good.model;import java.sql.SQLException;import org.apache.commons.dbutils.QueryRunner;import org.apache.commons.dbutils.handlers.BeanHandler;import com.good.domain.User;import com.good.utils.Utils;/**** @author 趙藝**/public class UserModel {public User login(User user) throws SQLException {QueryRunner queryRunner = new QueryRunner(Utils.getDataSource());String sql = "select * from user where username=? and password=?";User existUser = queryRunner.query(sql, new BeanHandler<User>(User.class),user.getUsername(),user.getPassword());return existUser;}}<%@ page language="java" contentType="text/html; charset=UTF-8"? pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head><body>登錄頁(yè)面</h1><h3><font color="red">${ msg }</font></h3><form action="${ pageContext.request.contextPath }/UserServlet" method="post">? <table border="1" width="400"> <tr>用戶名</td>? <td><input type="text" name="username"></td>? </tr>? <tr>密碼</td>? ? <td><input type="password" name="password"></td>? ? </tr>? ? <tr></tr> </table></form></body></html><%@ page language="java" contentType="text/html; charset=UTF-8"? pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head><body>您已經(jīng)登錄程序狡刘!歡迎:${ existUser.username }</h1>提交數(shù)據(jù)</a></body></html><%@ page language="java" contentType="text/html; charset=UTF-8"? pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head><body><h1></h1><form action="${ pageContext.request.contextPath }/ServletDemo1" method="get">姓名:<input type="text" name="name"><br></form><h1></h1><form action="${ pageContext.request.contextPath }/ServletDemo1" method="get">姓名:<input type="text" name="name"><br></form></body>package com.good.controller;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/*** Servlet implementation class ServletDemo1*/@WebServlet("/ServletDemo1")public class ServletDemo1 extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name = request.getParameter("name");System.out.println("GET方式接收的名稱(chēng):" + name);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String name = request.getParameter("name");System.out.println("POST方式接收的名稱(chēng):" + name);}}package com.good.filter;import java.io.UnsupportedEncodingException;import javax.servlet.AsyncContext;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletRequestWrapper;public class MyHttpServletRequest extends HttpServletRequestWrapper{? private HttpServletRequest request;public MyHttpServletRequest(HttpServletRequest request) {super(request);this.request = request;} @Overridepublic String getParameter(String name) {? String method = request.getMethod();? if("GET".equals(method)) {? String value = super.getParameter(name);? try {//? value = new String(value.getBytes("ISO-8859-1"),"UTF-8");? value = new String(value.getBytes("UTF-8"),"UTF-8");? }catch(UnsupportedEncodingException e) {? e.printStackTrace();? }? return value;? }else if("POST".equals(method)) {? try {? request.setCharacterEncoding("UTF-8");? }catch(UnsupportedEncodingException e) {? e.printStackTrace();? }? } return super.getParameter(name);}}package com.good.filter;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;public class GenericEncodingFilter implements Filter{@Overridepublic void destroy() {// TODO Auto-generated method stub}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {HttpServletRequest req = (HttpServletRequest) request;? MyHttpServletRequest myReq = new MyHttpServletRequest(req);? chain.doFilter(myReq, response);}@Overridepublic void init(FilterConfig filterConfig) throws ServletException {// TODO Auto-generated method stub}}package com.good.filter;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import com.good.domain.User;public class MyPrivilegeFilter implements Filter{@Overridepublic void destroy() {// TODO Auto-generated method stub}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain Chain)throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; User existUser = (User) req.getSession().getAttribute("existUser"); if(existUser == null) {req.setAttribute("msg", "您還沒(méi)有登錄享潜!沒(méi)有權(quán)限訪問(wèn)!"); req.getRequestDispatcher("/login.jsp").forward(request, response); }else { Chain.doFilter(request,response); }}@Overridepublic void init(FilterConfig arg0) throws ServletException {// TODO Auto-generated method stub}}
2020-03-29
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)锣枝,“玉大人厢拭,你說(shuō)我怎么就攤上這事∑踩” “怎么了供鸠?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)陨闹。 經(jīng)常有香客問(wèn)我楞捂,道長(zhǎng),這世上最難降的妖魔是什么趋厉? 我笑而不...
- 正文 為了忘掉前任寨闹,我火速辦了婚禮,結(jié)果婚禮上君账,老公的妹妹穿的比我還像新娘繁堡。我一直安慰自己,他們只是感情好乡数,可當(dāng)我...
- 文/花漫 我一把揭開(kāi)白布椭蹄。 她就那樣靜靜地躺著,像睡著了一般净赴。 火紅的嫁衣襯著肌膚如雪绳矩。 梳的紋絲不亂的頭發(fā)上,一...
- 那天玖翅,我揣著相機(jī)與錄音翼馆,去河邊找鬼。 笑死金度,一個(gè)胖子當(dāng)著我的面吹牛应媚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播审姓,決...
- 文/蒼蘭香墨 我猛地睜開(kāi)眼珍特,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼祝峻!你這毒婦竟也來(lái)了魔吐?” 一聲冷哼從身側(cè)響起,我...
- 序言:老撾萬(wàn)榮一對(duì)情侶失蹤莱找,失蹤者是張志新(化名)和其女友劉穎酬姆,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體奥溺,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡辞色,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了浮定。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片相满。...
- 正文 年R本政府宣布建蹄,位于F島的核電站碌更,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏洞慎。R本人自食惡果不足惜痛单,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望劲腿。 院中可真熱鬧旭绒,春花似錦、人聲如沸焦人。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)垃瞧。三九已至蔫劣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間个从,已是汗流浹背脉幢。 一陣腳步聲響...
- 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像奕污,于是被迫代替她去往敵國(guó)和親萎羔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- 登錄碳默、字符集過(guò)濾器 package com.good.domain; public class User { ...
- 本文包括:1贾陷、Listener簡(jiǎn)介2、Servlet監(jiān)聽(tīng)器3嘱根、監(jiān)聽(tīng)三個(gè)域?qū)ο髣?chuàng)建和銷(xiāo)毀的事件監(jiān)聽(tīng)器4髓废、監(jiān)聽(tīng)三個(gè)域?qū)?..
- 監(jiān)聽(tīng)器的概述 1、什么是監(jiān)聽(tīng)器監(jiān)聽(tīng)器就是一個(gè)實(shí)現(xiàn)了特定接口的Java類(lèi)该抒,這個(gè)Java類(lèi)用于監(jiān)聽(tīng)另一個(gè)Java類(lèi)的方...
- 監(jiān)聽(tīng)器(listener) 監(jiān)聽(tīng)器簡(jiǎn)介 :監(jiān)聽(tīng)器就是一個(gè)實(shí)現(xiàn)特定接口的普通java程序慌洪,這個(gè)程序?qū)iT(mén)用于監(jiān)聽(tīng)另一個(gè)...