需求分析->功能设计->数据库设计

环境要求

环境

  • IDEA
  • MySQL 5.7.19
  • Tomcat 9
  • Maven 3.6

要求

  • 熟练掌握MySQL数据库
  • 熟练掌握Spring,JavaWeb及MyBatis知识
  • 简单的前端知识

数据库环境

  1. CREATE DATABASE `ssm`CHARACTER SET utf8 COLLATE utf8_general_ci;
  2. USE `ssm`;
  3. CREATE TABLE `ssm`.`books` ( `book_id` INT(10) NOT NULL AUTO_INCREMENT COMMENT '书id', `book_name` VARCHAR(100) NOT NULL COMMENT '书名', `book_count` INT(10) NOT NULL COMMENT '数量', `book_detail` VARCHAR(1000) NOT NULL COMMENT '描述', PRIMARY KEY (`book_id`) ) ENGINE=INNODB CHARSET=utf8 COLLATE=utf8_general_ci;
  4. INSERT INTO `ssm`.`books` (`book_name`, `book_count`, `book_detail`) VALUES ('Java', '1', '从入门到放弃');
  5. INSERT INTO `ssm`.`books` (`book_name`, `book_count`, `book_detail`) VALUES ('MySQL', '11', '从删库到跑路');
  6. INSERT INTO `ssm`.`books` (`book_name`, `book_count`, `book_detail`) VALUES ('Linux', '5', 'j');
  7. SELECT * FROM books LIMIT 0, 1000;

基本环境搭建

创建maven项目


pom.xml添加依赖,添加资源导出

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>com.qing</groupId>
  7. <artifactId>ssm</artifactId>
  8. <version>1.0-SNAPSHOT</version>
  9. <dependencies>
  10. <!-- https://mvnrepository.com/artifact/junit/junit -->
  11. <dependency>
  12. <groupId>junit</groupId>
  13. <artifactId>junit</artifactId>
  14. <version>4.13.2</version>
  15. </dependency>
  16. <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
  17. <dependency>
  18. <groupId>org.projectlombok</groupId>
  19. <artifactId>lombok</artifactId>
  20. <version>1.18.20</version>
  21. </dependency>
  22. <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
  23. <dependency>
  24. <groupId>mysql</groupId>
  25. <artifactId>mysql-connector-java</artifactId>
  26. <version>5.1.49</version>
  27. </dependency>
  28. <!-- https://mvnrepository.com/artifact/com.mchange/c3p0 -->
  29. <dependency>
  30. <groupId>com.mchange</groupId>
  31. <artifactId>c3p0</artifactId>
  32. <version>0.9.5.5</version>
  33. </dependency>
  34. <!-- https://mvnrepository.com/artifact/javax.servlet/servlet-api -->
  35. <dependency>
  36. <groupId>javax.servlet</groupId>
  37. <artifactId>servlet-api</artifactId>
  38. <version>2.5</version>
  39. </dependency>
  40. <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/jsp-api -->
  41. <dependency>
  42. <groupId>javax.servlet.jsp</groupId>
  43. <artifactId>jsp-api</artifactId>
  44. <version>2.2</version>
  45. </dependency>
  46. <!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
  47. <dependency>
  48. <groupId>javax.servlet</groupId>
  49. <artifactId>jstl</artifactId>
  50. <version>1.2</version>
  51. </dependency>
  52. <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
  53. <dependency>
  54. <groupId>org.mybatis</groupId>
  55. <artifactId>mybatis</artifactId>
  56. <version>3.5.7</version>
  57. </dependency>
  58. <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
  59. <dependency>
  60. <groupId>org.mybatis</groupId>
  61. <artifactId>mybatis-spring</artifactId>
  62. <version>2.0.6</version>
  63. </dependency>
  64. <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
  65. <dependency>
  66. <groupId>org.springframework</groupId>
  67. <artifactId>spring-webmvc</artifactId>
  68. <version>5.3.9</version>
  69. </dependency>
  70. <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
  71. <dependency>
  72. <groupId>org.springframework</groupId>
  73. <artifactId>spring-jdbc</artifactId>
  74. <version>5.3.9</version>
  75. </dependency>
  76. <!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
  77. <dependency>
  78. <groupId>org.aspectj</groupId>
  79. <artifactId>aspectjweaver</artifactId>
  80. <version>1.9.7</version>
  81. <scope>runtime</scope>
  82. </dependency>
  83. </dependencies>
  84. <!--配置resources,防止资源导出失败问题-->
  85. <build>
  86. <resources>
  87. <resource>
  88. <directory>src/main/resources</directory>
  89. <includes>
  90. <include>**/*.properties</include>
  91. <include>**/*.xml</include>
  92. </includes>
  93. <filtering>true</filtering>
  94. </resource>
  95. <resource>
  96. <directory>src/main/java</directory>
  97. <includes>
  98. <include>**/*.properties</include>
  99. <include>**/*.xml</include>
  100. </includes>
  101. <filtering>true</filtering>
  102. </resource>
  103. </resources>
  104. </build>
  105. </project>

idea连接数据库


提交项目到Git

  1. git@gitee.com:wl3pbzhyq/ssm.git

创建基础包

创建配置文件

db.properties

  1. driver=com.mysql.jdbc.Driver
  2. # 如果使用的是MySQL8.0+,增加一个时区的配置:&serverTimezone=Asia/Shanghai
  3. url=jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8
  4. username=root
  5. password=123456

mybatis-config.xml

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <!--核心配置文件-->
  6. <configuration>
  7. <settings>
  8. <setting name="logImpl" value="STDOUT_LOGGING"/>
  9. <!--开启驼峰映射-->
  10. <setting name="mapUnderscoreToCamelCase" value="true"/>
  11. </settings>
  12. <!--别名-->
  13. <typeAliases>
  14. <package name="com.qing.pojo"/>
  15. </typeAliases>
  16. </configuration>

applicationContext.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. https://www.springframework.org/schema/beans/spring-beans.xsd">
  6. </beans>

创建实体类

  1. package com.qing.pojo;
  2. import lombok.AllArgsConstructor;
  3. import lombok.Data;
  4. import lombok.NoArgsConstructor;
  5. @Data
  6. @AllArgsConstructor
  7. @NoArgsConstructor
  8. public class Books {
  9. private int bookId;
  10. private String bookName;
  11. private int bookCount;
  12. private String bookDetail;
  13. }

创建Mapper接口和Mapper.xml

  1. package com.qing.dao;
  2. import com.qing.pojo.Books;
  3. import org.apache.ibatis.annotations.Param;
  4. import java.util.List;
  5. public interface BooksMapper {
  6. /**
  7. * 新增书
  8. * @param books
  9. * @return
  10. */
  11. int add(Books books);
  12. /**
  13. * 根据Id删除书
  14. * @param bookId
  15. * @return
  16. */
  17. int deleteById(@Param("bookId") int bookId);
  18. /**
  19. * 修改书
  20. * @param books
  21. * @return
  22. */
  23. int update(Books books);
  24. /**
  25. * 根据Id获取书
  26. * @param bookId
  27. * @return
  28. */
  29. Books getBooksById(@Param("bookId") int bookId);
  30. /**
  31. * 获取全部书
  32. * @return
  33. */
  34. List<Books> listBooks();
  35. }
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.qing.dao.BooksMapper">
  6. <!--新增书-->
  7. <insert id="add" parameterType="Books">
  8. insert into ssm.books(book_name, book_count, book_detail)
  9. values (#{bookName},#{bookCount},#{bookDetail})
  10. </insert>
  11. <!--根据Id删除书-->
  12. <delete id="deleteById" parameterType="int">
  13. delete from ssm.books where book_id = #{bookId}
  14. </delete>
  15. <!--修改书-->
  16. <update id="update" parameterType="Books">
  17. update ssm.books
  18. set book_name=#{bookName},book_count=#{bookCount},book_detail=#{bookDetail}
  19. where book_id=#{bookId}
  20. </update>
  21. <!--根据Id获取书-->
  22. <select id="getBooksById" parameterType="int" resultType="Books">
  23. select * from ssm.books
  24. where book_id=#{bookId}
  25. </select>
  26. <!--获取全部书-->
  27. <select id="listBooks" resultType="Books">
  28. select * from ssm.books
  29. </select>
  30. </mapper>

注册Mapper到mybatis-config.xml

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <!--核心配置文件-->
  6. <configuration>
  7. <settings>
  8. <setting name="logImpl" value="STDOUT_LOGGING"/>
  9. </settings>
  10. <!--别名-->
  11. <typeAliases>
  12. <package name="com.qing.pojo"/>
  13. </typeAliases>
  14. <!-- 将包内的映射器接口实现全部注册为映射器 -->
  15. <mappers>
  16. <package name="com.qing.dao"/>
  17. </mappers>
  18. </configuration>

创建Service接口和实现类

  1. package com.qing.service;
  2. import com.qing.pojo.Books;
  3. import java.util.List;
  4. public interface BooksService {
  5. /**
  6. * 新增书
  7. * @param books
  8. * @return
  9. */
  10. int add(Books books);
  11. /**
  12. * 根据Id删除书
  13. * @param bookId
  14. * @return
  15. */
  16. int deleteById(int bookId);
  17. /**
  18. * 修改书
  19. * @param books
  20. * @return
  21. */
  22. int update(Books books);
  23. /**
  24. * 根据Id获取书
  25. * @param bookId
  26. * @return
  27. */
  28. Books getBooksById(int bookId);
  29. /**
  30. * 获取全部书
  31. * @return
  32. */
  33. List<Books> listBooks();
  34. }
  1. package com.qing.service;
  2. import com.qing.dao.BooksMapper;
  3. import com.qing.pojo.Books;
  4. import java.util.List;
  5. public class BooksServiceImpl implements BooksService {
  6. // service调dao层,组合Dao
  7. private BooksMapper booksMapper;
  8. public void setBooksMapper(BooksMapper booksMapper) {
  9. this.booksMapper = booksMapper;
  10. }
  11. public int add(Books books) {
  12. return booksMapper.add(books);
  13. }
  14. public int deleteById(int bookId) {
  15. return booksMapper.deleteById(bookId);
  16. }
  17. public int update(Books books) {
  18. return booksMapper.update(books);
  19. }
  20. public Books getBooksById(int bookId) {
  21. return booksMapper.getBooksById(bookId);
  22. }
  23. public List<Books> listBooks() {
  24. return booksMapper.listBooks();
  25. }
  26. }

Spring配置文件

创建配置文件 spring-dao.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
  7. <!--关联数据库配置文件-->
  8. <context:property-placeholder location="classpath:db.properties"/>
  9. <!--连接池
  10. dbcp: 半自动化操作,不能自动连接
  11. c3p0: 自动化操作,自动化的加载配置文件,并且可以自动设置到对象中
  12. druid : hikari
  13. -->
  14. <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  15. <property name="driverClass" value="${jdbc.driver}"/>
  16. <property name="jdbcUrl" value="${jdbc.url}"/>
  17. <property name="user" value="${jdbc.username}"/>
  18. <property name="password" value="${jdbc.password}"/>
  19. <!--c3p0连接池的私有属性-->
  20. <property name="maxPoolSize" value="30"/>
  21. <property name="minPoolSize" value="10"/>
  22. <!--关闭连接后不自动commit-->
  23. <property name="autoCommitOnClose" value="false"/>
  24. <!--获取连接超时时间-->
  25. <property name="checkoutTimeout" value="10000"/>
  26. <!--获取连接失败重试次数-->
  27. <property name="acquireRetryAttempts" value="2"/>
  28. </bean>
  29. <!--sqlSessionFactory-->
  30. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  31. <property name="dataSource" ref="dataSource"/>
  32. <!--绑定mybatis的配置文件-->
  33. <property name="configLocation" value="classpath:mybatis-config.xml"/>
  34. </bean>
  35. <!--配置dao接口扫描包,动态的实现Dao接口注入到spring容器中-->
  36. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  37. <!--注入sqlSessionFactory-->
  38. <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
  39. <!--要扫描的dao包-->
  40. <property name="basePackage" value="com.qing.dao"/>
  41. </bean>
  42. </beans>

创建配置文件 spring-service.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:tx="http://www.springframework.org/schema/tx"
  6. xmlns:aop="http://www.springframework.org/schema/aop"
  7. xsi:schemaLocation="http://www.springframework.org/schema/beans
  8. https://www.springframework.org/schema/beans/spring-beans.xsd
  9. http://www.springframework.org/schema/context
  10. https://www.springframework.org/schema/context/spring-context.xsd
  11. http://www.springframework.org/schema/tx
  12. http://www.springframework.org/schema/tx/spring-tx.xsd
  13. http://www.springframework.org/schema/aop
  14. https://www.springframework.org/schema/aop/spring-aop.xsd">
  15. <!--扫描service下的包-->
  16. <context:component-scan base-package="com.qing.service"/>
  17. <!--将业务类注入到Spring,通过配置,也可以通过注解实现-->
  18. <bean id="BookServiceImpl" class="com.qing.service.BooksServiceImpl">
  19. <property name="booksMapper" ref="booksMapper"/>
  20. </bean>
  21. <!--声明式事务配置-->
  22. <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  23. <!--注入数据源-->
  24. <property name="dataSource" ref="dataSource"/>
  25. </bean>
  26. <!--aop事务支持-->
  27. <!--结合aop实现事务的织入-->
  28. <!--配置事务通知-->
  29. <tx:advice id="txAdvice" transaction-manager="transactionManager">
  30. <!--给那些方法配置事务-->
  31. <!--配置事务的传播特性-->
  32. <tx:attributes>
  33. <tx:method name="*" propagation="REQUIRED"/>
  34. </tx:attributes>
  35. </tx:advice>
  36. <!--配置事务切入-->
  37. <aop:config>
  38. <aop:pointcut id="txPointCout" expression="execution(* com.qing.dao.*.*(..))"/>
  39. <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCout"/>
  40. </aop:config>
  41. </beans>

创建配置文件 spring-mvc.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:mvc="http://www.springframework.org/schema/mvc"
  5. xmlns:context="http://www.springframework.org/schema/context"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans
  7. https://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://www.springframework.org/schema/mvc
  9. http://www.springframework.org/schema/mvc/spring-mvc.xsd
  10. http://www.springframework.org/schema/context
  11. https://www.springframework.org/schema/context/spring-context.xsd">
  12. <!--注解驱动-->
  13. <mvc:annotation-driven/>
  14. <!--静态资源过滤-->
  15. <mvc:default-servlet-handler/>
  16. <!--扫描包-->
  17. <context:component-scan base-package="com.qing.controller"/>
  18. <!--视图解析器-->
  19. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  20. <property name="prefix" value="/WEB-INF/jsp/"/>
  21. <property name="suffix" value=".jsp"/>
  22. </bean>
  23. </beans>

applicationContext.xml导入spring-dao.xml spring-service.xml spring-mvc.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. https://www.springframework.org/schema/beans/spring-beans.xsd">
  6. <import resource="classpath:spring-dao.xml"/>
  7. <import resource="classpath:spring-service.xml"/>
  8. <import resource="classpath:spring-mvc.xml"/>
  9. </beans>

项目添加web框架支持


配置web.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  5. version="4.0">
  6. <!--DispatchServlet-->
  7. <servlet>
  8. <servlet-name>spingmvc</servlet-name>
  9. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  10. <init-param>
  11. <param-name>contextConfigLocation</param-name>
  12. <param-value>classpath:applicationContext.xml</param-value>
  13. </init-param>
  14. <load-on-startup>1</load-on-startup>
  15. </servlet>
  16. <servlet-mapping>
  17. <servlet-name>spingmvc</servlet-name>
  18. <url-pattern>/</url-pattern>
  19. </servlet-mapping>
  20. <!--乱码过滤-->
  21. <filter>
  22. <filter-name>encodingFilter</filter-name>
  23. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  24. <init-param>
  25. <param-name>encoding</param-name>
  26. <param-value>utf-8</param-value>
  27. </init-param>
  28. </filter>
  29. <filter-mapping>
  30. <filter-name>encodingFilter</filter-name>
  31. <url-pattern>/*</url-pattern>
  32. </filter-mapping>
  33. <session-config>
  34. <session-timeout>15</session-timeout>
  35. </session-config>
  36. </web-app>

创建Controller

  1. package com.qing.controller;
  2. import com.qing.pojo.Books;
  3. import com.qing.service.BooksService;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.beans.factory.annotation.Qualifier;
  6. import org.springframework.stereotype.Controller;
  7. import org.springframework.ui.Model;
  8. import org.springframework.web.bind.annotation.RequestMapping;
  9. import java.util.List;
  10. @Controller
  11. @RequestMapping("/books")
  12. public class BooksController {
  13. @Autowired
  14. @Qualifier("BookServiceImpl")
  15. private BooksService booksService;
  16. @RequestMapping("/listBooks")
  17. public String listBooks(Model model) {
  18. List<Books> list = booksService.listBooks();
  19. model.addAttribute("list",list);
  20. return "listBooks";
  21. }
  22. }

创建首页和书库页

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <html>
  3. <head>
  4. <title>首页</title>
  5. </head>
  6. <body>
  7. <h1><a href="${pageContext.request.contextPath}/books/listBooks">进入书库</a></h1>
  8. </body>
  9. </html>
  1. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  2. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  3. <html>
  4. <head>
  5. <title>书库</title>
  6. </head>
  7. <body>
  8. <h1>书库</h1>
  9. <div>
  10. <table class="table table-hover table-striped">
  11. <thead>
  12. <tr>
  13. <th>书籍编号</th>
  14. <th>书籍名称</th>
  15. <th>书籍数量</th>
  16. <th>书籍描述</th>
  17. </tr>
  18. </thead>
  19. <tbody>
  20. <c:forEach var="book" items="${list}">
  21. <tr>
  22. <td>${book.bookId}</td>
  23. <td>${book.bookName}</td>
  24. <td>${book.bookCount}</td>
  25. <td>${book.bookDetail}</td>
  26. </tr>
  27. </c:forEach>
  28. </tbody>
  29. </table>
  30. </div>
  31. </body>
  32. </html>

Artifacts中WEB-INF下创建lib,并选择jar

配置Tomcat,并测试



110_SSM框架的更多相关文章

  1. 避免重复造轮子的UI自动化测试框架开发

    一懒起来就好久没更新文章了,其实懒也还是因为忙,今年上半年的加班赶上了去年一年的加班,加班不息啊,好了吐槽完就写写一直打算继续的自动化开发 目前各种UI测试框架层出不穷,但是万变不离其宗,驱动PC浏览 ...

  2. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  3. 旺财速啃H5框架之Bootstrap(五)

    在上一篇<<旺财速啃H5框架之Bootstrap(四)>>做了基本的框架,<<旺财速啃H5框架之Bootstrap(二)>>篇里也大体认识了bootst ...

  4. Angular企业级开发(5)-项目框架搭建

    1.AngularJS Seed项目目录结构 AngularJS官方网站提供了一个angular-phonecat项目,另外一个就是Angular-Seed项目.所以大多数团队会基于Angular-S ...

  5. Scrapy框架爬虫初探——中关村在线手机参数数据爬取

    关于Scrapy如何安装部署的文章已经相当多了,但是网上实战的例子还不是很多,近来正好在学习该爬虫框架,就简单写了个Spider Demo来实践.作为硬件数码控,我选择了经常光顾的中关村在线的手机页面 ...

  6. 制作类似ThinkPHP框架中的PATHINFO模式功能

    一.PATHINFO功能简述 搞PHP的都知道ThinkPHP是一个免费开源的轻量级PHP框架,虽说轻量但它的功能却很强大.这也是我接触学习的第一个框架.TP框架中的URL默认模式即是PathInfo ...

  7. 旺财速啃H5框架之Bootstrap(四)

    上一篇<<旺财速啃H5框架之Bootstrap(三)>>已经把导航做了,接下来搭建内容框架.... 对于不规整的网页,要做成自适应就有点玩大了.... 例如下面这种版式的页面. ...

  8. 一起学 Java(三) 集合框架、数据结构、泛型

    一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...

  9. Hibernatel框架关联映射

    Hibernatel框架关联映射 Hibernate程序执行流程: 1.集合映射 需求:网络购物时,用户购买商品,填写地址 每个用户会有不确定的地址数目,或者只有一个或者有很多.这个时候不能把每条地址 ...

随机推荐

  1. 8.3考试总结(NOIP模拟19)[最长不下降子序列·完全背包问题·最近公共祖先]

    一定要保护自己的梦想,即使牺牲一切. 前言 把人给考没了... 看出来 T1 是一个周期性的东西了,先是打了一个暴力,想着打完 T2 T3 暴力就回来打.. 然后,就看着 T2 上头了,后来发现是看错 ...

  2. Java中Arrays数组的定义与使用

    初始化 Java中数组是固定长度,数组变量是个对象. NullPointerException 空指针异常. ArrayIndexOutOfBoundsException 索引值越界. 数组三种初始化 ...

  3. Android菜鸟进字节跳动,居然是看了这个......

    谈谈我的真实感受吧- 程序员真的是需要将终生学习贯彻到底的职业,一旦停止学习,离被淘汰,也就不远了. 金三银四.金九银十跳槽季,这是一个千年不变的话题,每到这个时候,很多人都会临阵磨枪,相信不快也光. ...

  4. spring学习08(声明式事务)

    11.声明式事务 11.1 回顾事务 事务在项目开发过程非常重要,涉及到数据的一致性的问题,不容马虎! 事务管理是企业级应用程序开发中必备技术,用来确保数据的完整性和一致性. 事务就是把一系列的动作当 ...

  5. Linux性能优化-平均负载

    Linux性能优化-平均负载 目录 Linux性能优化-平均负载 平均负载的含义 平均负载为多少时合理 平均负载与 CPU 使用率 平均负载案例分析 场景一:CPU 密集型进程 场景二:I/O 密集型 ...

  6. vue3 自己做一个轻量级状态管理,带跟踪功能,知道是谁改的,还能定位代码。

    上一篇 https://www.cnblogs.com/jyk/p/14706005.html 介绍了一个自己做的轻量级的状态管理,好多网友说,状态最重要的是跟踪功能,不能跟踪算啥状态管理? 因为vu ...

  7. SQL 练习8

    查询「李」姓老师的数量 SELECT Tname,COUNT(Tname)数量 from Teacher GROUP BY tname HAVING Tname LIKE '李%'

  8. NOIP 模拟 $15\; \text{夜莺与玫瑰}$

    题解 一道很妙的题,让求对于一个矩阵中,两点相连成线,有多少条直线,他们的交集是有限集. 转化一下题目,发现水平和竖直的只有 \(n+m\) 条,而左斜和右斜的条数是相同的,所以我们只需求出左或右中的 ...

  9. [1.1W字] 复习: CSS 9个背景属性&6种渐变函数, 学会可以手写实现AI中强大的"任意渐变"! #Archives009

    Title/ CSS Background&Gradient完全指南 #Archives009 序: 关于 background 属性, 了解点CSS的人总会知道个大概. 但是你肯定多半还有点 ...

  10. Centos7上yum安装mongodb4-2

    vim /etc/yum.repos.d/mongodb-org-4.2.repo [mongodb-org-4.2] name=MongoDB Repository baseurl=https:// ...