JSP/Servlet基礎(chǔ)

JSP/Servlet基礎(chǔ)

許多同學(xué)學(xué)習(xí)框架的時(shí)候,往往會忽視這部分內(nèi)容,有的甚至沒學(xué)JSP直接學(xué)習(xí)了框架,導(dǎo)致基礎(chǔ)知識不扎實(shí)翘瓮,只是會用框架,最后連JSP一共有幾個(gè)內(nèi)置對象都不知道裤翩。自己當(dāng)時(shí)學(xué)的時(shí)候也沒怎么學(xué)這部分知識资盅,就開始學(xué)Struts了,也是最近幾天又認(rèn)真地把這部分知識看了一遍踊赠。

JSP和Servlet呵扛,區(qū)別上一個(gè)是Servlet沒有內(nèi)置對象,還有就是JSP可以在HTML中嵌入Java代碼筐带。而實(shí)際上今穿,我們都知道,JSP最后也會被翻譯為Servlet.所以廣義的Servlet也可以指JSP+Servlet. 而JSP中的7個(gè)動作指令伦籍,9種內(nèi)置對象蓝晒,還有EL表達(dá)式,以及EL表達(dá)式的11個(gè)內(nèi)置對象帖鸦。都是我們必須要掌握的芝薇。

1.關(guān)于Cookie

Cookie用于網(wǎng)站記錄用戶的某些信息,它和session的區(qū)別在于:session是存放在服務(wù)器中作儿,超出服務(wù)器設(shè)置的失效時(shí)間就會失效洛二,而Cookie會一直存放在客戶端機(jī)器上,除非超出Cookie的生命期限攻锰。增加Cookie也是使用response內(nèi)置對象完成的晾嘶。事實(shí)上,用來實(shí)現(xiàn)session的sessionId也是存放在Cookie上娶吞,如果瀏覽器禁用了Cookie垒迂,同樣session也會失效。

(1)jQuery中操作Cookie

jQuery中操作Cookie非常簡單妒蛇,要先下載jQuery的Cookie插件jquery.cookie.js.

增加Cookie:$.cookie("c1","zhazha");將值"zhzha"寫入cookie名為c1的cookie中娇斑。

$.cookie后面還有其他參數(shù)策添,用來設(shè)置有效期,路徑等毫缆。

例如:$.cookie("c1","zhazha",{path: "/", expiress: 7});創(chuàng)建一個(gè)有效期為7天,路徑與創(chuàng)建頁路徑一致的cookie.

刪除Cookie:$.cookie("c1",NULL);銷毀名稱為c1的cookie.

得到Cookie:$.cookie("c1");得到cookie名為c1的cookie的value值乐导。

注:對于Chrome苦丁,使用本地測試時(shí),cookie是基于域名來儲存的物臂。要放到測試服務(wù)器上或者本地localhost服務(wù)器上才會生效旺拉。cookie具有不同域名下儲存不可共享的特性。單純的本地一個(gè)html頁面打開獲取cookie是無效的棵磷《旯罚可以使用IE瀏覽器或者火狐瀏覽器。

(2)利用response增加仪媒,刪除Cookie

Cookie c=new Cookie("username","name");

c.setMaxAge(24 * 3600);//設(shè)置生存期為24小時(shí)

response.addCookie(c);//增加Cookie

c.setMaxAge(0);//刪除Cookie

Struts

Struts是Web框架沉桌,學(xué)習(xí)Struts首先要理解MVC思想,即Model(模型)算吩、View(視圖)和Controller(控制器)留凭。學(xué)習(xí)Struts時(shí)間最長,也是在spring mvc之前用得最多的偎巢。Struts 2框架本身大致可以分為3個(gè)部分:核心控制器FilterDispatcher蔼夜、業(yè)務(wù)控制器Action和用戶實(shí)現(xiàn)的企業(yè)業(yè)務(wù)邏輯組件。三個(gè)組件相互配合压昼,完成各個(gè)邏輯功能求冷。

1.Struts的MVC結(jié)構(gòu)

剛想學(xué)習(xí)Struts的時(shí)候,常常有人要把之前用的三層結(jié)構(gòu)和MVC對應(yīng)起來窍霞。其實(shí)沒有必要匠题,之前的三層架構(gòu)和MVC結(jié)構(gòu)還是有區(qū)別的。那么Struts的MVC分別指什么呢官撼。

Model模型:這里的Model不只指我們項(xiàng)目Model層里的POJO對象梧躺。還包括Action對象,以及action調(diào)用的業(yè)務(wù)邏輯組件傲绣。

View視圖:顯然掠哥,視圖就是指我們的JSP頁面,以及Struts提供的標(biāo)簽庫能夠與我們的ActionFrom(包括request秃诵,session)進(jìn)行交互续搀。

Controller控制器:控制其主要就是指Struts的ActionServlet和ActionMapping,也就是我們配置的struts.xml.

2.ValueStack和StackContext

學(xué)習(xí)OGNL的時(shí)候菠净,對這兩個(gè)概念經(jīng)常搞不清禁舷,總?cè)菀谆煜?/p>

ValueStack 稱之為值棧彪杉,可以理解為StackContext的根對象,在Action里牵咙,要有set和get方法派近。在使用OGNL時(shí),若訪問的屬性屬于根對象洁桌,可以直接訪問該屬性渴丸,不用加'#'.

StackContext 叫做Stack的上下文,是整個(gè)OGNL的計(jì)算和求值的Context. 除了包含ValueStack這個(gè)根對象外另凌,還包含一系列對象谱轨,包括request/session/application等。而訪問這些命名對象時(shí)吠谢,要加'#'.

3.jstl和struts標(biāo)簽庫

一直糾結(jié)這兩個(gè)到底哪個(gè)好用土童,當(dāng)然struts標(biāo)簽庫只用應(yīng)用與struts項(xiàng)目中。先學(xué)習(xí)過jstl工坊,后來做項(xiàng)目的時(shí)候又一直用的struts的標(biāo)簽庫献汗,用起來感覺沒什么差別,后來結(jié)合富文本編輯器從后臺取數(shù)據(jù)的時(shí)候才發(fā)現(xiàn)栅组,二者的取值方式不同雀瓢。jstl取值的時(shí)候會轉(zhuǎn)換里面的html標(biāo)簽,而struts標(biāo)簽取值的時(shí)候只是把值當(dāng)做字符串輸出到頁面刃麸。(后來發(fā)現(xiàn)struts標(biāo)簽也可以通過設(shè)置escape='1',對html字符經(jīng)行轉(zhuǎn)義,當(dāng)然jstl也可設(shè)置對html不進(jìn)行轉(zhuǎn)義司浪,只是二者默認(rèn)方式不同。但是Struts標(biāo)簽的訪問速度要比jstl慢割去,效率低)

4.Struts的Ajax支持

自己做項(xiàng)目的時(shí)候最多用的就是jQuery中的Ajax的post函數(shù)夸赫,來實(shí)現(xiàn)異步請求。

用法:$.post("",{},function(data,textStatus){})

第一個(gè)引號里面?zhèn)饕粋€(gè)URL咖城,一般就是一個(gè)action路徑茬腿,第二個(gè){}中傳一個(gè)JSON對象呼奢,如{a:1,b:2}這樣,把這個(gè)對象傳給后臺Action切平,后臺通過set和get方法得到a和b的值握础,第三個(gè)function是方法實(shí)現(xiàn)體。用來處理后臺傳送回的數(shù)據(jù)和前臺經(jīng)行交互揭绑。

后臺通過response.getWriter.print("")來向前臺傳遞數(shù)據(jù)弓候,存放到function中的data里。這樣就實(shí)現(xiàn)了簡單的Ajax的異步請求他匪。

Hibernate

Hibernate是位于持久層的ORM框架,ORM即對象/關(guān)系數(shù)據(jù)庫映射夸研。Hibernate工作就是將數(shù)據(jù)庫中的關(guān)系型數(shù)據(jù)映射成Java對象邦蜜。

由于Hibernate過于厚重,學(xué)習(xí)成本高亥至,導(dǎo)致其逐漸被Mybatis取代悼沈。

當(dāng)然Hibernate也有優(yōu)點(diǎn),比如一套hql可以適配所有數(shù)據(jù)庫姐扮,還有其緩存機(jī)制等都是優(yōu)點(diǎn)絮供。

由于Hibernate門檻較高,還是建議直接學(xué)習(xí)Mybatis.

Spring

作為應(yīng)用范圍最廣的容器框架茶敏,無論走到哪基本都會用到Spring. Spring可以說是企業(yè)應(yīng)用開發(fā)的不二之選壤靶,Spring貫穿表現(xiàn)層,業(yè)務(wù)層惊搏,持久層贮乳。并且能以高度的開放性與他們無縫整合。

Spring的核心是IOC(控制反轉(zhuǎn)),DI(依賴注入)和AOP(面向切面的編程)恬惯。實(shí)際上向拆,IOC和DI是同一個(gè)概念,只是spring設(shè)計(jì)者認(rèn)為DI能更準(zhǔn)確表示Spring核心技術(shù)酪耳。

1.IOC/DI

IOC的思想最核心的地方在于浓恳,資源不由使用資源的雙方管理,而由不使用資源的第三方管理碗暗,這可以帶來很多好處颈将。第一,資源集中管理讹堤,實(shí)現(xiàn)資源的可配置和易管理吆鹤。第二,降低了使用資源雙方的依賴程度洲守,也就是耦合度疑务。

2.AOP

AOP思想能從程序運(yùn)行角度考慮程序的流程沾凄,提取業(yè)務(wù)處理過程的切面。其有著各個(gè)步驟之間有良好的隔離性知允,源代碼無關(guān)性的特性撒蟀。可以這樣理解温鸽,可以把代碼看成一坨面保屯,同樣用刀來切面,切完了涤垫,想在前面姑尺、中間、后面或者四周放些“香料”什么的隨便你蝠猬。你只要把這把刀實(shí)現(xiàn)好就行了切蟋。AOP面向的是程序運(yùn)行中各個(gè)步驟,希望以更好的方式來組合業(yè)務(wù)處理的各個(gè)步驟榆芦。

SSH 整合開發(fā)

1.Spring整合Struts2

Spring整合Struts2有兩種策略,一種是讓Spring管理控制器柄粹,一種是使用Spring的自動裝備。兩種方式各有優(yōu)缺點(diǎn)匆绣。本人應(yīng)用的是第二種驻右,即使用自動裝備策略。

(1)首先載入配置文件

在web.xml中加入以下信息崎淳。當(dāng)然如果你使用IDEA開發(fā)時(shí)堪夭,這些都是已經(jīng)自動生成好的。

contextConfigLocation

/WEB-INF/applicationContext.xml

org.springframework.web.context.ContextLoaderListener

(2)配置struts.xml

由于使用自動裝配策略凯力,所以struts.xml的配置方式和原來一模一樣茵瘾。即和在沒有Spring整合之前的配置方式一樣。

(3)注入Action中的Service組件咐鹤。

在applicationContext.xml中配置Service的Bean拗秘,其中Bean的id與Action定義的Service中其getService中的名字一樣。例如:

public UserService us;

public UserService getUs() {

return us;

}

public void setUs(UserService us) {

    this.us = us;

}

如果定義了這樣一個(gè)Service祈惶,那么bean id也應(yīng)該設(shè)置為us,即:

2.Spring整合Hibernate

(1)配置管理SessionFactory.

在applicationContext.xml中配置以下信息雕旨,例子中包含兩個(gè)POJO,即User和Friend.

    destroy-method="close"

    p:driverClass="com.mysql.jdbc.Driver"

    p:jdbcUrl="jdbc:mysql://localhost/friends"

    p:user="root"

    p:password="123"

    p:maxPoolSize="40"

    p:minPoolSize="2"

    p:initialPoolSize="2"

    p:maxIdleTime="30"/>

            com.models.User

            com.models.Friend

            org.hibernate.dialect.MySQL5InnoDBDialect

            update

(2)定義DAO組件捧请,并將SessionFactory注入DAO組件凡涩。

以下代碼含有兩個(gè)DAO組件,即UserDao和FriendDao.

(3)定義Service組件疹蛉,并將DAO組件注入Service組件活箕。

同理,以下代碼含有兩個(gè)Service組件可款,UserService和FriendService

(4)配置事務(wù)管理器

注:若寫入tx報(bào)錯(cuò)育韩,說明你沒有導(dǎo)入相應(yīng)的xmlns.

p:sessionFactory-ref="sessionFactory"/>

這樣只要在Action中定義Service組件克蚂,在Service中定義DAO組件,生成set和get方法筋讨,這樣埃叭,一個(gè)SSH項(xiàng)目就搭建好了。

Mybatis

相對于厚重的Hibernate, Mybatis就比較好掌握了悉罕。就算沒看過Hibernate的新手赤屋,看看文檔,讀讀Demo壁袄,兩天基本就可以掌握上手了类早。Mybatis實(shí)際上是一個(gè)不完全的ORM框架,他主要完成的可以說是輸入和輸出映射嗜逻。需要手動寫sql語句莺奔,就簡單的增刪改查來說,個(gè)人更喜歡Hibernate. 覺得比Mybatis操作簡單变泄,能讓讓人更加專注于寫業(yè)務(wù)邏輯。而學(xué)習(xí)了Mybatis的高級映射和緩存機(jī)制后恼琼,確實(shí)感覺很簡單妨蛹,比Hibernate容易理解。尤其是學(xué)完逆向工程之后晴竞,發(fā)現(xiàn)Mybatis也可以如此輕松蛙卤。

1.Mybatis與Hibernate的比較

Mybatis優(yōu)勢

(1).MyBatis可以進(jìn)行更為細(xì)致的SQL優(yōu)化,可以減少查詢字段噩死。

(2).MyBatis容易掌握颤难,而Hibernate門檻較高。

Hibernate優(yōu)勢

(1).Hibernate的DAO層開發(fā)比MyBatis簡單已维,Mybatis需要維護(hù)SQL和結(jié)果映射行嗤。

(2).Hibernate對對象的維護(hù)和緩存要比MyBatis好,對增刪改查的對象的維護(hù)要方便垛耳。

(3).Hibernate數(shù)據(jù)庫移植性很好栅屏,MyBatis的數(shù)據(jù)庫移植性不好,不同的數(shù)據(jù)庫需要寫不同SQL堂鲜。

(4).Hibernate有更好的二級緩存機(jī)制栈雳,可以使用第三方緩存。MyBatis本身提供的緩存機(jī)制不佳缔莲。

他人總結(jié)

(1).Hibernate功能強(qiáng)大哥纫,數(shù)據(jù)庫無關(guān)性好,O/R映射能力強(qiáng)痴奏,如果你對Hibernate相當(dāng)精通蛀骇,而且對Hibernate進(jìn)行了適當(dāng)?shù)姆庋b厌秒,那么你的項(xiàng)目整個(gè)持久層代碼會相當(dāng)簡單,需要寫的代碼很少松靡,開發(fā)速度很快简僧,非常爽。

(2).Hibernate的缺點(diǎn)就是學(xué)習(xí)門檻不低雕欺,要精通門檻更高岛马,而且怎么設(shè)計(jì)O/R映射,在性能和對象模型之間如何權(quán)衡取得平衡屠列,以及怎樣用好Hibernate方面需要你的經(jīng)驗(yàn)和能力都很強(qiáng)才行啦逆。

(3).Mybatis入門簡單,即學(xué)即用笛洛,提供了數(shù)據(jù)庫查詢的自動對象綁定功能夏志,而且延續(xù)了很好的SQL使用經(jīng)驗(yàn),對于沒有那么高的對象模型要求的項(xiàng)目來說苛让,相當(dāng)完美沟蔑。

(4).Mybatis的缺點(diǎn)就是框架還是比較簡陋,功能尚有缺失狱杰,雖然簡化了數(shù)據(jù)綁定代碼瘦材,但是整個(gè)底層數(shù)據(jù)庫查詢實(shí)際還是要自己寫的,工作量也比較大仿畸,而且不太容易適應(yīng)快速數(shù)據(jù)庫修改食棕。

2.Mybatis的分頁

分頁是Mybatis的一個(gè)弱項(xiàng),不能像Hibernate那樣直接有分頁的方法供你調(diào)用错沽。而自己通過寫sql語句來寫分頁也是個(gè)苦力活簿晓,很麻煩,所以我強(qiáng)烈向大家推薦一款插件:PageHelper. 來自O(shè)SChina社區(qū)的某位自己寫的插件千埃,無論是配置還是操作都超級簡單憔儿,愛不釋手。

3.Mybatis的逆向工程

Mybatis需要我們自己寫sql語句镰禾,每張表的增刪改查無疑給我們帶來了巨大的工作量皿曲,所以項(xiàng)目中一般使用Mybatis的逆向工程工具,自動生成Java代碼吴侦,為我們提供豐富的操作數(shù)據(jù)庫的功能屋休。

(1)使用之前需要先下載用于支持逆向工程的jar包

點(diǎn)擊下載,網(wǎng)上的方法都是基于Maven或者用的是Eclipse的插件。自己使用IDEA開發(fā)的备韧,所以用的是第三種方法劫樟,通過配置xml文件,通過運(yùn)行它提供主程序生成Java代碼。當(dāng)然叠艳,用第一種方法也行奶陈。

(2)配置generatorConfig.xml

配置要求以下代碼中注釋寫的很清楚

PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

        connectionURL="jdbc:mysql://localhost:3306/friends" userId="root" password="123">

        targetProject=".\src">

        targetProject=".\src">

        targetPackage="com.mapper"

        targetProject=".\src">

(3)運(yùn)行GeneratorSqlmap

以下代碼只需要修改generatorConfig.xml的位置

package com.service;

import java.io.File;

import java.util.ArrayList;

import java.util.List;

import org.mybatis.generator.api.MyBatisGenerator;

import org.mybatis.generator.config.Configuration;

import org.mybatis.generator.config.xml.ConfigurationParser;

import org.mybatis.generator.internal.DefaultShellCallback;

public class GeneratorSqlmap {

    public void generator() throws Exception{

        List warnings = new ArrayList();

        boolean overwrite = true;

        //指定 逆向工程配置文件

        File configFile = new File("generatorConfig.xml");

        ConfigurationParser cp = new ConfigurationParser(warnings);

        Configuration config = cp.parseConfiguration(configFile);

        DefaultShellCallback callback = new DefaultShellCallback(overwrite);

        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);

        myBatisGenerator.generate(null);

    }

    public static void main(String[] args) throws Exception {

        try {

            GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap(); generatorSqlmap.generator();

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

}

這樣所有的model和mapping就自動生成好了,具體的用法看代碼附较,有的看方法名就能直接看出他的用法吃粒,其中的selectByExample類似于Hibernate的Criteria, 也就是按條件查詢。用法也很簡單拒课,就不演示了徐勃。

Spring mvc

作為替代Struts2的另一個(gè)web框架,Spring mvc當(dāng)然有它的優(yōu)勢早像。剛接觸Spring mvc時(shí)僻肖,為了理解Spring mvc的結(jié)構(gòu),要接觸許多名詞卢鹦,往往搞得我們頭疼臀脏。包括前端控制器,處理器映射器冀自,處理器適配器揉稚,以及視圖解析器。所以我們首先要了解Spring mvc的工作流程熬粗。

1.Spring mvc的工作流程

(1)瀏覽器發(fā)起請求到前端控制器(DispatcherServlet)

(2)前端控制器請求HandlerMapping查找 Handler

(3)處理器映射器HandlerMapping向前端控制器返回Handler

(4)處理器適配器執(zhí)行Handler并返回ModelAndView

(5)視圖解析器向前端控制器返回View

(6)前端控制器進(jìn)行視圖渲染

2.關(guān)于@RequestParam

真正做項(xiàng)目時(shí)窃植,@RequestParam是必須配置的,即使你傳入的參數(shù)名和你的形參名一樣也配置荐糜,因?yàn)樵贓clipse的Debug模式下編譯時(shí),參數(shù)名都會保留在class文件中葛超,spring由此可以反射綁定暴氏。而自己使用的IDEA,無論怎么調(diào)試怎樣都得不到前面?zhèn)鬟^來的值绣张,調(diào)了很長時(shí)間答渔,只有加上@RequestParam(value = "username") String username這樣的同名注解才行,即使文檔里說可以省略侥涵。

3.Spring mvc的優(yōu)勢

(1)學(xué)習(xí)完Spring mvc之后可以發(fā)現(xiàn)沼撕,Spring mvc是基于于方法開發(fā)的牍白,所有需要的參數(shù)都通過Controller里面的方法形參進(jìn)行傳遞卑惜,而Struts是基于于類開發(fā)的。這種基于方法的Controller開發(fā)更類似于Service開發(fā)誓篱,邏輯上更符合我們的編程邏輯嗦明。

(2)由于Struts的標(biāo)簽庫笼沥,導(dǎo)致Struts的效率要低于Spring mvc.

(3)Struts有安全漏洞,Spring mvc沒有發(fā)現(xiàn)安全隱患。

SSM 整合開發(fā)

項(xiàng)目結(jié)構(gòu):src下一共四個(gè)包奔浅,com.models, com.mapper, com.service, com.controller. 其中com.models包含兩個(gè)POJO對象User和Friend. com.models和com.mapper均由mybatis逆向工程自動生成馆纳。

1.配置web.xml

這個(gè)很簡單,如果使用IDEA開發(fā)汹桦,這些都是自動生成好的鲁驶。例子中除了Mapper的xml一共包含三個(gè)xml,即WEB-INF下的applicationContext.xml和dispatcher-servlet.xml. 以及src下的sqlMapConfig.xml.

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"

    version="3.1">

    contextConfigLocation

    /WEB-INF/applicationContext.xml

    org.springframework.web.context.ContextLoaderListener

    dispatcher

    org.springframework.web.servlet.DispatcherServlet

    1

    dispatcher

    *.form

    dispatcher

    *.action

2.配置sqlMapConfig.xml

這里我只給model配置了一個(gè)別名,可以根據(jù)需要自行配制舞骆,例如可以配置二級緩存钥弯。

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

3.配置applicationContext.xml

這里的配置方式和整合SSH的配置方式類似

  destroy-method="close"

  p:driverClass="com.mysql.jdbc.Driver"

  p:jdbcUrl="jdbc:mysql://localhost/friends"

  p:user="root"

  p:password="123"

  p:maxPoolSize="40"

  p:minPoolSize="2"

  p:initialPoolSize="2"

  p:maxIdleTime="30"/>

3.配置dispatcher-servlet.xml

這樣配置好之后,同樣的葛作,只要在Service層添加Mapper對象寿羞,在Controller層添加Service對象,這樣一個(gè)SSM項(xiàng)目就搭建好了赂蠢。

總結(jié):

希望上面的內(nèi)容能對看的人有所幫助绪穆,還有上面關(guān)于概念的理解與對比也是經(jīng)常被問,經(jīng)常讓人困惑的虱岂,愿學(xué)有所成玖院。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市第岖,隨后出現(xiàn)的幾起案子难菌,更是在濱河造成了極大的恐慌,老刑警劉巖蔑滓,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件郊酒,死亡現(xiàn)場離奇詭異,居然都是意外死亡键袱,警方通過查閱死者的電腦和手機(jī)燎窘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蹄咖,“玉大人褐健,你說我怎么就攤上這事±教溃” “怎么了蚜迅?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長俊抵。 經(jīng)常有香客問我谁不,道長,這世上最難降的妖魔是什么徽诲? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任拍谐,我火速辦了婚禮烛缔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘轩拨。我一直安慰自己践瓷,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布亡蓉。 她就那樣靜靜地躺著晕翠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪砍濒。 梳的紋絲不亂的頭發(fā)上淋肾,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天,我揣著相機(jī)與錄音爸邢,去河邊找鬼樊卓。 笑死,一個(gè)胖子當(dāng)著我的面吹牛杠河,可吹牛的內(nèi)容都是我干的碌尔。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼券敌,長吁一口氣:“原來是場噩夢啊……” “哼唾戚!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起待诅,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤叹坦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后卑雁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體募书,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年测蹲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了锐膜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,932評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡弛房,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出而柑,到底是詐尸還是另有隱情文捶,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布媒咳,位于F島的核電站粹排,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏涩澡。R本人自食惡果不足惜顽耳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧射富,春花似錦膝迎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至柴灯,卻和暖如春卖漫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背赠群。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工羊始, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人查描。 一個(gè)月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓突委,卻偏偏與公主長得像,于是被迫代替她去往敵國和親叹誉。 傳聞我的和親對象是個(gè)殘疾皇子鸯两,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評論 2 354

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)长豁,斷路器钧唐,智...
    卡卡羅2017閱讀 134,656評論 18 139
  • 1.Struts2.0有幾種標(biāo)簽庫 【參考答案】 UI標(biāo)簽、控制標(biāo)簽啃勉、數(shù)據(jù)標(biāo)簽忽舟、雜項(xiàng)標(biāo)簽 2.struts2必備包...
    碼記閱讀 1,594評論 0 7
  • 《死亡詩社》片段 相信電影愛好者對《死亡詩社》的這個(gè)片段都不陌生。文學(xué)老師基廷(羅賓·威廉姆斯飾)特立獨(dú)行淮阐,第一...
    菊小香閱讀 879評論 6 12
  • {自編心小說} 小引: (如果遇見那么一個(gè)人...) 我 有一個(gè)心愿 來世 做你的影子 在光明的地方 細(xì)細(xì)勾勒你靈...
    水形木影閱讀 242評論 0 0
  • 覆蓋equals()時(shí): 自反性 .............對于任何非null的,x.equals(x),返回tr...
    clp_a52a閱讀 224評論 0 0