2020-03-30

監(jiān)聽器的概述

1馅而、什么是監(jiān)聽器監(jiān)聽器就是一個(gè)實(shí)現(xiàn)了特定接口的Java類瓜晤,這個(gè)Java類用于監(jiān)聽另一個(gè)Java類的方法調(diào)用,或者屬性的改變饼煞。當(dāng)被監(jiān)聽對(duì)象發(fā)生上述事件后源葫,監(jiān)聽器某個(gè)方法將會(huì)立即被執(zhí)行

2、監(jiān)聽器的用途用來(lái)監(jiān)聽其他對(duì)象的變化的砖瞧,主要應(yīng)用在圖形化界面的開發(fā)上例如Java中的GUI息堂、Android等,都有大量的監(jiān)聽器的使用

3块促、監(jiān)聽器的術(shù)語(yǔ)事件源:指的是被監(jiān)聽對(duì)象(汽車)監(jiān)聽器:指的是監(jiān)聽的對(duì)象(報(bào)警器)事件源和監(jiān)聽器綁定:在汽車上安裝報(bào)警器事件:指的是事件源對(duì)象的改變(踹了汽車一腳)储矩,主要功能是獲得事件源對(duì)象

(二)監(jiān)聽器的入門

1、監(jiān)聽器的入門程序

2褂乍、監(jiān)聽器的執(zhí)行過(guò)程

(三)Servlet中的監(jiān)聽器

一、Servlet中的監(jiān)聽器簡(jiǎn)介在Servlet中定義了多種類型的監(jiān)聽器即硼,它們用于監(jiān)聽的事件源分別是ServletContext逃片、HttpSession和ServletRequest這三個(gè)域?qū)ο?br>

二、Servlet中的監(jiān)聽器的分類

1只酥、一類:監(jiān)聽三個(gè)域?qū)ο蟮膭?chuàng)建和銷毀的監(jiān)聽器(三個(gè))

2褥实、二類:監(jiān)聽三個(gè)域?qū)ο蟮膶傩宰兏▽傩蕴砑印⒁瞥言省⑻鎿Q)的監(jiān)聽器(三個(gè))

3损离、三類:監(jiān)聽HttpSession中JavaBean的狀態(tài)改變(鈍化、活化绝编、綁定僻澎、解除綁定)的監(jiān)聽(兩個(gè))

(四)ServletContextListener監(jiān)聽器的使用

一、ServletContextListener監(jiān)聽器的作用用來(lái)監(jiān)聽ServletContext域?qū)ο蟮膭?chuàng)建和銷毀的監(jiān)聽器

二十饥、ServletContext創(chuàng)建和銷毀

1窟勃、創(chuàng)建:在服務(wù)器啟動(dòng)的時(shí)候,為每個(gè)Web應(yīng)用創(chuàng)建單獨(dú)的ServletContext對(duì)象

2逗堵、銷毀:在服務(wù)器關(guān)閉的時(shí)候秉氧,或者項(xiàng)目從Web服務(wù)器中移除的時(shí)候

三、ServletContextListener監(jiān)聽器的方法

1蜒秤、監(jiān)聽ServletContext對(duì)象的創(chuàng)建contextInitialized(ServletContextEvent sce)

2

汁咏、監(jiān)聽ServletContext對(duì)象的銷毀ontextDestroyed(ServletContextEvent sce)

四亚斋、編寫監(jiān)聽器

1、監(jiān)聽器的代碼

2攘滩、監(jiān)聽器的配置

五帅刊、ServletContextListener的企業(yè)用途

1、加載框架的配置文件Spring框架提供了一個(gè)核心監(jiān)聽器叫ContextLoaderListener

2轰驳、定時(shí)任務(wù)調(diào)度

(五)HttpSessionListener監(jiān)聽器的使用

一厚掷、HttpSessionListener監(jiān)聽器作用用來(lái)監(jiān)聽HttpSession對(duì)象的創(chuàng)建和銷毀

二、HttpSession創(chuàng)建和銷毀創(chuàng)建:服務(wù)器端第一次調(diào)用getSession()方法的時(shí)候銷毀:非正常關(guān)閉服務(wù)器(正常關(guān)閉服務(wù)器Session會(huì)被序列化)Session過(guò)期(默認(rèn)過(guò)期時(shí)間30分鐘)手動(dòng)調(diào)用session.invalidate()方法

三级解、HttpSessionListener監(jiān)聽器的方法

1冒黑、監(jiān)聽HttpSession對(duì)象創(chuàng)建sessionCreated(HttpSessionEvent se)

2、監(jiān)聽HttpSession對(duì)象銷毀sessionDestroyed(HttpSessionEvent se)

四勤哗、編寫監(jiān)聽器監(jiān)聽HttpSession對(duì)象創(chuàng)建和銷毀

1抡爹、監(jiān)聽器的代碼

2、監(jiān)聽器的配置

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)聽器的使用

一秀又、ServletRequestListener監(jiān)聽器的作用用于監(jiān)聽ServletRequest對(duì)象的創(chuàng)建和銷毀

二、ServletRequest對(duì)象的創(chuàng)建和銷毀創(chuàng)建:從客戶端向服務(wù)器發(fā)送一次請(qǐng)求拼苍,服務(wù)器就會(huì)創(chuàng)建Request對(duì)象銷毀:服務(wù)器對(duì)這次請(qǐng)求作出了響應(yīng)之后笑诅,

Request對(duì)象就銷毀了

三、ServletRequestListener監(jiān)聽器的方法

1疮鲫、監(jiān)聽ServletRequest對(duì)象的創(chuàng)建requestInitialized(ServletRequestEvent sre)

2吆你、監(jiān)聽ServletRequest對(duì)象的銷毀requestDestroyed(ServletRequestEvent sre)

四、編寫監(jiān)聽器代碼

1俊犯、監(jiān)聽器代碼在服務(wù)器啟動(dòng)的時(shí)候需要有一個(gè)初始值為零妇多。當(dāng)瀏覽器訪問(wèn)服務(wù)器上的某個(gè)JSP了,就會(huì)創(chuàng)建Session燕侠,此時(shí)獲取初始值者祖,進(jìn)行+1操作。如果Session銷毀了绢彤,獲取該值進(jìn)行-1操作

二咸包、代碼實(shí)現(xiàn)

1、創(chuàng)建ServletContextListener進(jìn)行初始化

2杖虾、創(chuàng)建HttpSessionListener

3烂瘫、配置監(jiān)聽器

4、創(chuàng)建JSP頁(yè)面八)監(jiān)聽三個(gè)域?qū)ο蟮膶傩宰兏谋O(jiān)聽器一、三類監(jiān)聽器

1坟比、ServletContextAttributeListener監(jiān)聽ServletContext對(duì)象中的屬性變更(屬性添加芦鳍、移除、替換)的監(jiān)聽器attributeAdded(ServletContextAttributeEvent event)attributeRemoved(ServletContextAttributeEvent event)attributeReplaced(ServletContextAttributeEvent event)

2葛账、HttpSessionAttributeListener監(jiān)聽HttpSession對(duì)象中的屬性變更(屬性添加柠衅、移除、替換)的監(jiān)聽器attributeAdded(HttpSessionBindingEvent event)attributeRemoved(HttpSessionBindingEvent event)attributeReplaced(HttpSessionBindingEvent event)

3籍琳、ServletRequestAttributeListener監(jiān)聽ServletRequest對(duì)象中的屬性變更(屬性添加菲宴、移除、替換)的監(jiān)聽器attributeAdded(ServletRequestAttributeEvent srae)attributeRemoved(ServletRequestAttributeEvent srae)attributeReplaced(ServletRequestAttributeEvent srae)

二趋急、演示第二類監(jiān)聽器

1喝峦、演示HttpSessionAttributeListener

2、配置監(jiān)聽器

3呜达、編寫測(cè)試的JSP

(九)監(jiān)聽HttpSession中Java類狀態(tài)改變的監(jiān)聽器

一谣蠢、第三類監(jiān)聽器概述

1、保存在Session域中的Java類可以有多種狀態(tài):綁定到Session中查近、從Session中解除綁定眉踱、隨Session對(duì)象持久化到一個(gè)存儲(chǔ)設(shè)備中(鈍化)、隨Session對(duì)象從一個(gè)存儲(chǔ)設(shè)備中恢復(fù)(活化)

2霜威、Servlet規(guī)范中中定義了兩個(gè)特殊的監(jiān)聽的接口谈喳,來(lái)幫助Java類了解自己在Session域中的狀態(tài),分別是:HttpSessionBindingListener接口HttpSessionActivationListener接口實(shí)現(xiàn)了這兩個(gè)接口的類戈泼,是不需要在web.xml中進(jìn)行配置的

二叁执、HttpSessionBindingListener監(jiān)聽器

1、監(jiān)聽Java類在HttpSession中的綁定和解除綁定的狀態(tài)的監(jiān)聽器valueBound(HttpSessionBindingEvent event)valueUnbound(HttpSessionBindingEvent event)

2矮冬、測(cè)試代碼

三、HttpSessionActivationListener監(jiān)聽器

1次哈、監(jiān)聽HttpSession中Java類的鈍化和活化的監(jiān)聽器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稱為過(guò)濾器,它是Servlet技術(shù)中最實(shí)用的技術(shù)哀卫,Web開發(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的入門

1暂题、第一步:編寫一個(gè)類實(shí)現(xiàn)Filter接口

2、第二步:對(duì)過(guò)濾器進(jìn)行配置

三究珊、FilterC hain對(duì)象的概述

1薪者、什么是FilterC hainFilterC hain過(guò)濾器鏈:在一個(gè)Web應(yīng)用中,可以開發(fā)編寫多個(gè)Filter剿涮,這些Filter組合起來(lái)稱為是一個(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)建和銷毀是由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ì)銷毀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 >的配置完全路徑匹配:以/開始掂林,例如/aaa/aaa/bbb目錄匹配:以/開始臣缀,例如/*/aaa/*/aaa/bbb/*擴(kuò)展名匹配:不能以/開始,以*開始泻帮,例如*.jsp *.do*.action

2精置、<servlet -name>的配置專門以Servlet的配置的名稱攔截Servlet

3、<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è)面地址編寫一過(guò)濾器,可以對(duì)沒(méi)有登錄的用戶進(jìn)行攔截(沒(méi)有登錄,回到登錄頁(yè)面布隔;如果已經(jīng)登錄离陶,放行)二、案例登錄功能

1衅檀、創(chuàng)建表(MySQL執(zhí)行如下語(yǔ)句)create databaseweb05charset utf8;use web0

5;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è)類的方法

1藕咏、通過(guò)上面的分析,現(xiàn)在要增強(qiáng)request的getParameter方法秽五,增強(qiáng)的過(guò)程要寫在過(guò)濾器當(dāng)中

(1)如何增強(qiáng)一個(gè)類中的方法孽查?

1)繼承必須要能夠控制這個(gè)類的構(gòu)造

2)裝飾者被增強(qiáng)的類和增強(qiáng)的類需要實(shí)現(xiàn)相同的接口在增強(qiáng)的類中獲得被增強(qiáng)的類的引用缺點(diǎn):接口中的方法過(guò)多,會(huì)導(dǎo)致要重寫很多其他的方法

3)動(dòng)態(tài)代理類需要實(shí)現(xiàn)接口

三坦喘、通用的字符集編碼過(guò)濾器的代碼實(shí)現(xiàn)

1盲再、過(guò)濾器的代碼

2、增強(qiáng)類的代碼

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方式接收的名稱:" + name);

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String name = request.getParameter("name");

System.out.println("POST方式接收的名稱:" + 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;

}

? @Override

public 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{

@Override

public void destroy() {

// TODO Auto-generated method stub

}

@Override

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)

throws IOException, ServletException {

HttpServletRequest req = (HttpServletRequest) request;

? ? MyHttpServletRequest myReq = new MyHttpServletRequest(req);

? ? chain.doFilter(myReq, response);

}

@Override

public 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{

@Override

public void destroy() {

// TODO Auto-generated method stub

}

@Override

public 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);

? }

}

@Override

public void init(FilterConfig arg0) throws ServletException {

// TODO Auto-generated method stub

}

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末棠笑,一起剝皮案震驚了整個(gè)濱河市梦碗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌腐晾,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丐一,死亡現(xiàn)場(chǎng)離奇詭異藻糖,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)库车,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門巨柒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事洋满【牵” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵牺勾,是天一觀的道長(zhǎng)正罢。 經(jīng)常有香客問(wèn)我,道長(zhǎng)驻民,這世上最難降的妖魔是什么翻具? 我笑而不...
    開封第一講書人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮回还,結(jié)果婚禮上裆泳,老公的妹妹穿的比我還像新娘。我一直安慰自己柠硕,他們只是感情好工禾,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蝗柔,像睡著了一般闻葵。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上诫咱,一...
    開封第一講書人閱讀 51,190評(píng)論 1 299
  • 那天笙隙,我揣著相機(jī)與錄音,去河邊找鬼坎缭。 笑死竟痰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的掏呼。 我是一名探鬼主播坏快,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼憎夷!你這毒婦竟也來(lái)了莽鸿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤拾给,失蹤者是張志新(化名)和其女友劉穎祥得,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蒋得,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡级及,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了额衙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片饮焦。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡怕吴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出县踢,到底是詐尸還是另有隱情转绷,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布硼啤,位于F島的核電站议经,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏丙曙。R本人自食惡果不足惜爸业,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望亏镰。 院中可真熱鬧扯旷,春花似錦、人聲如沸索抓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)逼肯。三九已至耸黑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間篮幢,已是汗流浹背大刊。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留三椿,地道東北人缺菌。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像搜锰,于是被迫代替她去往敵國(guó)和親伴郁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 本文包括:1蛋叼、Listener簡(jiǎn)介2焊傅、Servlet監(jiān)聽器3、監(jiān)聽三個(gè)域?qū)ο髣?chuàng)建和銷毀的事件監(jiān)聽器4狈涮、監(jiān)聽三個(gè)域?qū)?..
    廖少少閱讀 6,066評(píng)論 6 28
  • 監(jiān)聽器(listener) 監(jiān)聽器簡(jiǎn)介 :監(jiān)聽器就是一個(gè)實(shí)現(xiàn)特定接口的普通java程序狐胎,這個(gè)程序?qū)iT用于監(jiān)聽另一個(gè)...
    奮斗的老王閱讀 2,507評(píng)論 0 53
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,810評(píng)論 0 11
  • 登錄、字符集過(guò)濾器 package com.good.domain; public class User { ...
    卡拉什尼科夫_8ca2閱讀 132評(píng)論 0 0
  • 小編費(fèi)力收集:給你想要的面試集合 1.C++或Java中的異常處理機(jī)制的簡(jiǎn)單原理和應(yīng)用歌馍。 當(dāng)JAVA程序違反了JA...
    八爺君閱讀 4,587評(píng)論 1 114