Servlet-jsp從入門到精通(一)

web技術(shù)的發(fā)展

  1. 早期的web應(yīng)用主要是靜態(tài)頁面的瀏覽伪煤,這些靜態(tài)頁面使用HTML語言編寫敷搪,放在服務(wù)器上审丘,用戶使用瀏覽器通過HTTP協(xié)議請(qǐng)求服務(wù)器上的web頁面榕堰,服務(wù)器上的web服務(wù)器軟件接受到用戶發(fā)送的請(qǐng)求后足删,讀取請(qǐng)求URI所標(biāo)識(shí)的資源考赛,加上消息包頭發(fā)送給客戶端的瀏覽器巢株,瀏覽器解析響應(yīng)中的HTML數(shù)據(jù)廊驼,向用戶呈現(xiàn)多姿多彩的HTML頁面凿将。

  2. 但是隨著網(wǎng)絡(luò)的發(fā)展校套,很多線下業(yè)務(wù)開始向網(wǎng)上發(fā)展,基于Internet的web應(yīng)用也變得越來越復(fù)雜用戶所訪問的資源已不僅僅局限于服務(wù)器硬盤上存放的靜態(tài)網(wǎng)頁牧抵,更多的應(yīng)用需要根據(jù)用戶的請(qǐng)求動(dòng)態(tài)生成網(wǎng)頁信息笛匙,復(fù)雜的還需要從數(shù)據(jù)庫中提取信息,經(jīng)過一定的運(yùn)算犀变,生成一個(gè)頁面返回給客戶如何才能實(shí)現(xiàn)妹孙?

  3. 利用已經(jīng)實(shí)現(xiàn)HTTP協(xié)議的服務(wù)器端軟件,這些軟件預(yù)先給我們留出了擴(kuò)展的接口获枝,我們只需要按照一定的規(guī)則取提供相應(yīng)的擴(kuò)展功能蠢正,當(dāng)這類web服務(wù)器接受到客戶端請(qǐng)求后,判斷請(qǐng)求是否是訪問我們提供的擴(kuò)展功能省店,如果是嚣崭,將請(qǐng)求交由我們編寫的程序去處理笨触,處理完成后,程序?qū)⑻幚斫Y(jié)果交回web服務(wù)器軟件雹舀,web服務(wù)器軟件拿到結(jié)果后芦劣,再將結(jié)果作為相應(yīng)信息返回給客戶端。

  4. 早起使用的web服務(wù)器擴(kuò)展機(jī)制是CGI说榆,它允許用戶調(diào)用web服務(wù)器上的CGI程序虚吟,CGI全稱 CommonGateway Interface 公共網(wǎng)關(guān)接口,大多數(shù)的CGI程序使用Perl來編寫签财,也有通過C,Python或PHP編寫串慰,用戶通過單擊某個(gè)連接或者直接在瀏覽器的地址欄輸入U(xiǎn)RL來訪問CGI程序,web服務(wù)器接受到請(qǐng)求后唱蒸,發(fā)現(xiàn)這個(gè)請(qǐng)求是給CGI程序的邦鲫,于是就啟動(dòng)并運(yùn)行這個(gè)CGI程序,對(duì)用于請(qǐng)求進(jìn)行處理神汹。CGI程序解析請(qǐng)求中的CGI數(shù)據(jù)掂碱,處理數(shù)據(jù),并且產(chǎn)生一個(gè)響應(yīng)慎冤,這個(gè)響應(yīng)被返回給web服務(wù)器,web服務(wù)器包裝這個(gè)響應(yīng)沧卢,以HTTP響應(yīng)的形式發(fā)送給Web瀏覽器蚁堤。但是CGI編寫困難,對(duì)用戶請(qǐng)求的響應(yīng)時(shí)間較長以進(jìn)程方式運(yùn)行導(dǎo)致性能受限制但狭。

  5. 1997年披诗,SUN公司推出了Servlet技術(shù),作為java陣營的CGI解決方案立磁,作為對(duì)微軟ASP(1996年推出)的推出呈队,SUN公司于1998年推出了JSP技術(shù),允許在HTML頁面中嵌入java腳本代碼唱歧,從而實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁的功能宪摧。此外,PHP(1994年發(fā)明)技術(shù)也是類似于APS,JSP服務(wù)器端頁面編寫技術(shù)

    • Servlet
      java Servlet(java服務(wù)器小程序)是一個(gè)基于java技術(shù)的web組件颅崩,運(yùn)行在服務(wù)器端几于,由Servlet容器所管理,用于生成動(dòng)態(tài)的內(nèi)容沿后,Servlet是平臺(tái)獨(dú)立的java類沿彭,編寫一個(gè)Servlet實(shí)際上就是按照Servlet規(guī)范編寫一個(gè)Java類,Servlet被編譯為平臺(tái)獨(dú)立的字節(jié)碼尖滚,可以被動(dòng)態(tài)地加載到支持java技術(shù)的web服務(wù)器中運(yùn)行喉刘。

      Servlet容器

      Servlet容器也叫Servlet引擎瞧柔,是Web服務(wù)器或者應(yīng)用服務(wù)器的一部分,用戶在發(fā)送請(qǐng)求和響應(yīng)之上提供網(wǎng)絡(luò)服務(wù)睦裳,解碼基于MIME的請(qǐng)求造锅,格式化基于MIME的請(qǐng)求,Servlet不能獨(dú)立運(yùn)行推沸,必須被部署到Servlet容器中备绽,由容器實(shí)例化和調(diào)用Servlet的方法,Servlet容器在Servlet的生命周期內(nèi)包含和管理Servlet

    • 對(duì)比CGI

      1. Servlet是單實(shí)例多線程的運(yùn)行方式鬓催,每個(gè)請(qǐng)求在一個(gè)獨(dú)立的線程中運(yùn)行肺素,提供服務(wù)的Servlet實(shí)例只有一個(gè)
      2. Servlet 具有可升級(jí)性,能響應(yīng)更多的請(qǐng)求宇驾,因?yàn)閟ervlet容器使用一個(gè)線程而不是操作系統(tǒng)進(jìn)程倍靡,線程占用的資源要小
        3.Servlet使用標(biāo)準(zhǔn)的API,被更多的web服務(wù)器所支持课舍。
        4.Servlet使用java語言編寫塌西,擁有更多的java程序語言的優(yōu)點(diǎn)
        5.Servlet可以訪問java平臺(tái)豐富的類庫,使得各種應(yīng)用的開發(fā)更為容易
        6.Servlet容器給Servlet提供額外的功能筝尾。
    • Tomcat
      Tomcat是一個(gè)免費(fèi)的開源代碼的Servlet容器捡需,是Apache軟件基金會(huì)的一個(gè)頂級(jí)項(xiàng)目,由Apache,SUN和其他一些公司及個(gè)人共同開發(fā)而成筹淫,由于SUN的參與與支持站辉,最新的Servlet和JSP規(guī)范總是能在Tomcat中得到體現(xiàn)。Tomcat支持Servlet2.5

    • Tomcat的安裝

    • 安裝jdk,并且配置環(huán)境變量 path,CLASSPATH,JAVA_HOME

    • 解壓tomcat即可

    • Tomcat的目錄結(jié)構(gòu)

    • bin 存放啟動(dòng)和關(guān)閉Tomcat的腳本文件

    • conf 存放Tomcat服務(wù)器的各種配置文件损姜,server.xml web.xml等

    • lib 存放Tomcat服務(wù)器和所有web應(yīng)用程序需要訪問的JAR文件

    • logs 存放Tomcat的日志文件

    • temp 存放Tomcat運(yùn)行時(shí)產(chǎn)生的臨時(shí)文件

    • webapps 當(dāng)發(fā)布web應(yīng)用程序時(shí)饰剥,通常把Web應(yīng)用程序的目錄及文件放到這個(gè)目錄下

    • work Tomcat將JSP生成的Servlet源文件和字節(jié)碼文件存放到這個(gè)目錄下

Servlet詳解

Servlet API

Servlet接口
  1. init(ServletConfig config)
    在Servlet實(shí)例化之后,Servlet容器會(huì)調(diào)用init()方法摧阅,來初始化該對(duì)象汰蓉,主要是為了讓servlet對(duì)象在處理客戶請(qǐng)求前完成一些初始化工作。例如建立數(shù)據(jù)庫的連接棒卷,獲取配置信息等顾孽。對(duì)于每個(gè)Servlet實(shí)例,init()方法只能被調(diào)用一次比规。Servlet容器通過config參數(shù)向Servlet傳遞配置信息岩齿。可以通過config獲取web應(yīng)用程序的初始化參數(shù)苞俘,還可以獲取ServletContext對(duì)象

  2. service(ServletRequest req,ServletResponse res)
    容器調(diào)用service()方法處理客戶端的請(qǐng)求盹沈,在調(diào)用service()方法被容器調(diào)用之前,必須確保Init()方法正確完成,容器會(huì)構(gòu)造一個(gè)ServletRequest對(duì)象和ServletResponse對(duì)象作為參數(shù)傳遞給service()方法乞封。

  3. destroy();
    當(dāng)容器檢測到一個(gè)Servlet對(duì)象應(yīng)該從服務(wù)中被移除的時(shí)候做裙,容器會(huì)調(diào)用該對(duì)象的destory方法,以便讓Servlet對(duì)象可以釋放它所使用的資源肃晚,保存數(shù)據(jù)到數(shù)據(jù)庫中锚贱。

  4. ServletConfig getServletConfig()
    返回容器調(diào)用init()方法時(shí)傳遞給Servlet對(duì)象的ServletConfig對(duì)象

  5. String getServletInfo()
    返回一個(gè)String類型的字符串,包含了關(guān)于Servlet的信息关串,例如版權(quán)拧廊,作者等。

ServletRequest

ServletRequest 對(duì)象晋修,用來封裝請(qǐng)求數(shù)據(jù)
  1. Object getAttribute(String name)
    返回以name為名字的屬性的值吧碾,如果不存在,返回null
  2. Enumeration getAttributeNames();
    返回請(qǐng)求中所有可用的屬性的名字墓卦。返回一個(gè)枚舉集合
  3. void removeAttribute(String name);
    移除請(qǐng)求中名字為name的屬性
  4. void setAttribute(String key,Object val);
    在請(qǐng)求中保存一個(gè)鍵值對(duì)倦春。
  5. getCharacterEncoding()
    返回請(qǐng)求正文使用的字符編碼的名字
  6. int getContentLength()
    以字節(jié)為單位,返回請(qǐng)求正文的長度落剪。
  7. String getContentType()
    返回正文的MIME類型
  8. ServletInputStream getInputStream()
  9. BufferedReader getReader()
  10. String getLocalAddr()
    返回接收到請(qǐng)求的網(wǎng)絡(luò)接口的IP地址睁本。
  11. String getRemoteAddr()
    返回發(fā)送請(qǐng)求的客戶端或最后一個(gè)代理服務(wù)器的IP地址
  12. String getRemoteHost()
    返回發(fā)送請(qǐng)求的客戶端或者最后一個(gè)代理服務(wù)器的完整限定名
  13. String getLocalName()
    返回接收到請(qǐng)求的IP接口的主機(jī)名
  14. int getLocalPort()
    返回接收到請(qǐng)求的網(wǎng)絡(luò)接口的IP端口號(hào)
  15. int getRemotePort()
    返回發(fā)送請(qǐng)求的客戶端或最后一個(gè)代理服務(wù)器的IP源端口。
  16. String getParameter(String name)
    返回請(qǐng)求中name參數(shù)的值忠怖,如果name參數(shù)有多個(gè)值呢堰,該方法返回值列表中的第一個(gè)值。如果請(qǐng)求中沒有找到該參數(shù)凡泣,返回null
  17. Enumeration getParameterNames()
    返回請(qǐng)求中包含的所有的參數(shù)的名字暮胧。
  18. String[] getParameterValues(String name);
    返回請(qǐng)求中name參數(shù)所有的值
  19. String getProtocal()
    返回請(qǐng)求使用的協(xié)議的名字和版本 例如: HTTP/1.1
  20. RequestDispatcher getRequestDispatcher(String path)
    返回RequestDispather對(duì)象,作為path所定位的資源的封裝问麸。
  21. String getServerName()
    返回請(qǐng)求發(fā)送到服務(wù)器的主機(jī)名
  22. int getServerPort()
    返回請(qǐng)求發(fā)送到服務(wù)器的端口號(hào)
  23. setCharacterEncoding(String env)
    覆蓋在請(qǐng)求正文中所使用的字符編碼的名字。
ServletResponse對(duì)象钞翔,用來封裝響應(yīng)數(shù)據(jù)
  1. flushBuffer() 強(qiáng)制把任何在緩存中的內(nèi)容發(fā)送到客戶端
  2. int getBufferSize() 返回實(shí)際用于響應(yīng)的緩存的大小严卖,如果沒有使用緩存,這個(gè)方法返回0
  3. String getCharacterEncoding()
    返回響應(yīng)中發(fā)送的正文所使用的字符編碼(MIME字符集)
  4. String getContentType()
    返回響應(yīng)中發(fā)送的正文所使用的MIME類型
  5. ServletOutputStream getOutputStream()
  6. PrintWriter getWriter()
  7. boolean isCommitted() 返回一個(gè)布爾值布轿,指示是否已經(jīng)提交了響應(yīng)哮笆。
  8. void reset() 清除在緩存中的任何數(shù)據(jù),包括狀態(tài)代碼和消息報(bào)頭汰扭。
  9. void resetBuffer() 清除在緩存中的響應(yīng)內(nèi)容稠肘,保留狀態(tài)代碼和消息包頭。
  10. void setBufferSize(int size)
    設(shè)置響應(yīng)正文的緩存大小萝毛。
  11. void setCharacterEncoding(String charset)
    設(shè)置發(fā)送到客戶端的響應(yīng)的字符編碼
  12. void setContentLength(int len)
    設(shè)置內(nèi)容正文的長度
  13. void setContentType(String type)
    設(shè)置要發(fā)送到客戶端的響應(yīng)的內(nèi)容類型项阴。例如:"text/html;charset=UTF-8"
ServletConfig
  1. Servlet容器使用ServletConfig對(duì)象在Servlet初始化期間向它傳遞配置信息,一個(gè)ServletConfig對(duì)象笆包。

  2. String getInitParameter(String name);
    返回名字為name的初始化參數(shù)的值环揽,初始化參數(shù)在web.xml配置文件中進(jìn)行配置略荡。

  3. Enumeration getInitParameterNames()
    返回Servlet所有初始化參數(shù)的名字的枚舉集合。

  4. ServletContext getServletContext()
    返回Servlet上下文對(duì)象的引用歉胶。

  5. String getServletName()
    返回Servlet實(shí)例的名字汛兜,這個(gè)名字是web應(yīng)用程序的部署描述符中指定。

  6. 編寫一個(gè)Servlet實(shí)際上就是編寫一個(gè)實(shí)現(xiàn)了javax.servlet.Servlet接口的類通今。

GenericServlet
  1. 如果要編寫一個(gè)通用的Servlet粥谬,只需要從GenericServlet繼承,并且實(shí)現(xiàn)抽象方法service();

      String getInitParameter(String name)
      Enumeration getInitParameterNames();
      ServletContext getServletContext()
      init(ServletConfig config)
    
HttpServlet
  1. 在絕大多數(shù)的網(wǎng)絡(luò)應(yīng)用中辫塌,都是客戶端通過HTTP協(xié)議去訪問服務(wù)器端的資源我們編寫的Servlet也主要是應(yīng)用于HTTP協(xié)議的請(qǐng)求和響應(yīng)漏策,為了快速開發(fā)應(yīng)用于HTTP協(xié)議的Servlet類,sun公司在javax.servlet.http包中給我們提供了一個(gè)抽象類HttpServlet璃氢,它繼承自GenericServlet類哟玷,用于創(chuàng)建適合WEB站點(diǎn)的HTTP Servlet

     public void service(ServletRequest req,ServletResponse res);
     protected void service(HttpServletRequest req,HttpServletResponse resp)
       針對(duì)HTTP1.1定義的7種請(qǐng)求方法GET,POST,HEAD,PUT,DELETE,TRACE,OPTION,
     HttpServlet提供了7個(gè)處理方法
       doGet(HttpServletRequest req,HttpServletResponse resp)
       doPost(HttpServletRequest req,HttpServletResponse resp)
       ......
    
  2. 當(dāng)容器接受到一個(gè)針對(duì)HttpServlet對(duì)象的請(qǐng)求時(shí)一也,調(diào)用該對(duì)象中的方法順序如下:

    1. 調(diào)用公共的service()方法
    2. 在公共的service()方法中巢寡,首先將參數(shù)類型轉(zhuǎn)換為HttpServletRequest和HttpServletResponse,然后調(diào)用保護(hù)的service()方法椰苟,將轉(zhuǎn)換后的對(duì)象作為參數(shù)傳遞進(jìn)去
    3. 在保護(hù)的service方法中抑月,首先調(diào)用HttpServletRequest對(duì)象的getMethod方法,獲取HTTP請(qǐng)求方法的名稱舆蝴,然后根據(jù)請(qǐng)求方法的類型谦絮,調(diào)用相應(yīng)的doXxx()方法
HttpServletRequest

繼承自javax.servlet.servletRequest,在該接口中新增的方法如下:

  • String getContextPath()
    返回請(qǐng)求URI中表示請(qǐng)求上下文的部分,上下文路徑是請(qǐng)求URI的開始部分
  • Cookie[] getCookies()
    返回客戶端在此次請(qǐng)求中發(fā)送的所有的Cookie對(duì)象
  • String getHeader(String name)
    返回名字為name的請(qǐng)求報(bào)頭的值
  • Enumeration getHeaderNames()
    返回此次請(qǐng)求中包含的所有的報(bào)頭名字的枚舉集合
  • Enumeration getHeaders(String name)
    返回名字為name的請(qǐng)求報(bào)頭的所有值的枚舉集合
  • String getMethod()
    返回此次請(qǐng)求所使用的HTTP方法的名字
  • String getServletPath()
    返回請(qǐng)求URI中調(diào)用Servlet的部分
  • HttpSession getSession()
    返回和此次請(qǐng)求相關(guān)聯(lián)的Session
  • HttpSession getSession(boolean create)
    返回此次請(qǐng)求相關(guān)聯(lián)的Session,如果沒有給客戶端分配Session,并且create參數(shù)為true,則創(chuàng)建一個(gè)新的Session,如果為false洁仗,此次請(qǐng)求沒有一個(gè)有效的HttpSession,返回null
HttpServletResponse

該接口繼承ServletResponse,新增的方法入下

  • addCookie(Cookie cookie)
  • addHeader(String name,String value);
  • boolean containsHeader(String name)
  • encodeRedirectURL(String url)
  • 使用SessionID 對(duì)于重定向的url編碼层皱,以便用于sendRedirect()方法中
  • encodeURL(String url) 使用SessionID 指定的url編碼
  • sendRedirect(String location) 發(fā)送一個(gè)臨時(shí)的重定向響應(yīng)到客戶端,讓客戶端訪問新的url

Servlet生命周期

Servlet運(yùn)行在Servlet容器中赠潦,其聲明周期由容器來管理叫胖,其聲明周期通過javax.servlet.Servlet接口中的init(),service(),destory()方法表示Servlet的生命周期包含了4個(gè)階段

  1. 加載和實(shí)例化
    Servlet容器負(fù)責(zé)加載和實(shí)例化Servlet,當(dāng)Servlet容器啟動(dòng)時(shí)她奥,或者是在容器檢測到這個(gè)Servlet來響應(yīng)第一個(gè)請(qǐng)求時(shí)瓮增,創(chuàng)建Servlet實(shí)例。
  2. 初始化
    在Servlet實(shí)例化之后哩俭,容器將調(diào)用Servlet的init()方法初始化這個(gè)對(duì)象绷跑。對(duì)于每個(gè)Servlet實(shí)例,init()方法只被調(diào)用一次,
  3. 請(qǐng)求處理
    Servlet容器調(diào)用Servlet的service()方法對(duì)請(qǐng)求進(jìn)行處理凡资。service執(zhí) 行之前init()方法必須成功執(zhí)行砸捏。
  4. 服務(wù)終止
    當(dāng)容器檢測到一個(gè)Servlet實(shí)例應(yīng)該從服務(wù)中被移除的時(shí)候,容器就會(huì)調(diào)用實(shí)例的destory()方法。釋放資源带膜。
跳轉(zhuǎn)
RequestDispatcher接口
  1. 該對(duì)象由Servlet容器創(chuàng)建吩谦,用于封裝一個(gè)由路徑標(biāo)識(shí)的服務(wù)器資源。利用該對(duì)象可以將請(qǐng)求轉(zhuǎn)發(fā)給其他的Servlet或jsp頁面膝藕。

  2. forword(ServletRequest req,ServletResponse resp)
    該方法用于將請(qǐng)求從一個(gè)Servlet傳遞給服務(wù)器上的另外的Servlet式廷,jsp或者h(yuǎn)tml文件,在forword方法調(diào)用之后芭挽,之前在響應(yīng)緩存中沒有提交的內(nèi)容將會(huì)被自動(dòng)清除滑废。該方法將請(qǐng)求轉(zhuǎn)發(fā)給其他Servlet,將又被調(diào)用的Servlet負(fù)責(zé)對(duì)請(qǐng)求做出響應(yīng)袜爪,原先Servlet執(zhí)行終止蠕趁。

  3. include(ServletRequest req,ServletResponse resp)
    該方法用于將請(qǐng)求轉(zhuǎn)發(fā)給其他Servlet,被調(diào)用的Servlet對(duì)該請(qǐng)求做出的響應(yīng)將并入原來的響應(yīng)對(duì)象中辛馆,原先的Servlet還可以繼續(xù)輸出響應(yīng)信息俺陋。

  4. forword(),include()屬于內(nèi)部請(qǐng)求,瀏覽器地址不發(fā)生改變昙篙,客戶端僅向服務(wù)器端發(fā)送一次請(qǐng)求

sendRedirect()

該方法由HttpServletResponse對(duì)象提供腊状,
表示重定向到另外一個(gè)請(qǐng)求中。屬于外部請(qǐng)求苔可。重定向相當(dāng)于重新向服務(wù)器發(fā)送請(qǐng)求缴挖,瀏覽器地址發(fā)送改變

serlvet-jsp從入門到精通(二)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市焚辅,隨后出現(xiàn)的幾起案子映屋,更是在濱河造成了極大的恐慌,老刑警劉巖同蜻,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件棚点,死亡現(xiàn)場離奇詭異,居然都是意外死亡湾蔓,警方通過查閱死者的電腦和手機(jī)瘫析,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來卵蛉,“玉大人,你說我怎么就攤上這事么库∩邓浚” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵诉儒,是天一觀的道長葡缰。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么泛释? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任滤愕,我火速辦了婚禮,結(jié)果婚禮上怜校,老公的妹妹穿的比我還像新娘间影。我一直安慰自己,他們只是感情好茄茁,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布魂贬。 她就那樣靜靜地躺著,像睡著了一般裙顽。 火紅的嫁衣襯著肌膚如雪付燥。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天愈犹,我揣著相機(jī)與錄音键科,去河邊找鬼。 笑死漩怎,一個(gè)胖子當(dāng)著我的面吹牛勋颖,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播扬卷,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼牙言,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了怪得?” 一聲冷哼從身側(cè)響起咱枉,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎徒恋,沒想到半個(gè)月后蚕断,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡入挣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年亿乳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片径筏。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡葛假,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出滋恬,到底是詐尸還是另有隱情聊训,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布恢氯,位于F島的核電站带斑,受9級(jí)特大地震影響鼓寺,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜勋磕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一妈候、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧挂滓,春花似錦苦银、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至亲怠,卻和暖如春所计,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背团秽。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國打工主胧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人习勤。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓踪栋,卻偏偏與公主長得像,于是被迫代替她去往敵國和親图毕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子夷都,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)予颤,斷路器囤官,智...
    卡卡羅2017閱讀 134,599評(píng)論 18 139
  • 從三月份找實(shí)習(xí)到現(xiàn)在,面了一些公司蛤虐,掛了不少党饮,但最終還是拿到小米、百度驳庭、阿里刑顺、京東、新浪饲常、CVTE蹲堂、樂視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,184評(píng)論 11 349
  • 0 系列目錄# WEB請(qǐng)求處理 WEB請(qǐng)求處理一:瀏覽器請(qǐng)求發(fā)起處理 WEB請(qǐng)求處理二:Nginx請(qǐng)求反向代理 本...
    七寸知架構(gòu)閱讀 13,886評(píng)論 22 190
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法贝淤,內(nèi)部類的語法柒竞,繼承相關(guān)的語法,異常的語法霹娄,線程的語...
    子非魚_t_閱讀 31,581評(píng)論 18 399
  • 簡用論道線下互聯(lián)網(wǎng)▏作者:劉益群 “真是沒生意能犯,現(xiàn)在進(jìn)店的客人比以前少多了……” “剛開業(yè)的那段時(shí)間客人還蠻多的,...
    簡用云閱讀 463評(píng)論 0 0