JavaWeb - jsp,el表達(dá)式唆迁,會(huì)話管理鸭丛,cookie,session技術(shù)唐责,session的創(chuàng)建和銷毀/清空購物車

轉(zhuǎn)載請(qǐng)注明出處:http://www.reibang.com/p/305b5f3bd35c

第一部分:jsp入門和el表達(dá)式入門

1鳞溉、jsp的入門

1.1 什么是jsp:
(1)sun公司用于動(dòng)態(tài)網(wǎng)站開發(fā)技術(shù) servlet ,因?yàn)槭褂胹ervlet如果向頁面輸出內(nèi)容很麻煩鼠哥,
有了jsp熟菲,使用jsp向頁面輸出內(nèi)容很方便,jsp就是servlet朴恳,最終會(huì)被編譯成servlet抄罕,放到tomcat的work目錄。

(2)jsp:java server pages于颖,java服務(wù)器端頁面呆贿,jsp會(huì)編譯成servlet,通過tomcat服務(wù)器進(jìn)行運(yùn)行森渐。

1.2 jsp在什么時(shí)候編譯成servlet:在訪問jsp時(shí)候會(huì)編譯成servlet

1.3 jsp的組成:html+java代碼+jsp自身的一些東西

1.4 jsp里面如何嵌入java代碼做入,有三種方式
第一種方式:<%!   %> : 在里面定義變量,這個(gè)變量是成員變量

第二種方式:<%=   %> :表示向頁面輸出內(nèi)容(固定值章母、變量)
    = 生成的servlet代碼會(huì)在service里面母蛛,out.print("hello" );
    = 后面不要加分號(hào);

第三種方式:<%    %> :編譯成servlet之后,代碼生成在service方法里面

1.5 在jsp中html代碼和java代碼混合使用
(1)在jsp中生成五行五列的表格
(2)基本實(shí)現(xiàn)的步驟
= 五行:循環(huán)五次乳怎,生成tr
= 五列:在每行里面循環(huán)五次,生成td
(3)代碼
    <table border="1" cellpadding="10">
    <%
    for(int i=1;i<=5;i++) {
    %>
        <tr>
        <%
        for(int j=1;j<=5;j++) {
        %>
            <td>aaa</td>
        <% 
        }
        %>
        </tr>
    <% 
    }
    %>
    </table>

2、el表達(dá)式的入門

2.1 作用:獲取域?qū)ο罄锩娴闹凋阶海荒苁褂迷趆tml中秫逝,使用在jsp中

2.2 寫法:${設(shè)置的名稱}

2.3 通過例子演示el表達(dá)式
(1)創(chuàng)建jsp頁面,在jsp中向兩個(gè)域?qū)ο罄锩嬖O(shè)置值(servletContext询枚、request)
(2)在jsp中首先使用傳統(tǒng)方式獲取域?qū)ο罄锩娴闹?(3)在jsp再使用el表達(dá)式獲取域?qū)ο罄锩娴闹?(4)代碼
    <!-- 向域?qū)ο罄锩嬖O(shè)置值  servletContext和request-->
    <%
    //向servletContext域里面設(shè)置值
    getServletContext().setAttribute("context", "contextvalue");
    //向request域里面設(shè)置值
    request.setAttribute("request", "requsetvalue");
     %>
     
    <!-- 使用傳統(tǒng)方式獲取域?qū)ο罄锩娴闹?-->
    <%=getServletContext().getAttribute("context") %>
    <%=request.getAttribute("request") %>
    
    <!-- 使用el表達(dá)式獲取域?qū)ο罄锩娴闹?-->
    <hr/>
    ${context }
    <br/>
    ${request }

2.4 其他的問題
(1)使用el表達(dá)式獲取的域?qū)ο竺Q不存在
= 如果使用傳統(tǒng)方式獲取域?qū)ο蟮闹挡淮嬖谖シ祷豱ull,容易造成空指針異常
= 使用el表達(dá)式獲取的域?qū)ο竺Q不存在金蜀,返回空字符串 ""刷后,不會(huì)造成空指針異常

(2)如果分別向多個(gè)域?qū)ο罄锩嬖O(shè)置值,名稱都相同
= 使用el表達(dá)式獲取的值是域范圍小的里面的值
= 分別獲取不同的域?qū)ο罄锩娴闹?    ${requestScope.msg }
    ${applicationScope.msg }
   
    (3) 域?qū)ο蠓秶判颍ㄓ纱蟮叫渊抄。?            servletContext   >   session   >   request   >page

第二部分:會(huì)話管理 cookie技術(shù)

1尝胆、會(huì)話管理的簡(jiǎn)介

1.1 什么是會(huì)話:打開瀏覽器,進(jìn)行網(wǎng)頁的瀏覽护桦,到關(guān)閉瀏覽器的過程含衔,稱為一次會(huì)話

1.2 會(huì)話技術(shù)用兩種技術(shù)
(1)cookie技術(shù):客戶端的技術(shù)
(2)session技術(shù):服務(wù)器端的技術(shù)

1.3 使用域?qū)ο笫欠癖4尜徫镄畔?(1)使用request域是否保存購物信息
= 因?yàn)閞equest域范圍是一次請(qǐng)求,所以最終結(jié)算時(shí)候在request域里面沒有任何購物信息

(2)使用servletContext域是否保存購物信息
= 因?yàn)槊總€(gè)項(xiàng)目有一個(gè)servletContext域?qū)ο蠖郑煌娜速徫锏纳唐范家娴竭@個(gè)域里面

1.4 使用cookie和session技術(shù)保存購物信息
(1)使用cookie保存購物信息
= 第一次購買鼠標(biāo)贪染,在服務(wù)器端得到鼠標(biāo),把鼠標(biāo)放到cookie里面催享,把cookie返回到瀏覽器中
= 第二次購物鍵盤杭隙,攜帶瀏覽器里面鼠標(biāo)發(fā)送請(qǐng)求,在服務(wù)器端分別得到購物的商品和攜帶商品因妙,把這兩個(gè)商品放到cookie里面寺渗,把cookie返回到瀏覽器中
=最終結(jié)算:攜帶瀏覽器中的商品發(fā)送請(qǐng)求,完成結(jié)算

(2)使用session保存購物信息
= 第一次購買百度兰迫,在服務(wù)器端得到百度信殊,開辟一個(gè)空間,把百度放到空間里面汁果,返回一把可以打開空間
的鑰匙涡拘,把這把鑰匙返回到瀏覽器中
= 第二次購買IBM,攜帶瀏覽器中的鑰匙發(fā)送請(qǐng)求据德,在服務(wù)器端得到購買的商品和攜帶鑰匙鳄乏,使用鑰匙打開空間,把購買的商品放到空間中棘利,返回一把新的鑰匙到瀏覽器中
= 最終結(jié)算:攜帶著瀏覽器中的鑰匙發(fā)送請(qǐng)求橱野,在服務(wù)器端獲取鑰匙,使用鑰匙打開空間善玫,把空間中的商品取出來水援,最終完成結(jié)算

2、練習(xí)一:使用cookie實(shí)現(xiàn)記錄用戶的上次訪問時(shí)間

2.1 需求的描述
(1)創(chuàng)建servlet,當(dāng)?shù)谝淮卧L問這個(gè)servlet時(shí)候蜗元,產(chǎn)生訪問時(shí)間或渤,向頁面輸出內(nèi)容
(2)當(dāng)?shù)诙卧L問這個(gè)servlet時(shí)候,有第一次時(shí)間奕扣,把第一次產(chǎn)生的時(shí)候顯示到頁面上薪鹦;
第二次訪問產(chǎn)生新的時(shí)間
(3)當(dāng)?shù)谌卧L問這個(gè)servlet時(shí)候,有第二次時(shí)間惯豆,把第二次時(shí)候顯示到頁面上池磁,
第三次訪問產(chǎn)生新的時(shí)間
.......

2.2 cookie的api
(1)Cookie[] getCookies() :得到所有的cookie
(2)addCookie(Cookie cookie) :把cookie返回到瀏覽器中(回寫)
(3)new Cookie(java.lang.String name, java.lang.String value) 
兩個(gè)參數(shù):第一個(gè)參數(shù)是cookie名稱,第二個(gè)參數(shù)是值
(4)getName() :得到cookie的名稱
(5)getValue() :得到cookie的值

2.3 實(shí)現(xiàn)步驟的分析
 * 1楷兽、判斷是否是第一次訪問
 *  獲取所有的cookie地熄,判斷cookie里面是否有名稱 lastVisit的cookie
 * 2、如果沒有有相同名稱的cookie拄养,是第一次訪問离斩,直接向頁面輸出內(nèi)容
 *      獲取第一次訪問的時(shí)間,把時(shí)間放到cookie里面瘪匿,把cookie回寫到瀏覽器
 * 3跛梗、如果不是第一次,獲取攜帶過來的時(shí)間棋弥,把這個(gè)時(shí)間顯示到頁面上
 *  獲取這次訪問產(chǎn)生的時(shí)間核偿,把時(shí)間放到cookie里面,把cookie回寫到瀏覽器

2.4 代碼實(shí)現(xiàn)練習(xí)
(1)代碼
    //獲取所用的cookie
    Cookie[] cookies = request.getCookies();
    //判斷是否有名稱是 lastVisit的cookie
    Cookie cookie = findCookie(cookies,"lastVisit");
    //如果是第一次
    if(cookie == null) {
        //向頁面輸出內(nèi)容
        response.getWriter().write("welcome");
    } else {//不是第一次
        //獲取攜帶過來的時(shí)間顽染,把這個(gè)時(shí)間顯示到頁面上
        String times = cookie.getValue();
        response.getWriter().write(times);
    }
    //得到產(chǎn)生的時(shí)間
    Date date = new Date();
    String times = date.toLocaleString();
    //把時(shí)間放到cookie里面
    Cookie c1 = new Cookie("lastVisit",times);
    //把cookie回寫到瀏覽器中
    response.addCookie(c1);

3漾岳、cookie的api使用

3.1 cookie的分類
(1)cookie分成兩類
第一類:會(huì)話級(jí)別的cookie,在關(guān)閉瀏覽器之后粉寞,cookie銷毀了尼荆,在默認(rèn)的情況下是會(huì)話級(jí)別的cookie

第二類:持久化的cookie,在一定的時(shí)間范圍內(nèi)唧垦,cookie一致有效捅儒。
= 設(shè)置成持久化的cookie,使用setMaxAge(int expiry) :參數(shù)是秒

3.2 常用的方法
(1)Cookie[] getCookies() :得到所有的cookie
(2)addCookie(Cookie cookie) :把cookie返回到瀏覽器中(回寫)
(3)new Cookie(java.lang.String name, java.lang.String value) 
兩個(gè)參數(shù):第一個(gè)參數(shù)是cookie名稱巧还,第二個(gè)參數(shù)是值
(4)getName() :得到cookie的名稱
(5)getValue() :得到cookie的值

(6)setMaxAge(int expiry) :設(shè)置cookie的有效時(shí)長
(7)setPath(java.lang.String uri) :設(shè)置cookie的有效路徑
= 比如通過setPath方法設(shè)置了一個(gè)路徑,在瀏覽器的地址欄輸入一個(gè)地址坊秸,如果這個(gè)地址包含設(shè)置的路徑麸祷,
才會(huì)攜帶cookie信息過來
= 舉例
setPath("/aaa")
訪問路徑: http://127.0.0.1/aaa/demo1 ,會(huì)攜帶cookie信息
訪問路徑: http://127.0.0.1/aaa/demo2 , 不會(huì)攜帶cookie信息
setPath("/")

3.3 使用注意事項(xiàng)
= cookie大小有限制
= 創(chuàng)建cookie時(shí)候至少兩部分內(nèi)容褒搔,一個(gè)name阶牍,一個(gè)value
= 在默認(rèn)的情況下喷面,cookie是一個(gè)會(huì)話級(jí)別cookie

3.4 銷毀持久化的cookie
第一步:創(chuàng)建一個(gè)和要銷毀cookie項(xiàng)目名稱的cookie  new Cookie("name","");
第二步:設(shè)置cookie有效時(shí)長 setMaxAge(0)
第三步:設(shè)置有效路徑 ,要和銷毀的cookie的路徑一致 setPath("/")
第四步:把cookie回寫到瀏覽器中

4荸恕、練習(xí)二:使用cookie記錄用戶瀏覽的商品

4.1 準(zhǔn)備工作
(1)創(chuàng)建商品列表頁面

4.2 基本步驟
(1)使用超鏈接提交不同的商品乖酬,每個(gè)商品是id值區(qū)分
(2)在servlet中得到點(diǎn)擊商品的id值死相,把id值放到cookie里面融求,再把cookie回寫瀏覽器中
(3)如果第一次訪問商品id=1.把1放到cookie里面,返回到瀏覽器中
第二次訪問攜帶id=1的值進(jìn)行訪問算撮,在服務(wù)器端得到當(dāng)前瀏覽商品id和攜帶的id值生宛,把這兩個(gè)id值放到cookie里面,
返回到瀏覽器中肮柜。

4.3 代碼實(shí)現(xiàn)
(1)實(shí)現(xiàn)的步驟
 * 1陷舅、判斷是否是第一次瀏覽
 *  * 得到所有的cookie,判斷cookie里面是否有名稱是his的cookie审洞,如果有不是第一次
 * 2莱睁、如果是第一次,得到id值芒澜,把值放到cookie里面仰剿,把cookie返回到瀏覽器
 * 3、如果不是第一次痴晦,得到當(dāng)前商品的id南吮,得到前一次回寫到瀏覽器的id值,在前一次的基礎(chǔ)之上追加新的id值
 *  * 比如值 1,2誊酌,追加值 1,2,3
 *  * 判斷當(dāng)前瀏覽的商品部凑,在cookie里面是否存在相同的商品的id,如果存在碧浊,不進(jìn)行追加的操作
 *  * 把值放到cookie里面涂邀,把cookie返回到瀏覽器

4.4 在servlet中完成把瀏覽記錄存到cookie
(1)代碼
    if(cookie == null) {
        //放到cookie
        Cookie c1 = new Cookie("his",id);
        //持久化的cookie
        c1.setMaxAge(3600);
        c1.setPath("/");
        //回寫到瀏覽器
        response.addCookie(c1);
    } else {//不是第一次
        //得到cookie的值     1,2,3
        String values = cookie.getValue();
        //分割字符串
        String[] ids = values.split(",");
        //比較當(dāng)前瀏覽商品的id,和數(shù)組里面的id值
        boolean flag = checkIds(ids,id);
        //如果沒有相同的id箱锐,才進(jìn)行操作
        if(!flag) {
            //在前一次的基礎(chǔ)之上追加新的id值
            String newValue = values+","+id;
            Cookie c2 = new Cookie("his",newValue);
            //持久化的cookie
            c2.setMaxAge(3600);
            c2.setPath("/");
            //回寫到瀏覽器
            response.addCookie(c2);
        }
    }

4.6 在jsp中顯示瀏覽商品的圖片和名稱
(1)代碼
    <%
    Cookie[] cookies = request.getCookies();
    Cookie cookie = MyCookieUtils.findByCookie(cookies, "his");
    if(cookie == null) {
    %>
    <h2>沒有任何的瀏覽記錄</h2>
    <%      
    } else { 
        //獲取商品的id值  1,2,3
        String values = cookie.getValue();
        //顯示商品的圖片和商品的名稱
        String[] names = {"手電筒","手機(jī)","電視","冰箱"};
        //得到id對(duì)應(yīng)的商品的名稱
        String[] ids = values.split(",");
        for(String id1:ids) {
            String name = names[Integer.parseInt(id1)-1];
    %>
    <img src="/aaa/img/<%=id1 %>.jpg"/> <%=name %>
    <% 

        }
    }
    %>

4.7 實(shí)現(xiàn)清空瀏覽記錄
(1)銷毀持久化的cookie操作
(2)步驟
 * 1比勉、創(chuàng)建一個(gè)和要銷毀cookie相同名稱的cookie
 * 2、設(shè)置cookie的有效時(shí)長是 0
 * 3瑞躺、設(shè)置路徑一致的
 * 4敷搪、把cookie回寫到瀏覽器
(3)代碼
    //創(chuàng)建一個(gè)和要銷毀cookie相同名稱的cookie 名稱 his
    Cookie cookie = new Cookie("his","");
    //設(shè)置有效時(shí)長 0
    cookie.setMaxAge(0);
    //設(shè)置路徑一致的
    cookie.setPath("/");
    //把cookie回寫到瀏覽器
    response.addCookie(cookie);

第三部分:會(huì)話管理 session技術(shù)

1、session的簡(jiǎn)介

1.1 session是服務(wù)器端的技術(shù)

1.2 創(chuàng)建session:使用request里面getSession()創(chuàng)建session對(duì)象幢哨,名稱:HttpSession 

1.3 在WEB開發(fā)中赡勘,服務(wù)器可以為每個(gè)用戶瀏覽器創(chuàng)建一個(gè)會(huì)話對(duì)象(session對(duì)象),
注意:一個(gè)瀏覽器獨(dú)占一個(gè)session對(duì)象(默認(rèn)情況下)
(1)演示一個(gè)瀏覽器獨(dú)占一個(gè)session對(duì)象
= 創(chuàng)建servlet1捞镰,創(chuàng)建session對(duì)象闸与,輸出session的id值毙替,向頁面輸出超鏈接,到servlet2里面
= 創(chuàng)建servlet2践樱,創(chuàng)建session對(duì)象厂画,輸出session的id值

1.4 session域?qū)ο?(1)servletContext域?qū)ο蠛蛂equest域?qū)ο?(2)域?qū)ο螅涸谝欢ǖ姆秶鷥?nèi),存值和取值
(3)session域?qū)ο罂叫希秶且淮螘?huì)話袱院,存值和取值
(4)存值的方法:setAttribute(java.lang.String name, java.lang.Object value) 
     取值的方法:getAttribute(java.lang.String name) 

     1.5 session中的key稱為jsessionid

2、練習(xí):使用session實(shí)現(xiàn)簡(jiǎn)單的購物車

2.1 功能描述
(1)創(chuàng)建商品列表頁面瞭稼,點(diǎn)擊一個(gè)商品時(shí)候忽洛,把這個(gè)商品加入到購物車?yán)锩妫?(2)如果重復(fù)點(diǎn)擊一個(gè)商品,做數(shù)量上的增加
(3)在結(jié)算頁面中顯示商品名稱和數(shù)量

2.2 實(shí)現(xiàn)的步驟
第一步:判斷是否是第一次加入到購物車
    = 判斷session里面是否有名稱是 cart的值

第二步:如果是第一次加入到購物車环肘,
    = 得到商品id欲虚,根據(jù)id得到名稱,把名稱和數(shù)量1加入到購物車

第三步:如果不是第一次加入到購物車悔雹,
    = 判斷當(dāng)前要加入到購物車的商品在購物車?yán)锩媸欠翊嬖诟炊撸绻呀?jīng)存在,
    獲取出商品數(shù)量腌零,+1梯找,放回購物車?yán)锩?    如果不存在,直接把商品名稱和數(shù)量1加入到購物車

第四步:把購物車放到session里面

2.3 代碼實(shí)現(xiàn)
(1)實(shí)現(xiàn)把商品放到購物車
    //得到商品的id
    String id = request.getParameter("id");
    //根據(jù)id得到商品的名稱
    String[] names = {"手電筒","手機(jī)","電視","冰箱"};
    String name = names[Integer.parseInt(id)-1];        
    //判斷是否是第一次加入到購物車
    Map<String,Integer> map = (Map<String, Integer>) request.getSession().getAttribute("cart");
    //如果是第一次
    if(map == null) {
        //創(chuàng)建購物車
        map = new HashMap<String,Integer>();
        //把商品名稱和數(shù)量1 放到購物車
        map.put(name, 1);
    } else {//不是第一次
        //判斷當(dāng)前加入到購物車的商品莱没,在購物車?yán)锩媸欠翊嬖?        if(map.containsKey(name)) {//有相同名稱的商品
            //獲取商品的數(shù)量
            int num = map.get(name);
            //把數(shù)量+1初肉,放回map里面
            map.put(name, num+1);
        } else { //沒有相同名稱的商品
            //直接把名稱和數(shù)量1放到購物車
            map.put(name, 1);
        }
    }
    //把購物車放到session里面
    request.getSession().setAttribute("cart", map);

(2)在購物車頁面里面顯示商品的信息
    <%
    //判斷session里面是否有信息
    Map<String,Integer> map = (Map<String, Integer>) request.getSession().getAttribute("cart");
    if(map == null) {
    %>
    <h2>沒有任何的購物信息</h2>
    <%  
    } else {
        //從map里面獲取商品的信息
        //遍歷map集合
        Set<String> set = map.keySet();
        //遍歷set,得到每個(gè)商品的名稱饰躲,根據(jù)名稱得到數(shù)量
        for(String name : set) {
            int num = map.get(name);
    %>
    名稱:<%=name %>牙咏,數(shù)量: <%=num %> <br/>
    <% 
        }
    }       
     %>

3、session的創(chuàng)建和銷毀(清空購物車)

3.1 session的創(chuàng)建
(1)使用request里面方法 getSession()可以創(chuàng)建session對(duì)象嘹裂,名稱是HttpSession 

3.2 session的銷毀
有三種方式
(1)非正常關(guān)閉服務(wù)器

(2)session默認(rèn)的過期時(shí)間
    <session-config>
    <session-timeout>30</session-timeout>
    </session-config>

(3)調(diào)用session里面方法 invalidate() 

3.3 代碼
    //創(chuàng)建session
    HttpSession session = request.getSession();
    //調(diào)用銷毀
    session.invalidate();
    //回到頁面
    response.sendRedirect("/aaa/cart.jsp");

4妄壶、練習(xí):使用session實(shí)現(xiàn)驗(yàn)證碼的校驗(yàn)

4.1 實(shí)現(xiàn)的步驟
(1)獲取輸入的驗(yàn)證碼值
(2)把圖片上面的值放到session里面
(3)把輸入的值和session里面的值進(jìn)行比較,如果相同校驗(yàn)成功寄狼,否則校驗(yàn)失敗

4.2 代碼
    //獲取輸入的驗(yàn)證碼的值
    request.setCharacterEncoding("utf-8");
    String codeInput = request.getParameter("code");
    //獲取session里面的驗(yàn)證碼的值
    String codeSession = (String) request.getSession().getAttribute("code");
    //進(jìn)行比較
    if(codeInput.equals(codeSession)) {//相同
        response.getWriter().write("success");
    } else {
        //失敗丁寄,回到登錄頁面,同時(shí)攜帶錯(cuò)誤信息
        request.setAttribute("msg", "驗(yàn)證碼校驗(yàn)失敗");
        request.getRequestDispatcher("/login.jsp").forward(request, response);
    }

5泊愧、禁用cookie之后session追蹤

5.1 session執(zhí)行的過程
(1)在服務(wù)器端開辟空間伊磺,把值放到空間里面,返回一把可以打開空間的鑰匙到瀏覽器中
(2)把鑰匙返回到瀏覽器過程:使用cookie實(shí)現(xiàn)

5.2 如果關(guān)閉瀏覽器之后删咱,session是否可以銷毀
(1)關(guān)閉瀏覽器之后屑埋,不會(huì)銷毀session
(2)session基于cookie實(shí)現(xiàn),向?yàn)g覽器回寫鑰匙通過cookie實(shí)現(xiàn)痰滋,在默認(rèn)情況下cookie會(huì)話級(jí)別的cookie摘能,
當(dāng)關(guān)閉瀏覽器之后续崖,cookie就銷毀了,相當(dāng)于鑰匙找不到了团搞,得不到session里面的值

5.3 禁用cookie之后session使用
(1)創(chuàng)建servlet1严望,在servlet1里面創(chuàng)建session對(duì)象,輸出session的id值逻恐,向頁面輸出超鏈接到servlet2
(2)創(chuàng)建servlet2像吻,在servlet2里面創(chuàng)建session對(duì)象,輸出session的id值
(3)返回到瀏覽器的鑰匙:JSESSIONID=79D6C94EE9A1E9DC3C0F947873624592
在請(qǐng)求的路徑后面添加 ;jsessionid=id值
http://127.0.0.1:8080/aaa/servlet2;jsessionid=EF6A428F1D282BFAADA7FF482EDD5E60

5.4 兩個(gè)方法實(shí)現(xiàn)禁用cookie之后session使用
    response.encodeRedirectUrl(url);
    response.encodeURL(url);

5.5 禁用cookie之后使用session梢莽,網(wǎng)站中所有的路徑都需要拼接地址
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末萧豆,一起剝皮案震驚了整個(gè)濱河市奸披,隨后出現(xiàn)的幾起案子昏名,更是在濱河造成了極大的恐慌,老刑警劉巖阵面,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件轻局,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡样刷,警方通過查閱死者的電腦和手機(jī)仑扑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來置鼻,“玉大人镇饮,你說我怎么就攤上這事』福” “怎么了储藐?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長嘶是。 經(jīng)常有香客問我钙勃,道長,這世上最難降的妖魔是什么聂喇? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任辖源,我火速辦了婚禮,結(jié)果婚禮上希太,老公的妹妹穿的比我還像新娘克饶。我一直安慰自己,他們只是感情好誊辉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布矾湃。 她就那樣靜靜地躺著,像睡著了一般芥映。 火紅的嫁衣襯著肌膚如雪洲尊。 梳的紋絲不亂的頭發(fā)上远豺,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音坞嘀,去河邊找鬼躯护。 笑死,一個(gè)胖子當(dāng)著我的面吹牛丽涩,可吹牛的內(nèi)容都是我干的棺滞。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼矢渊,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼继准!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起矮男,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤移必,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后毡鉴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體崔泵,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年猪瞬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了憎瘸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡陈瘦,死狀恐怖幌甘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情痊项,我是刑警寧澤锅风,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站线婚,受9級(jí)特大地震影響遏弱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜塞弊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一漱逸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧游沿,春花似錦饰抒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至眯勾,卻和暖如春枣宫,著一層夾襖步出監(jiān)牢的瞬間婆誓,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國打工也颤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留洋幻,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓翅娶,卻偏偏與公主長得像文留,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子竭沫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355