#Tomcat啡省、Servlet#JavaWeb學(xué)習(xí)筆記(2020/2/29-3/1)

Tomcat設(shè)置熱配置:修改文件后不用重啟Tomcat服務(wù)器收擦。

image.png

Tomcat設(shè)置虛擬路徑

image.png

Servlet:Servlet就是一個(gè)接口,定義了Java類被瀏覽器訪問(wèn)到(tomcat識(shí)別)的規(guī)則囊卜。

具體內(nèi)容由我們自己實(shí)現(xiàn),在瀏覽器可以調(diào)用Servlet的實(shí)現(xiàn)類的方法眠菇。

配置Servlet

1边败、 在web.xml中配置:

    
            
            <servlet>
                <servlet-name>demo1</servlet-name>
                <servlet-class>cn.itcast.web.servlet.ServletDemo1</servlet-class>
            </servlet>
        
            <servlet-mapping>
                <servlet-name>demo1</servlet-name>
                <url-pattern>/demo1</url-pattern>
            </servlet-mapping>

2、使用注解配置:
Servlet 3.0之后支持使用\color{red}{@WebServlet("資源路徑")}的方式就可以配置了捎废,注解寫在Servlet的實(shí)現(xiàn)類中笑窜,資源路徑就是url-pattern中的內(nèi)容。

WebServlet注解內(nèi)容:

@Target({ElementType.TYPE})
                @Retention(RetentionPolicy.RUNTIME)
                @Documented
                public @interface WebServlet {
                    String name() default "";//相當(dāng)于<Servlet-name>
                
                    String[] value() default {};//代表urlPatterns()屬性配置,默認(rèn)就是這個(gè)
                
                    String[] urlPatterns() default {};//相當(dāng)于<url-pattern>
                
                    int loadOnStartup() default -1;//相當(dāng)于<load-on-startup>
                
                    WebInitParam[] initParams() default {};
                
                    boolean asyncSupported() default false;
                
                    String smallIcon() default "";
                
                    String largeIcon() default "";
                
                    String description() default "";
                
                    String displayName() default "";
                }

三登疗、Servlet的生命周期

1. 被創(chuàng)建:執(zhí)行init方法排截,只執(zhí)行一次
* Servlet什么時(shí)候被創(chuàng)建?
* 默認(rèn)情況下辐益,第一次被訪問(wèn)時(shí)断傲,Servlet被創(chuàng)建
* 可以配置執(zhí)行Servlet的創(chuàng)建時(shí)機(jī)。
* 在<servlet>標(biāo)簽下配置
1. 第一次被訪問(wèn)時(shí)智政,創(chuàng)建
<load-on-startup>的值為負(fù)數(shù)
2. 在服務(wù)器啟動(dòng)時(shí)认罩,創(chuàng)建
<load-on-startup>的值為0或正整數(shù)

Servlet的init方法,只執(zhí)行一次续捂,說(shuō)明一個(gè)Servlet在內(nèi)存中只存在一個(gè)對(duì)象垦垂,Servlet是單例的
多個(gè)用戶同時(shí)訪問(wèn)時(shí)宦搬,可能存在線程安全問(wèn)題。
解決:盡量不要在Servlet中定義成員變量劫拗。即使定義了成員變量间校,也不要對(duì)修改值


  1. 提供服務(wù):執(zhí)行service方法,執(zhí)行多次
    • 每次訪問(wèn)Servlet時(shí)页慷,Service方法都會(huì)被調(diào)用一次憔足。
  2. 被銷毀:執(zhí)行destroy方法,只執(zhí)行一次
    • Servlet被銷毀時(shí)執(zhí)行酒繁。服務(wù)器關(guān)閉時(shí)滓彰,Servlet被銷毀
    • 只有服務(wù)器正常關(guān)閉時(shí),才會(huì)執(zhí)行destroy方法欲逃。
    • destroy方法在Servlet被銷毀之前執(zhí)行找蜜,一般用于釋放資源

四、Servlet的執(zhí)行原理

image.png

Servlet不需要主方法就能執(zhí)行稳析,因?yàn)橛玫搅朔瓷涞募夹g(shù)。

五弓叛、Servlet的繼承結(jié)構(gòu):

Servlet -- 接口:
實(shí)現(xiàn)Servlet接口的實(shí)現(xiàn)類彰居,五個(gè)抽象方法都得實(shí)現(xiàn)。
         | 
GenericServlet -- 抽象類:
空實(shí)現(xiàn)了其余四個(gè)抽象方法撰筷,繼承該抽象類只需要實(shí)現(xiàn)service()即可陈惰。
         | 
HttpServlet -- 抽象類:
對(duì)HTTP協(xié)議進(jìn)行了封裝、空實(shí)現(xiàn)了五個(gè)方法毕籽、只需要重寫doGet/doPost方法即可抬闯、根據(jù)請(qǐng)求的方式來(lái)執(zhí)行不同的代碼。

六关筒、HTML協(xié)議

1.HTML協(xié)議是基于TCP/IP協(xié)議的一種高級(jí)協(xié)議
2.默認(rèn)端口號(hào)是:80
3.基于請(qǐng)求溶握、響應(yīng)模型:一次請(qǐng)求對(duì)應(yīng)一次響應(yīng)

4. 無(wú)狀態(tài)的:每次請(qǐng)求之間相互獨(dú)立,不能交互數(shù)據(jù)

HTML協(xié)議1.0版本蒸播,每次請(qǐng)求響應(yīng)都會(huì)建立一個(gè)新的連接睡榆,顯然這樣是影響性能的。
HTML協(xié)議1.1版本袍榆、復(fù)用連接

請(qǐng)求消息的格式

請(qǐng)求行
請(qǐng)求方式 請(qǐng)求url 請(qǐng)求協(xié)議/版本
GET /login.html HTTP/1.1
請(qǐng)求頭
客戶端通過(guò)請(qǐng)求頭的鍵值對(duì)胀屿,告訴服務(wù)器一些信息。
常見(jiàn)的請(qǐng)求頭的內(nèi)容:

  • User-Agent:告訴服務(wù)器一些瀏覽器的版本等信息包雀。
    在服務(wù)器端獲取User-Agent宿崭,可以解決兼容性的問(wèn)題。
  • Referer:告訴服務(wù)器才写,這個(gè)連接是從哪里來(lái)的葡兑。
    1.防止別的網(wǎng)站(盜版網(wǎng)站)盜取鏈接使用奴愉。
    2.可以進(jìn)行統(tǒng)計(jì)流量的來(lái)源。

請(qǐng)求空行
用來(lái)分隔請(qǐng)求體與請(qǐng)求頭的铁孵,注意:只有POST請(qǐng)求方式有請(qǐng)求體锭硼。
請(qǐng)求體
封裝POST請(qǐng)求消息的請(qǐng)求參數(shù)的

image.png

關(guān)于GET方式與POST方式

1、請(qǐng)求方式:
直接訪問(wèn)網(wǎng)頁(yè)資源是GET方式蜕劝,表單中設(shè)置POST方式檀头,再提交后才是POST方式。

GET方式與POST方式的區(qū)別:

  • GET
    1岖沛、get是相當(dāng)于是明文傳輸暑始,且url長(zhǎng)度有限制,根據(jù)瀏覽器不同限制的長(zhǎng)度不同婴削。
    2廊镜、填入表單的請(qǐng)求參數(shù)會(huì)顯示到地址欄后面、不太安全唉俗。
    3嗤朴、沒(méi)有請(qǐng)求體。

  • POST
    1虫溜、post的請(qǐng)求參數(shù)在請(qǐng)求體中雹姊,不是明文傳輸
    2.、請(qǐng)求的url長(zhǎng)度沒(méi)有限制的
    3.衡楞、相對(duì)安全

七吱雏、Request對(duì)象與Response對(duì)象

request對(duì)象和response對(duì)象的原理

  1. request和response對(duì)象是Tomcat服務(wù)器給我們創(chuàng)建的。
  2. request對(duì)象是來(lái)獲取請(qǐng)求消息瘾境,response對(duì)象是來(lái)設(shè)置響應(yīng)消息做出回應(yīng)的歧杏。

1、Request對(duì)象(請(qǐng)求)

Request對(duì)象的繼承結(jié)構(gòu):

ServletRequest -- 接口
 | 繼承 
HttpServletRequest -- 接口
 | 實(shí)現(xiàn) 
org.apache.catalina.connector.RequestFacade 類(tomcat)

獲取請(qǐng)求行的數(shù)據(jù)的方法

請(qǐng)求行中的數(shù)據(jù)有:請(qǐng)求方式迷守、請(qǐng)求的URL犬绒、HTTP協(xié)議版本信息

  • 1、獲取請(qǐng)求方式:
    String getMethod()
  • 2盒犹、獲取URL中的虛擬路徑的方法:\color{red}{虛擬路徑是在Tomcat設(shè)置的}
    String getContextPath()
  • 3懂更、獲取Servlet資源路徑: (常用)
    String getServletPath()
  • 4、獲取get方式的請(qǐng)求參數(shù):
    String getQueryString()
  • 5急膀、獲取URI路徑
    String getRequestURI(): (常用)
  • 6沮协、獲取URL路徑
    StringBuffer getRequestURL()
    \color{red}{URL與URI的區(qū)別:URL是URI的子集}
  • 7、獲取HTTP協(xié)議版本:
    String getProtocol()
  • 8卓嫂、獲取客戶機(jī)的IP地址:
    String getRemoteAddr()

獲取請(qǐng)求頭中的數(shù)據(jù)

  • 1慷暂、(常用)String getHeader(String name):通過(guò)請(qǐng)求頭的名稱獲取請(qǐng)求頭的值
  • 2、Enumeration<String> getHeaderNames():獲取所有的請(qǐng)求頭名稱\color{red}{Enumeration<String> 的對(duì)象可以當(dāng)做迭代器使用,再用getHeader方法獲取所有頭的值}

獲取請(qǐng)求頭的數(shù)據(jù)(使用流)

步驟:

  • 1行瑞、BufferedReader getReader():獲取字符輸入流奸腺,只能操作字符數(shù)據(jù) 。
  • 2血久、ServletInputStream getInputStream():獲取字節(jié)輸入流突照,可以操作所有類型數(shù)據(jù)
  • 3、使用流對(duì)象氧吐,獲取數(shù)據(jù)讹蘑。

POST方法和GET方法都可以使用的、獲取請(qǐng)求參數(shù)的方法(常用)

    1. String getParameter(String name):根據(jù)參數(shù)名稱獲取參數(shù)值
    1. String[] getParameterValues(String name):根據(jù)參數(shù)名稱獲取參數(shù)值的數(shù)組
    1. Enumeration<String> getParameterNames():獲取所有請(qǐng)求的參數(shù)名稱
    1. Map<String,String[]> getParameterMap():獲取所有參數(shù)的map集合

關(guān)于請(qǐng)求參數(shù)亂碼問(wèn)題:

Q:為什么會(huì)出現(xiàn)亂碼筑舅?
A:request對(duì)象是Tomcat創(chuàng)建的座慰,所以解析請(qǐng)求參數(shù)使用的是Tomcat的編碼集iso-8859-1,但是瀏覽器使用的是html設(shè)置的編碼集(utf-8)翠拣,所以就亂碼了版仔。

目前Tomcat 8 已經(jīng)解決了get方法的亂碼問(wèn)題,但是post方法依然還會(huì)亂碼误墓。
需要我們自己設(shè)置編碼集蛮粮。

\color{red}{在接收請(qǐng)求參數(shù)前,設(shè)置字符集优烧!}

      request.setCharacterEncoding("utf-8");

2.Response對(duì)象(響應(yīng))

響應(yīng)消息與請(qǐng)求消息的格式類似:

  • 響應(yīng)行
    內(nèi)容:協(xié)議/版本 響應(yīng)狀態(tài)碼 狀態(tài)碼描述
    • 狀態(tài)碼分類:
      1. 1xx:服務(wù)器就收客戶端消息蝉揍,但沒(méi)有接受完成,等待一段時(shí)間后畦娄,發(fā)送1xx多狀態(tài)碼
      2. 2xx:成功。代表:200
      3. 3xx:重定向弊仪。代表:302(重定向)熙卡,304(訪問(wèn)緩存)
      4. 4xx:客戶端錯(cuò)誤。 代表: 404(請(qǐng)求路徑?jīng)]有對(duì)應(yīng)的資源)励饵、405:請(qǐng)求方式?jīng)]有對(duì)應(yīng)的doXxx方法 (例如post方式的請(qǐng)求驳癌,卻沒(méi)有doPost方法。
      5. 5xx:服務(wù)器端錯(cuò)誤役听。代表:500(服務(wù)器內(nèi)部出現(xiàn)異常)
  • 響應(yīng)頭
    • 常見(jiàn)響應(yīng)頭:
      1. Content-Type:服務(wù)器告訴客戶端本次響應(yīng)體數(shù)據(jù)格式以及編碼格式颓鲜。
      2. Content-disposition:服務(wù)器告訴客戶端以什么格式打開響應(yīng)體數(shù)據(jù)。
        • in-line:默認(rèn)值,在當(dāng)前頁(yè)面內(nèi)打開
        • attachment;filename=xxx:以附件形式打開響應(yīng)體典予。文件下載
  • 響應(yīng)空行
    用于分隔響應(yīng)頭與響應(yīng)體的甜滨。
  • 響應(yīng)體
    用于傳輸數(shù)據(jù)
image.png

Response對(duì)象是用來(lái)設(shè)置響應(yīng)消息的。

①瘤袖、設(shè)置響應(yīng)行

  • 設(shè)置狀態(tài)碼:setStatus(int sc)
    ②衣摩、設(shè)置響應(yīng)頭
  • setHeader(String name, String value)
    ③、設(shè)置響應(yīng)體
  • 獲取Tomcat提供的輸出流對(duì)象捂敌,向響應(yīng)體中寫數(shù)據(jù)艾扮,輸出到瀏覽器既琴。
    • PrintWriter getWriter()、獲得字符輸出流(打印流)
    • ServletOutputStream getOutputStream()泡嘴、獲得字節(jié)輸出流

關(guān)于輸出亂碼問(wèn)題:

Q:為什么會(huì)亂碼甫恩?
A:因?yàn)檩敵隽鲗?duì)象是Tomcat給的,編碼集是Tomcat設(shè)置的ISO-8859-1酌予,瀏覽器解析請(qǐng)求體是用的系統(tǒng)的編碼集(GBK)磺箕,所以對(duì)應(yīng)不上就亂碼了。

解決方法:

  • 1.設(shè)置流的編碼集:\color{red}{光寫這個(gè)還不行霎终,因?yàn)闉g覽器不一定是utf-8的編碼集}
    response.setCharacterEncoding("utf-8");
    1. 設(shè)置瀏覽器解析的編碼集:\color{red}{使用響應(yīng)頭把瀏覽器的字符集也設(shè)置為一樣}
      response.setHeader("content-type","text/html;charset=utf-8");

兩步合一的簡(jiǎn)便方法:\color{red}{設(shè)置流的字符集+設(shè)置瀏覽器字符集}

  • response.setContentType("text/html;charset=utf-8");
    \color{red}{注意滞磺!上述操作要在獲取流之前設(shè)置}

重定向:

步驟:

  • 1.設(shè)置狀態(tài)碼為302、
    response.setStatus(302);
  • 2.設(shè)置重定向地址莱褒、由響應(yīng)頭中的location頭指定:
    response.setHeader("location","重定向的地址");

一步設(shè)置重定向:

  • response.sendRedirect("重定向的地址");

重定向(redirect)與請(qǐng)求轉(zhuǎn)發(fā)(forward)的區(qū)別:

  • 重定向
    • 地址欄會(huì)發(fā)生改變
    • 可以重定向到服務(wù)器外的資源
    • 重定向是兩次請(qǐng)求击困、重定向不能由request域共享數(shù)據(jù)。
  • 請(qǐng)求轉(zhuǎn)發(fā)
    • 地址欄不會(huì)改變
    • 只能轉(zhuǎn)發(fā)到當(dāng)前服務(wù)器中的資源
    • 轉(zhuǎn)發(fā)是一次請(qǐng)求广凸、轉(zhuǎn)發(fā)可以由request域共享數(shù)據(jù)阅茶。


      image.png

八、請(qǐng)求轉(zhuǎn)發(fā):服務(wù)器內(nèi)部的資源訪問(wèn)

步驟:

  1. 通過(guò)request對(duì)象獲取請(qǐng)求轉(zhuǎn)發(fā)器對(duì)象:
    RequestDispatcher getRequestDispatcher(String path)
  2. 使用RequestDispatcher對(duì)象來(lái)進(jìn)行轉(zhuǎn)發(fā):
    forward(ServletRequest request, ServletResponse response)

特點(diǎn):

  1. 瀏覽器地址欄路徑不發(fā)生變化
  2. 只能轉(zhuǎn)發(fā)到當(dāng)前服務(wù)器內(nèi)部資源中谅海。
  3. 轉(zhuǎn)發(fā)是一次請(qǐng)求

九脸哀、路徑的虛擬目錄的使用情況

規(guī)則:判斷定義的路徑是給誰(shuí)用的?判斷請(qǐng)求將來(lái)從哪兒發(fā)出

  • 1扭吁、給客戶端瀏覽器請(qǐng)求資源使用:需要加虛擬目錄(項(xiàng)目的訪問(wèn)路徑)

    • 建議虛擬目錄動(dòng)態(tài)獲茸卜洹:request.getContextPath()
    • 重定向:因?yàn)槭强蛻舳苏?qǐng)求的。
  • 2侥袜、 給服務(wù)器請(qǐng)求資源使用:不需要加虛擬目錄

    • 轉(zhuǎn)發(fā)路徑:因?yàn)槭欠?wù)器請(qǐng)求的蝌诡。

十、共享數(shù)據(jù)——域?qū)ο?/h1>

域?qū)ο螅阂粋€(gè)有作用范圍的對(duì)象枫吧,可以在范圍內(nèi)共享數(shù)據(jù)
request域:一次請(qǐng)求的范圍浦旱,一般用于請(qǐng)求轉(zhuǎn)發(fā)的多個(gè)資源中共享數(shù)據(jù)

1、向域?qū)ο笾写鎯?chǔ)數(shù)據(jù):
void setAttribute(String name,Object obj)
2九杂、通過(guò)鍵獲取值:
Object getAttitude(String name)
3颁湖、通過(guò)鍵移除鍵值對(duì)
void removeAttribute(String name):

十一、ServletContext:代表整個(gè)web應(yīng)用

如何獲壤 甥捺?

  • 通過(guò)request對(duì)象獲取:request.getServletContext();
  • 通過(guò)HttpServelet獲壬亚妗:this.getServletContext();
    作用:
    • 1.獲取MIME類型
      • 什么是MIME類型涎永?一種互聯(lián)網(wǎng)通信過(guò)程中定義的文件數(shù)據(jù)類型。
        格式為: 大類型/小類型
        例如:text/html、image/jpeg
        \color{red}{這種類型是在Tomcat的web.xml中定義好的羡微,我們可以通過(guò)文件的后綴名來(lái)獲取}
        context.getMimeType(String file)
    • 2.作為域?qū)ο?/strong>
      因?yàn)镾ervletContext對(duì)象是整個(gè)web應(yīng)用谷饿,所以所有的servlet資源都能訪問(wèn)到存在ServletContext對(duì)象中的數(shù)據(jù),比較的不安全妈倔。
      相比request域?qū)ο蟮姆秶且淮握?qǐng)求經(jīng)過(guò)的servlet博投、ServletContext的范圍太大了。
      ServletContext對(duì)象的生命周期很長(zhǎng)盯蝴,從服務(wù)器啟動(dòng)到服務(wù)器關(guān)閉毅哗。
  • 3.獲取文件的真實(shí)(服務(wù)器)路徑
    在之前獲取的文件都是默認(rèn)在src路徑下的,使用ClassLoader就能獲取捧挺。
    但是ClassLoader并獲取不了web路徑下的文件虑绵。
    這時(shí)就需要ServletContext對(duì)象來(lái)獲取了。
String b = context.getRealPath("/a.txt");//web目錄下資源訪問(wèn) 
D:\ideaProject\basic-code\out\artifacts\Servlet_Response_war_exploded\a.txt

String c = context.getRealPath("/WEB-INF/b.txt");//WEB-INF目錄下的資源訪問(wèn)
D:\ideaProject\basic-code\out\artifacts\Servlet_Response_war_exploded\WEB-INF\b.txt

String a = context.getRealPath("/WEB-INF/classes/c.txt");//src目錄下的資源訪問(wèn) 
D:\ideaProject\basic-code\out\artifacts\Servlet_Response_war_exploded\WEB-INF\classes\c.txt

\color{red}{ src下的資源會(huì)被放到web/WEB-INF/classes中闽烙。}
服務(wù)器路徑是:D:\ideaProject\basic-code\out\artifacts\Servlet_Response_war_exploded
(本地)工作空間路徑是:D:\ideaProject\basic-code\Servlet-Response

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末翅睛,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子黑竞,更是在濱河造成了極大的恐慌捕发,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,542評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件很魂,死亡現(xiàn)場(chǎng)離奇詭異扎酷,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)遏匆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門法挨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人幅聘,你說(shuō)我怎么就攤上這事坷剧。” “怎么了喊暖?”我有些...
    開封第一講書人閱讀 158,021評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)撕瞧。 經(jīng)常有香客問(wèn)我陵叽,道長(zhǎng),這世上最難降的妖魔是什么丛版? 我笑而不...
    開封第一講書人閱讀 56,682評(píng)論 1 284
  • 正文 為了忘掉前任巩掺,我火速辦了婚禮,結(jié)果婚禮上页畦,老公的妹妹穿的比我還像新娘胖替。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評(píng)論 6 386
  • 文/花漫 我一把揭開白布独令。 她就那樣靜靜地躺著端朵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪燃箭。 梳的紋絲不亂的頭發(fā)上冲呢,一...
    開封第一講書人閱讀 49,985評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音招狸,去河邊找鬼敬拓。 笑死,一個(gè)胖子當(dāng)著我的面吹牛裙戏,可吹牛的內(nèi)容都是我干的乘凸。 我是一名探鬼主播,決...
    沈念sama閱讀 39,107評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼累榜,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼营勤!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起信柿,我...
    開封第一講書人閱讀 37,845評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤冀偶,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后渔嚷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體进鸠,經(jīng)...
    沈念sama閱讀 44,299評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評(píng)論 2 327
  • 正文 我和宋清朗相戀三年形病,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了客年。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,747評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡漠吻,死狀恐怖量瓜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情途乃,我是刑警寧澤绍傲,帶...
    沈念sama閱讀 34,441評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站耍共,受9級(jí)特大地震影響烫饼,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜试读,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評(píng)論 3 317
  • 文/蒙蒙 一杠纵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧钩骇,春花似錦比藻、人聲如沸铝量。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)慢叨。三九已至,卻和暖如春群凶,著一層夾襖步出監(jiān)牢的瞬間插爹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工请梢, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谐宙,地道東北人定血。 一個(gè)月前我還...
    沈念sama閱讀 46,545評(píng)論 2 362
  • 正文 我出身青樓舞虱,卻偏偏與公主長(zhǎng)得像喜爷,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子够坐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評(píng)論 2 350