ssm踩坑(1)idea框架搭建

最近把j2e的基礎(chǔ)學(xué)了绎秒,不敢說精通辕漂,但我想盡快摸清java開發(fā)的套路呢灶,接觸更多東西,故選擇學(xué)習(xí)ssm框架钉嘹。通過不斷實踐的方式來掌握更多知識鸯乃。

聲明:本系列文章全都是在什么都不懂的前提下不斷摸索踩坑。本人一般看不下那些巨厚的教程書跋涣,我選擇通過實踐操作缨睡,再結(jié)合書籍、前人博客等資料來深入學(xué)習(xí)陈辱。但網(wǎng)絡(luò)上無論有多少教程奖年,自己操作時一定一定會遇到各種問題,還是要記錄一下性置。

ssm框架是spring+springMVC+myBatis拾并,一套近來很火的java互聯(lián)網(wǎng)輕量級開發(fā)框架,有取代ssh的趨勢鹏浅。構(gòu)建ssm項目的第一步是搭建開發(fā)框架嗅义,各種導(dǎo)包、配置文件隐砸。本次我使用工具有:idea2018.1.4之碗,maven,tomcat9.07季希,jdk8褪那,操作系統(tǒng)為manjaroKDE(一種linux,不重要)式塌。主要參考了這個博客博敬。

補充更新

  1. 在IDEA中添加tomcat時沒有tomcat可選。解決方法:打開File-setting-搜索tomcat-在Plugins右邊勾選tomcat峰尝。
  2. 在IDEA中運行tomcat的時提示沒有權(quán)限偏窝。解決方法:打開終端,進入tomcat\bin目錄,然后執(zhí)行chmod 777 *.sh

新建maven項目

首先創(chuàng)建maven項目:選擇Maven項目祭往,更方便管理伦意。勾選Create form archetype,選擇下方帶webapp的硼补,next驮肉。注意觀察圖片。


新建項目

填寫GroupId已骇,一般是網(wǎng)站的倒寫离钝,這里我填com.ssm.learn。ArtifactId為項目名稱疾捍,這里我起名webssm奈辰。Version為本項目版本栏妖,一般不需要改乱豆。這些都會在下面的配置文件中體現(xiàn)。圖沒截到吊趾。

這里添加一行宛裕,name=archetypeCatalog,value=internal论泛。防止maven更新揩尸,加載速度更快。
防止maven自動更新

修改項目名和存放位置屁奏。
項目名

進入后會自動加載很長一段時間岩榆,右下角這里選擇Enable。
Enable

我經(jīng)歷過多次Maven加載失敗坟瓢,具體原因沒理解勇边,但我選擇徹底刪除項目后再重走上面幾步。折联。粒褒。完成后初步樣式:
加載成功

文件結(jié)構(gòu)及代碼,注意修改以對應(yīng)自己的項目

目錄main下新建文件夾java诚镰、resources(貌似以前resources自動生成奕坟,但idea2018沒有,要自己建)清笨。目錄src下新建文件夾test月杉,test下新建文件夾java。結(jié)構(gòu)如圖:
目錄結(jié)構(gòu)1

像圖中這種方式來對文件夾標(biāo)記抠艾。1.文件夾main.java標(biāo)記為Sources Root苛萎。2.resources標(biāo)記為Resources Root。3.test.java標(biāo)記為Test Sources Root。:
1727232375.jpg

打開File-Project Structure-Modules首懈,可以看到右邊有4個標(biāo)記結(jié)構(gòu)目錄绊率。


結(jié)構(gòu)2

建立幾個對應(yīng)包package,對應(yīng)這個目錄結(jié)構(gòu)究履。
建包

修改pom.xml滤否,maven會根據(jù)這個配置文件自動下載所需的jar包,包括spring包最仑,mabatis等藐俺。這里給出的我的代碼也是拿別人的,記住要經(jīng)過仔細修改才能對應(yīng)與自己的項目泥彤。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.ssm.learn</groupId>  <!--改成自己的groupId-->
  <artifactId>webssm</artifactId>   <!--改成自己的項目名-->
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>webssm Maven Webapp</name>  <!--前面改成自己的groupId-->
  <url>http://maven.apache.org</url>
  <properties>
    <!-- 設(shè)置項目編碼編碼 -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <!-- spring版本號 -->
    <spring.version>4.3.5.RELEASE</spring.version>
    <!-- mybatis版本號 -->
    <mybatis.version>3.4.1</mybatis.version>
  </properties>

  <dependencies>

    <!-- 單元測試 -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
    </dependency>

    <!-- 實現(xiàn)slf4j接口并整合 -->
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>1.2.2</version>
    </dependency>

    <!-- JSON -->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.8.7</version>
    </dependency>

    <!-- 數(shù)據(jù)庫 -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.41</version>
      <scope>runtime</scope>
    </dependency>

    <!-- 數(shù)據(jù)庫連接池 -->
    <dependency>
      <groupId>com.mchange</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.5.2</version>
    </dependency>

    <!-- MyBatis -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>${mybatis.version}</version>
    </dependency>

    <!-- mybatis/spring整合包 -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.1</version>
    </dependency>

    <!-- Spring -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>${spring.version}</version>
    </dependency>

  </dependencies>

  <build>
    <!--改這里欲芹,項目名-->
    <finalName>webssm</finalName>
  </build>

</project>

接下來各種新建包,class吟吝,xml菱父,properties文件。與圖片中的目錄結(jié)構(gòu)對應(yīng)剑逃,缺就建浙宜。
目錄結(jié)構(gòu)

注意再建spring-mvc.xml和spring-mybatis.xml文件時,idea的上面有提示配置蛹磺,點擊進去按照默認(rèn)點ok就行粟瞬。如圖:


配置spring-mvc
配置spring-mybatis

接下來打代碼,過程中按照自己的項目修改import的包名萤捆,如有出錯可以等全部代碼打完再看錯誤點裙品。記得根據(jù)提示引入javaEE 6的包,不然servlet報錯:
UserController.java

package com.ssm.learn.controller;

import javax.servlet.http.HttpServletRequest;

import com.ssm.learn.pojo.User;
import com.ssm.learn.service.IUserService;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@Controller
@RequestMapping("/user")
public class UserController {

    @Resource
    private IUserService userService;

    @RequestMapping("/showUser.do")
    public void selectUser(HttpServletRequest request, HttpServletResponse response) throws IOException {
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        long userId = Long.parseLong(request.getParameter("id"));
        User user = this.userService.selectUser(userId);
        ObjectMapper mapper = new ObjectMapper();
        response.getWriter().write(mapper.writeValueAsString(user));
        response.getWriter().close();
    }

}

UserDao.xml(再dao.mapper目錄下俗或,是mybatis框架配合IUserDao的接口通過xml中的sql語句操作數(shù)據(jù)庫市怎,具體使用請了解mybatis)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!-- 設(shè)置為IUserDao接口方法提供sql語句配置,這個xml是mybatis的使用方式 -->
<mapper namespace="com.ssm.learn.dao.IUserDao">

    <select id="selectUser" resultType="User" parameterType="long">
        SELECT * FROM user WHERE id = #{id}
    </select>

</mapper>

IUserDao.java

package com.ssm.learn.dao;

import com.ssm.learn.pojo.User;

//mybatis框架,interface配合xml
public interface IUserDao {
    User selectUser(long id);
}

User.java(簡單java類蕴侣,包含getter和setter)

package com.ssm.learn.pojo;

public class User {
    private long id;
    private String password;
    private String username;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }
}

UserServiceImpl.java(在service.impl目錄下)

package com.ssm.learn.service.impl;

import com.ssm.learn.dao.IUserDao;
import com.ssm.learn.pojo.User;
import com.ssm.learn.service.IUserService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;

@Service("userService")
public class UserServiceImpl implements IUserService {

    @Resource
    private IUserDao userDao;

    public User selectUser(long userId) {
        return this.userDao.selectUser(userId);
    }

}

IUserService.java

package com.ssm.learn.service;

import com.ssm.learn.pojo.User;

public interface IUserService {

    public User selectUser(long userId);

}

先在mysql命令行中建立一個測試數(shù)據(jù)庫ssmtest

create database ssmtest;

使用idea的數(shù)據(jù)庫工具連接數(shù)據(jù)庫焰轻。

編寫測試用ssmtest.sql文件。

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用戶ID',
  `password` varchar(255) NOT NULL COMMENT '用戶密碼',
  `username` varchar(255) NOT NULL COMMENT '用戶昵稱',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
INSERT INTO `user` VALUES ('1', '123', 'test');
SET FOREIGN_KEY_CHECKS=1;

jdbc.properties(數(shù)據(jù)庫配置文件昆雀,填寫數(shù)據(jù)庫名辱志,用戶名,密碼)

jdbc.driver=com.mysql.jdbc.Driver
#數(shù)據(jù)庫地址(下面的ssmtest是我的測試用數(shù)據(jù)庫狞膘,自行修改)
jdbc.url=jdbc:mysql://127.0.0.1:3306/ssmtest?useUnicode=true&characterEncoding=utf8
#用戶名
jdbc.username=自己數(shù)據(jù)庫用戶名揩懒,一般為root
#密碼
jdbc.password=自己數(shù)據(jù)庫密碼
#最大連接數(shù)
c3p0.maxPoolSize=30
#最小連接數(shù)
c3p0.minPoolSize=10
#關(guān)閉連接后不自動commit
c3p0.autoCommitOnClose=false
#獲取連接超時時間
c3p0.checkoutTimeout=10000
#當(dāng)獲取連接失敗重試次數(shù)
c3p0.acquireRetryAttempts=2

配置文件spring-mvc.xml,仔細修改適應(yīng)自己的項目挽封。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

    <!-- 掃描web相關(guān)的bean -->
    <context:component-scan base-package="com.ssm.learn.controller"/>

    <!-- 開啟SpringMVC注解模式 -->
    <mvc:annotation-driven/>

    <!-- 靜態(tài)資源默認(rèn)servlet配置 -->
    <mvc:default-servlet-handler/>

    <!-- 配置jsp 顯示ViewResolver -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

</beans>

配置文件spring-mybatis.xml已球,自行修改,這兩個文件仔細修改會有很多收獲,智亮。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!-- 掃描service包下所有使用注解的類型 -->
    <context:component-scan base-package="com.ssm.learn"/>

    <!-- 配置數(shù)據(jù)庫相關(guān)參數(shù)properties的屬性:${url} -->
    <context:property-placeholder location="classpath:jdbc.properties"/>

    <!-- 數(shù)據(jù)庫連接池 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driver}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <property name="maxPoolSize" value="${c3p0.maxPoolSize}"/>
        <property name="minPoolSize" value="${c3p0.minPoolSize}"/>
        <property name="autoCommitOnClose" value="${c3p0.autoCommitOnClose}"/>
        <property name="checkoutTimeout" value="${c3p0.checkoutTimeout}"/>
        <property name="acquireRetryAttempts" value="${c3p0.acquireRetryAttempts}"/>
    </bean>

    <!-- 配置SqlSessionFactory對象 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 注入數(shù)據(jù)庫連接池 -->
        <property name="dataSource" ref="dataSource"/>
        <!-- 掃描model包 使用別名 -->
        <property name="typeAliasesPackage" value="com.ssm.learn.pojo"/>
        <!-- 掃描sql配置文件:mapper需要的xml文件 -->
        <property name="mapperLocations" value="classpath:com/ssm/learn/dao/mapper/*.xml"/>
    </bean>

    <!-- 配置掃描Dao接口包忆某,動態(tài)實現(xiàn)Dao接口,注入到spring容器中 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 注入sqlSessionFactory -->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        <!-- 給出需要掃描Dao接口包 -->
        <property name="basePackage" value="com.ssm.learn.dao"/>
    </bean>

    <!-- 配置事務(wù)管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <!-- 注入數(shù)據(jù)庫連接池 -->
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!-- 配置基于注解的聲明式事務(wù) -->
    <tx:annotation-driven transaction-manager="transactionManager"/>

</beans>

web.xml文件(在webapp.WEB-INF下)

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         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">

  <display-name>ChatRobot</display-name>
  <description>ChatRobot_Alpha_0.0.1</description>

  <!-- 編碼過濾器 -->
  <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!-- 配置DispatcherServlet -->
  <servlet>
    <servlet-name>SpringMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!-- 配置springMVC需要加載的配置文件-->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-*.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    <async-supported>true</async-supported>
  </servlet>
  <!--<servlet>-->
    <!--<servlet-name>UserController</servlet-name>-->
    <!--<servlet-class>com.ssm.learn.controller.UserController</servlet-class>-->
  <!--</servlet>-->
  <servlet-mapping>
    <servlet-name>SpringMVC</servlet-name>
    <!-- 匹配所有請求阔蛉,此處也可以配置成 *.do 形式 -->
    <url-pattern>/</url-pattern>
  </servlet-mapping>

  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>

</web-app>

index.html(先用一個html測試一下)

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>test</title>
</head>
<script>
    function selectUser() {
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function () {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                document.getElementById("test").innerHTML = xmlhttp.responseText;
            }
        }
        xmlhttp.open("POST", "user/showUser.do", true);
        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlhttp.send("id=1");
    }
</script>
<body>
<p id="test">Hello World!</p>
<button type="button" onclick="selectUser()">onclick test</button>
</body>
</html>

配置tomcat服務(wù)器

添加tomcat服務(wù)器弃舒,點擊:


點擊配置

點左上角+,選擇tomcat状原,local聋呢。
添加tomcat

點擊configure,選擇tomcat的根目錄颠区。
添加tomcat

到第二個標(biāo)簽Deployment下削锰,點擊+,點擊Artifact毕莱,選擇exploded那個器贩,ok。
配置tomcat

Application context填項目名央串,帶/號磨澡,上面填項目名碗啄。
填項目名

這時貓就出來了质和,點擊第一個按鈕運行。
運行

運行效果

運行效果1:
運行效果

點擊onclick test稚字,成功讀取數(shù)據(jù)庫:
點擊

結(jié)束語

搭建ssm框架是項目的第一步饲宿。我在搭這個時找了很多博客,資料胆描,每個人的博客或多或少有不知瘫想。我希望通過這次記錄一下搭建框架的流程,給后來者幫助昌讲。

參考資料

http://www.reibang.com/p/8e307939dd67
https://blog.csdn.net/u010740881/article/details/79480500
https://blog.csdn.net/qq598535550/article/details/51703190

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末国夜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子短绸,更是在濱河造成了極大的恐慌车吹,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件醋闭,死亡現(xiàn)場離奇詭異窄驹,居然都是意外死亡,警方通過查閱死者的電腦和手機证逻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進店門乐埠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事丈咐∪鹧郏” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵棵逊,是天一觀的道長负拟。 經(jīng)常有香客問我,道長歹河,這世上最難降的妖魔是什么掩浙? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮秸歧,結(jié)果婚禮上厨姚,老公的妹妹穿的比我還像新娘。我一直安慰自己键菱,他們只是感情好谬墙,可當(dāng)我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著经备,像睡著了一般拭抬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上侵蒙,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天造虎,我揣著相機與錄音,去河邊找鬼纷闺。 笑死算凿,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的犁功。 我是一名探鬼主播氓轰,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼浸卦!你這毒婦竟也來了署鸡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤限嫌,失蹤者是張志新(化名)和其女友劉穎靴庆,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體萤皂,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡撒穷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了裆熙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片端礼。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡禽笑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蛤奥,到底是詐尸還是另有隱情佳镜,我是刑警寧澤,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布凡桥,位于F島的核電站蟀伸,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏缅刽。R本人自食惡果不足惜啊掏,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望衰猛。 院中可真熱鬧迟蜜,春花似錦、人聲如沸啡省。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽卦睹。三九已至畦戒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間结序,已是汗流浹背障斋。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留笼痹,地道東北人配喳。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓踩窖,卻偏偏與公主長得像章鲤,于是被迫代替她去往敵國和親锐帜。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,647評論 2 354

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理救赐,服務(wù)發(fā)現(xiàn),斷路器只磷,智...
    卡卡羅2017閱讀 134,652評論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,806評論 6 342
  • 你喜歡車水馬龍 追求起伏跌宕 我愛慕人面桃花 渴望彩筆斷腸 你的行囊裝著大街小巷 我的懷里揣著春江明月 我們萍水相...
    吾乃荊蠻閱讀 204評論 0 6
  • 兩個年輕人相愛了 銀河系像一枚戒指 將兩個年輕人捏在了一起 年輕人的血管很密 腿敏捷 像一把剪刀 年輕人的口袋總是...
    我是不是蝎大人閱讀 401評論 0 1
  • UIGestureRecognizer是一個抽象類经磅,定義了所有手勢的基本行為,它有6個子類處理具體的手勢:1.UI...
    輕斟淺醉17閱讀 1,519評論 3 3