三大框架整合ssm:SpringMVC + Spring + Mybatis

来源:互联网 发布:高清网络红外摄像头 编辑:程序博客网 时间:2024/04/29 20:20

github地址: https://github.com/laichilueng/ssm

首先打开IDE ,我这边用的是myeclipse10, 创建一个web项目,添加maven支持。

这里写图片描述

接着我们修改pom.xml文件,使用maven管理我们的jar包,这里可以参考我的pom.xml文件

pom.xml

<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/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <groupId>SSM</groupId>    <artifactId>SSM</artifactId>    <version>0.0.1-SNAPSHOT</version>    <packaging>war</packaging>    <name>SSM</name>    <description />    <properties>        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>    </properties>    <dependencies>        <!-- 单元测试 -->        <dependency>            <groupId>junit</groupId>            <artifactId>junit</artifactId>            <version>4.11</version>        </dependency>        <!-- 1.日志 -->        <!-- 实现slf4j接口并整合 -->        <dependency>            <groupId>ch.qos.logback</groupId>            <artifactId>logback-classic</artifactId>            <version>1.1.1</version>        </dependency>        <!-- 2.数据库 -->        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <version>5.1.37</version>            <scope>runtime</scope>        </dependency>        <dependency>            <groupId>c3p0</groupId>            <artifactId>c3p0</artifactId>            <version>0.9.1.2</version>        </dependency>        <!-- DAO: MyBatis -->        <dependency>            <groupId>org.mybatis</groupId>            <artifactId>mybatis</artifactId>            <version>3.3.0</version>        </dependency>        <dependency>            <groupId>org.mybatis</groupId>            <artifactId>mybatis-spring</artifactId>            <version>1.2.3</version>        </dependency>        <!-- 3.Servlet web -->        <dependency>            <groupId>taglibs</groupId>            <artifactId>standard</artifactId>            <version>1.1.2</version>        </dependency>        <dependency>            <groupId>jstl</groupId>            <artifactId>jstl</artifactId>            <version>1.2</version>        </dependency>        <dependency>            <groupId>com.fasterxml.jackson.core</groupId>            <artifactId>jackson-databind</artifactId>            <version>2.5.4</version>        </dependency>        <dependency>            <groupId>javax.servlet</groupId>            <artifactId>javax.servlet-api</artifactId>            <version>3.1.0</version>        </dependency>        <!-- 4.Spring -->        <!-- 1)Spring核心 -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-core</artifactId>            <version>4.1.7.RELEASE</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-beans</artifactId>            <version>4.1.7.RELEASE</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-context</artifactId>            <version>4.1.7.RELEASE</version>        </dependency>        <!-- 2)Spring DAO层 -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-jdbc</artifactId>            <version>4.1.7.RELEASE</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-tx</artifactId>            <version>4.1.7.RELEASE</version>        </dependency>        <!-- 3)Spring web -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-web</artifactId>            <version>4.1.7.RELEASE</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-webmvc</artifactId>            <version>4.1.7.RELEASE</version>        </dependency>        <!-- 4)Spring test -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-test</artifactId>            <version>4.1.7.RELEASE</version>        </dependency>        <!-- redis客户端:Jedis -->        <dependency>            <groupId>redis.clients</groupId>            <artifactId>jedis</artifactId>            <version>2.7.3</version>        </dependency>        <dependency>            <groupId>com.dyuproject.protostuff</groupId>            <artifactId>protostuff-core</artifactId>            <version>1.0.8</version>        </dependency>        <dependency>            <groupId>com.dyuproject.protostuff</groupId>            <artifactId>protostuff-runtime</artifactId>            <version>1.0.8</version>        </dependency>        <!-- Map工具类 -->        <dependency>            <groupId>commons-collections</groupId>            <artifactId>commons-collections</artifactId>            <version>3.2</version>        </dependency>        <dependency>            <groupId>org.apache.openejb</groupId>            <artifactId>javaee-api</artifactId>            <version>5.0-1</version>            <scope>provided</scope>        </dependency>        <dependency>            <groupId>javax.servlet</groupId>            <artifactId>jstl</artifactId>            <version>1.2</version>            <scope>provided</scope>        </dependency>        <dependency>            <groupId>javax.servlet.jsp</groupId>            <artifactId>jsp-api</artifactId>            <version>2.1</version>            <scope>provided</scope>        </dependency>    </dependencies>    <build>        <plugins>            <plugin>                <artifactId>maven-war-plugin</artifactId>            </plugin>            <plugin>                <artifactId>maven-compiler-plugin</artifactId>                <configuration>                    <source>1.5</source>                    <target>1.5</target>                </configuration>            </plugin>        </plugins>        <finalName>ssm</finalName>    </build></project>

然后我们创建对应的目录文件夹以及对应的包,并将resources和java添加到source里面。

创建后的目录
这里写图片描述

到了这里,目录的框架已经出来了,现在我们开始写配置文件。

首先我们配置mybatis,先在spring的文件夹里面创建一个spring-dao.xml

  1. 读入数据库连接相关参数(可选)
  2. 配置数据连接池
  3. 配置连接属性,可以不读配置项文件直接在这里写死
  4. 配置c3p0,只配了几个常用的
  5. 配置SqlSessionFactory对象(mybatis)

spring-dao.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"    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">    <!-- 配置整合mybatis过程 -->    <!-- 1.配置数据库相关参数properties的属性:${url} -->    <context:property-placeholder location="classpath:jdbc.properties" />    <!-- 2.数据库连接池 -->    <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}" />        <!-- c3p0连接池的私有属性 -->        <property name="maxPoolSize" value="30" />        <property name="minPoolSize" value="10" />        <!-- 关闭连接后不自动commit -->        <property name="autoCommitOnClose" value="false" />        <!-- 获取连接超时时间 -->        <property name="checkoutTimeout" value="10000" />        <!-- 当获取连接失败重试次数 -->        <property name="acquireRetryAttempts" value="2" />        <property name="automaticTestTable" value="test_c3p0"/>        <property name="idleConnectionTestPeriod" value="100000" />    </bean>    <!-- 3.配置SqlSessionFactory对象 -->    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">        <!-- 注入数据库连接池 -->        <property name="dataSource" ref="dataSource" />        <!-- 配置MyBaties全局配置文件:mybatis-config.xml -->        <property name="configLocation" value="classpath:mybatis-config.xml" />        <!-- 扫描entity包 使用别名 -->        <property name="typeAliasesPackage" value="com.dnf.entity" />        <!-- 扫描sql配置文件:mapper需要的xml文件 -->        <property name="mapperLocations" value="classpath:mapper/*.xml" />    </bean>    <!-- 4.配置扫描Dao接口包,动态实现Dao接口,注入到spring容器中 -->    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">        <!-- 注入sqlSessionFactory -->        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />        <!-- 给出需要扫描Dao接口包 -->        <property name="basePackage" value="com.dnf.dao" />    </bean></beans>

然后在resources文件夹里面创建一个文件jdbc.properties,用来填写数据库信息

jdbc.properties

jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://127.0.0.1:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=utf8jdbc.username=rootjdbc.password=123456

因为使用了mybatis,所以我们在resource文件夹里创建一个mybatis-donfig.xml,用于配置mybatis

mybatis-config.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration>    <!-- 配置全局属性 -->    <settings>        <!-- 使用jdbc的getGeneratedKeys获取数据库自增主键值 -->        <setting name="useGeneratedKeys" value="true" />        <!-- 使用列别名替换列名 默认:true -->        <setting name="useColumnLabel" value="true" />        <!-- 开启驼峰命名转换:Table{create_time} -> Entity{createTime} -->        <setting name="mapUnderscoreToCamelCase" value="true" />    </settings></configuration>

至此,mybatis的配置基本完成,下面配置service层
首先在spring里面创建spring-service.xml文件,用于:

  1. 扫描service包所有注解 @Service
  2. 配置事务管理器,把事务管理交由spring来完成
  3. 配置基于注解的声明式事务,可以直接在方法上@Transaction

spring-service.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.lzl.service" />    <!-- 配置事务管理器 -->    <bean id="transactionManager"        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">        <!-- 注入数据库连接池 -->        <property name="dataSource" ref="dataSource" />    </bean>    <!-- 配置基于注解的声明式事务 -->    <tx:annotation-driven transaction-manager="transactionManager" /></beans>

接着我们配置controller,在spring文件夹里面创建spring-mvc.xml文件

  1. 开启SpringMVC注解模式,可以使用@RequestMapping,@PathVariable,@ResponseBody等
  2. 对静态资源处理,如js,css,jpg等
  3. 配置jsp 显示ViewResolver,例如在controller中某个方法返回一个string类型的”login”,实际上会返回”/WEB-INF/login.jsp”
  4. 扫描web层 @Controller

spring-mvc.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: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.2.xsd">    <!-- 配置SpringMVC -->    <!-- 1.开启SpringMVC注解模式 -->    <!-- 简化配置: (1)自动注册DefaultAnootationHandlerMapping,AnotationMethodHandlerAdapter         (2)提供一些列:数据绑定,数字和日期的format @NumberFormat, @DateTimeFormat, xml,json默认读写支持 -->    <mvc:annotation-driven />    <!-- 2.静态资源默认servlet配置 (1)加入对静态资源的处理:js,gif,png (2)允许使用"/"做整体映射 -->    <mvc:default-servlet-handler />    <mvc:resources mapping="/resources/**" location="/resources/"/>     <!-- 3.配置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/jsp/" />        <property name="suffix" value=".jsp" />    </bean>    <!-- 4.扫描web相关的bean -->    <context:component-scan base-package="com.lzl.controller" />    <!--5. 拦截器的配置 -->    <mvc:interceptors>        <mvc:interceptor>            <!-- /**包括路径及其子路径 拦截所有controller 如果是/admin/* 拦截的是/admin/add, /admin/list,etc.                 而/admin/user/add不会被拦截 如果/admin/** 拦截/admin/user/add,/admin/add -->            <mvc:mapping path="/**" />            <!-- 由于拦截器是优先于mvc配置的静态资源路径,所以这里要使用mvc的execlude-mapping标签,否则拦截器将会拦截静态资源 这里的LoginInterceptor要自己写,可以上网查下interceptor的用法,也可以不配置该项目 -->            <mvc:exclude-mapping path="/resources/**"/>            <bean class="com.lzl.interceptors.LoginInterceptor"></bean>        </mvc:interceptor>    </mvc:interceptors>     <!--6. 全局异常配置 -->    <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">        <property name="exceptionMappings">            <props>                <prop key="java.lang.Exception">error/500</prop>                <prop key="java.lang.Throwable">error/500</prop>            </props>        </property>        <property name="statusCodes">            <props>                <prop key="errors/500">500</prop>            </props>        </property>        <!-- 设置日志输出级别,不定义则默认不输出警告等错误日志信息 -->        <property name="warnLogCategory" value="WARN"></property>        <!-- 默认错误页面,当找不到上面mappings中指定的异常对应视图时,使用本默认配置 -->        <property name="defaultErrorView" value="error/500"></property>        <!-- 默认HTTP状态码 -->        <property name="defaultStatusCode" value="500"></property>    </bean></beans>

最后就是修改web.xml文件,他位于webapp/WEB-INF下

web.xml

<?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" metadata-complete="true">    <display-name></display-name>    <welcome-file-list>        <welcome-file>index.jsp</welcome-file>    </welcome-file-list>    <!-- 配置DispatcherServlet -->    <servlet>        <servlet-name>seckill-dispatcher</servlet-name>        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>        <!-- 配置springMVC需要加载的配置文件 spring-dao.xml,spring-service.xml,spring-web.xml             Mybatis - > spring -> springmvc -->        <init-param>            <param-name>contextConfigLocation</param-name>            <param-value>classpath:spring/spring-*.xml</param-value>        </init-param>    </servlet>    <servlet-mapping>        <servlet-name>seckill-dispatcher</servlet-name>        <!-- 默认匹配所有的请求 -->        <url-pattern>/</url-pattern>    </servlet-mapping></web-app>

在开发中,我们经常使用到日志输出,所以这里配置一个日志配置文件logback.xml,同样在resource里面创建文件。

logback.xml

<?xml version="1.0" encoding="UTF-8"?><configuration debug="true">    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">        <!-- encoders are by default assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder -->        <encoder>            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>        </encoder>    </appender>    <root level="debug">        <appender-ref ref="STDOUT" />    </root></configuration>

这里写图片描述

那么到目前为止我们一共配置了7个xml文件,现在我们测试一下使用tomcat跑,看看是否出错。(tomcat的配置在这里就不说了,大伙上网学习下)

这里写图片描述

框架是能跑起来的,那么目前为止我们已经成功整合了三大框架。下面我们结合数据库来测试该框架。首先在数据库中建立一个test库,并创建一张表。

创建一个测试表给c3p0连接池做测试CREATE TABLE `test_c3p0` (  `id` int(11) NOT NULL,  PRIMARY KEY (`id`));CREATE TABLE `book` (  `id` varchar(200) NOT NULL,  `name` varchar(50) DEFAULT NULL,  `author` varchar(50) DEFAULT NULL,  `number` int(10) NOT NULL,  PRIMARY KEY (`id`));

然后往里面添加一些数据, 然后修改jdbc.properties文件,填写数据库信息,如下:

jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://127.0.0.1:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=utf8jdbc.username=rootjdbc.password=123456

在项目的entity里面创建实体类Book.java

Book.java

package com.lzl.entity;public class Book {    private String id;    private String name;    private String author;    private int number;    public String getId() {        return id;    }    public void setId(String id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getAuthor() {        return author;    }    public void setAuthor(String author) {        this.author = author;    }    public int getNumber() {        return number;    }    public void setNumber(int number) {        this.number = number;    }    @Override    public String toString() {        return "Book [id=" + id + ", name=" + name + ", author=" + author                + ", number=" + number + "]";    }}

在dao中创建接口BookDao.java

BookDao.java

package com.lzl.dao;import java.util.List;import com.lzl.entity.Book;public interface BookDao {    List<Book> query4books();}

接下来我们不需要实现这个接口,而是需要写mapper文件,这样mybatis会帮我们自动实现接口,在mapper中创建BookDao.xml

BookDao.xml

<?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"><mapper namespace="com.lzl.dao.BookDao">    <!-- 目的:为dao接口方法提供sql语句配置 -->    <select id="query4books" resultType="Book">        SELECT            id,            name,            author,            number        FROM            book    </select></mapper>

dao层写完了,那么我们写对应的test方法。因为后面的业务逻辑需要写很多测试方法,所以我们抽象出一个BaseTest类,当我们调用单元测试前,先加载三大框架的配置文件,那么在写其他测试类时,只需要继承这个BaseTest类就可以了。

在test/java里面创建BaseTest.java
BaseTest.java

package com.lzl;import org.junit.runner.RunWith;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;/** * 配置spring和junit整合,junit启动时加载springIOC容器 spring-test,junit */@RunWith(SpringJUnit4ClassRunner.class)// 告诉junit spring配置文件@ContextConfiguration({ "classpath:spring/spring-dao.xml", "classpath:spring/spring-service.xml" })public class BaseTest {}

创建TestBookDao.java

package com.lzl.dao;import java.util.ArrayList;import java.util.List;import org.junit.Test;import org.springframework.beans.factory.annotation.Autowired;import com.lzl.BaseTest;import com.lzl.entity.Book;public class TestBookDao extends BaseTest{    @Autowired    private BookDao dao;    @Test    public void testquery4books(){        List<Book> list = new ArrayList<Book>();        list = dao.query4books();        for(Book book : list){            System.out.println(book.toString());        }    }}

进行junit测试,可看到测试结果
这里写图片描述

至此,我们的dao层测试已经完成了,下面将进行service层和controller层的测试。

首先在service中创建接口BookService.java

package com.lzl.service.impl;import java.util.List;import com.lzl.entity.Book;public interface BookService {    List<Book> query4books();}

然后在service.impl中创建实现类BookServiceImpl.java

package com.lzl.service.impl;import java.util.List;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import com.lzl.dao.BookDao;import com.lzl.entity.Book;//这里一定要加上service这个注解,这样spring初始化的时候会扫描该实现类@Servicepublic class BookServiceImpl implements BookService{    private Logger logger = LoggerFactory.getLogger(this.getClass());    @Autowired    private BookDao bookDao;    @Override    public List<Book> query4books() {        // TODO Auto-generated method stub        return bookDao.query4books();    }}

接着我们创建BookController类
BookController.java

package com.lzl.controller;import java.util.List;import javax.servlet.http.HttpServletRequest;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import com.lzl.entity.Book;import com.lzl.service.impl.BookService;@Controller@RequestMapping("/")public class BookController {    private Logger logger = LoggerFactory.getLogger(this.getClass());    @Autowired    private BookService service;// 该方法将请求映射到Book.jsp这个页面上    @RequestMapping("/book")    public String toBookPage(HttpServletRequest request){        List<Book> list = service.query4books();//      这里在请求Book页面时,查询所有的book并将其存到request里面        if(list != null){            for(Book book : list){                logger.info(book.toString());            }            request.setAttribute("books", list);        }//      返回string类型,jsp渲染器会自动寻找/jsp/Book.jsp        return "Book";    }}

接着在webapp/WEB-INF/jsp中创建Book.jsp,并将数据展示

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%    String path = request.getContextPath();    String basePath = request.getScheme() + "://"            + request.getServerName() + ":" + request.getServerPort()            + path + "/";%><!-- 引入jstl库 --><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href="<%=basePath%>"><title>Book</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><link rel="stylesheet" type="text/css" href="styles.css"></head><body>    <div align="center">        <table>            <tr>                <td>id</td>                <td>name</td>                <td>author</td>                <td>number</td>            </tr>            <c:forEach var="book" items="${ books}">                <tr>                    <td>${ book.id}</td>                    <td>${ book.name}</td>                    <td>${ book.author}</td>                    <td>${ book.number}</td>                </tr>            </c:forEach>        </table>    </div></body></html>

然后请求页面
这里写图片描述


可以看到成功的把数据库中的数据取到页面中,至此三大框架测试完成。源码和jar包我已经打包放在了github上,需要的可以去下载,喜欢的请给个star。
github地址: https://github.com/laichilueng/ssm
若有什么疑问,欢迎与我联系,谢谢。

阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 新生儿喝奶老是呛到怎么办 宝宝吃母乳呛到怎么办 宝宝一直睡觉不吃奶怎么办 3个月婴儿不吃奶怎么办 新生婴儿晚上不睡觉怎么办 宝宝肚子胀不吃奶怎么办 宝宝25天不睡觉怎么办 50天婴儿不吃奶怎么办 儿子关在房间玩电脑怎么办? 宽带拨号上网账号密码忘了怎么办 双眼皮割的太宽怎么办 营业执照异常名录移除注销怎么办 工商局注册后骚扰电话怎么办 单位工作失误医保断交7年怎么办 大门对大门怎么办?巧用天官赐福 委托书公司名称打错了怎么办 招行ubank不对账怎么办 信贷公司利息高不合理怎么办 衣服上的logo掉怎么办 ui设计师接不到私活怎么办 微信打开很慢怎么办 小泰迪感冒加身上结痂怎么办 法斗眼睛肿了怎么办 地图鱼身上有白点怎么办 人被广告牌砸了怎么办 小米手机出现繁体中文英文怎么办 雅思考试把姓名写错了怎么办 房贷的流水账假怎么办 报到证报道期限过期了怎么办 注销公司公章丢了怎么办 家里的猫太调皮怎么办 孩子纹身了我该怎么办 46天婴儿感冒了怎么办 狗病了不吃东西怎么办 幼儿急诊见风了怎么办 哺乳期乳房有硬块而且疼怎么办 哺乳期乳头破裂乳房似针扎怎么办 回奶胀痛的厉害怎么办 淡水龟的壳变软了怎么办 棕色的泰迪变白怎么办 大班教案泥石流来了怎么办