Java分布式二手房项目尚好房2.0:搭建环境

一、项目介绍

1、介绍

尚好房是一个二手房管理服务平台,开放优质资源和线上能力,聚合线上线下二手房产资源,打造一个全方位二手房服务生态市场,为消费者提供优质房产服务资源。

2、核心技术

基础框架:ssm
分布式框架:ssm + Dubbo + zk
spring session redis实现session共享
图片服务器:七牛云
后台管理权限控制:spring-security
前端用户登录判断:拦截器
后台管理模板:Thymeleaf
前端技术:Vue+Axios

3、项目模块

最终分布式架构模块

shf-parent:根目录,管理子模块:

​ common-util:公共类模块

​ model:实体类模块

​ service:dubbo服务父节点

​ service-acl:权限服务模块

​ service-house:房源服务模块

​ service-user:用户服务模块

​ service-api:dubbo服务api接口

​ web:前端(dubbo服务消费者)

​ web-admin:后台管理系统

​ web-front:网站前端

模块调用关系,如图:

4、项目演示地址

尚好房后台管理系统:http://139.198.152.148:8001/
尚好房前端:http://139.198.152.148:8002/

根据演示了解项目业务

5、数据库

数据库从资源文件中获取,导入数据库,数据库表如下:

6、其他资源

如:实体类、工具类直接复制到项目模块使用,后续使用时再详细说明,其他资源需要时引入。

二、搭建环境

目前我们先搭建“尚好房”后台管理系统,该系统为单体架构:SSM框架,后续我们通过SSM架构过渡到Dubbo通信的分布式架构。

SSM单体架构模块:

shf-parent:根目录,管理子模块:

​ common-util:公共类模块

​ model:实体类模块

​ web-admin:后台管理系统

搭建SSM架构我们分三步进行:

1、搭建项目结构

2、配置依赖关系

3、配置SSM环境

4、测试SSM环境

1、搭建项目结构

1.1、搭建父工程shf-parent

shf:尚好房首字母缩写

第一步:新建项目

第二步:

第三步:

第四步:

项目结构如:

删除src目录

1.2、搭建工具类模块common-util

第一步:右键点击“shf-parent”

第二步:

第三步:

第四步:

项目结构如:

引入“资料/java工具类”相关代码

1.3、搭建实体类模块model

搭建方式如:common-util

项目结构如:

引入“资料/java实体类”相关代码

1.4、搭建项目模块web-admin

第一步:右键点击“shf-parent”

第二步:

第三步:

第四步:

项目结构如:

说明:模块web-admin还缺少webapp/WEB-INF目录及web.xml文件

第一步:在pom.xml文件中指定打包方式为war

第二步:在main下直接创建webapp/WEB-INF/web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID" version="3.0"><display-name>web</display-name></web-app>

2、配置依赖关系

2.1、shf-parent父模块管理依赖版本

修改shf-parent模块pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<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>com.atguigu</groupId><artifactId>shf-parent</artifactId><packaging>pom</packaging><version>1.0</version><modules><module>common-util</module><module>model</module><module>web-admin</module></modules><properties><java.version>1.8</java.version><spring.version>5.2.7.RELEASE</spring.version><thymeleaf.version>3.0.11.RELEASE</thymeleaf.version><pagehelper.version>4.1.4</pagehelper.version><servlet-api.version>2.5</servlet-api.version><fastjson.version>1.2.29</fastjson.version><mybatis.version>3.4.5</mybatis.version><mybatis.spring.version>1.3.1</mybatis.spring.version><mysql.version>8.0.18</mysql.version><druid.version>1.1.12</druid.version><commons-fileupload.version>1.3.1</commons-fileupload.version><slf4j-version>1.7.30</slf4j-version><logback-version>1.2.3</logback-version></properties><!-- 依赖管理 --><dependencyManagement><dependencies><!-- SpringMVC相关 --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><!--spring封装的jdbc数据库访问--><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><!--Spring提供的对AspectJ框架的整合--><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>${spring.version}</version></dependency><!--用于spring测试--><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version></dependency><!--用于springMVC模板--><dependency><groupId>org.thymeleaf</groupId><artifactId>thymeleaf-spring5</artifactId><version>${thymeleaf.version}</version></dependency><!--mybatis的分页插件--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>${pagehelper.version}</version></dependency><!-- Mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>${mybatis.version}</version></dependency><!-- Mybatis与Spring整合所需要的jar包 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>${mybatis.spring.version}</version></dependency><!-- MySql --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><!-- 连接池 --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>${druid.version}</version></dependency><!-- 文件上传组件 --><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>${commons-fileupload.version}</version></dependency><!-- fastjson --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>${fastjson.version}</version></dependency><!-- 日志 --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>${slf4j-version}</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>${logback-version}</version></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>${servlet-api.version}</version><scope>provided</scope></dependency></dependencies><build><plugins><!-- java编译插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.2</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin></plugins></build>
</project>

2.2、common-util模块

common-util模块负责:依赖与常用工具类管理

<?xml version="1.0" encoding="UTF-8"?>
<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"><parent><artifactId>shf-parent</artifactId><groupId>com.atguigu</groupId><version>1.0</version></parent><modelVersion>4.0.0</modelVersion><artifactId>common-util</artifactId><dependencies><!-- SpringMVC相关 --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId></dependency><!--spring封装的jdbc数据库访问--><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId></dependency><!--Spring提供的对AspectJ框架的整合--><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId></dependency><!--用于spring测试--><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId></dependency><!--用于springMVC模板--><dependency><groupId>org.thymeleaf</groupId><artifactId>thymeleaf-spring5</artifactId></dependency><!--mybatis的分页插件--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId></dependency><!-- Mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId></dependency><!-- Mybatis与Spring整合所需要的jar包 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId></dependency><!-- MySql --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!-- 连接池 --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId></dependency><!-- 文件上传组件 --><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId></dependency><!-- fastjson --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId></dependency><!-- 日志 --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId></dependency></dependencies></project>

2.3、web-admin模块

web-admin模块依赖:common-util与model模块

<?xml version="1.0" encoding="UTF-8"?><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"><parent><artifactId>shf-parent</artifactId><groupId>com.atguigu</groupId><version>1.0</version></parent><modelVersion>4.0.0</modelVersion><artifactId>web-admin</artifactId><packaging>war</packaging><dependencies><dependency><groupId>com.atguigu</groupId><artifactId>common-util</artifactId><version>1.0</version></dependency><dependency><groupId>com.atguigu</groupId><artifactId>model</artifactId><version>1.0</version></dependency></dependencies><build><plugins><plugin><groupId>org.eclipse.jetty</groupId><artifactId>jetty-maven-plugin</artifactId><version>9.4.15.v20190215</version><configuration><!-- 如果检测到项目有更改则自动热部署,每隔n秒扫描一次。默认为0,即不扫描--><scanIntervalSeconds>10</scanIntervalSeconds><webAppConfig><!--指定web项目的根路径,默认为/ --><contextPath>/</contextPath></webAppConfig><httpConnector><!--端口号,默认 8080--><port>8000</port></httpConnector></configuration></plugin></plugins></build>
</project>

说明:web容器我们使用jetty,与tomcat一样,jetty更轻量级。

3、配置SSM环境

操作模块:web-admin

上面我们已经添加好项目依赖关系,接下来搭建ssm环境

ssm前端模板我们使用:thymeleaf模板

3.1、添加日志文件

在resources目录添加:

logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false"><!--定义日志文件的存储地址 logs为当前项目的logs目录 还可以设置为../logs --><property name="LOG_HOME" value="logs" /><!--控制台日志, 控制台输出 --><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度,%msg:日志消息,%n是换行符--><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern></encoder></appender><!-- 日志输出级别 --><root level="DEBUG"><appender-ref ref="STDOUT" /></root>
</configuration>

3.2、SSM分层

ssm分为三层:

​ controller、service与dao层

我们为每一层分配添加一个配置文件,方便配置文件管理:

​ spring-mvc.xml

​ spring-service.xml

​ spring-dao.xml

3.3、添加dao层配置文件

添加ibatis配置文件:

在resources目录添加: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><setting name="mapUnderscoreToCamelCase" value="true"/></settings>
</configuration>

添加ibatis与spring集成的配置文件

在resources/spring目录添加: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:spring-mybatis="http://mybatis.org/schema/mybatis-spring"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring.xsd"><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"><property name="username" value="root" /><property name="password" value="root" /><property name="driverClassName" value="com.mysql.cj.jdbc.Driver" /><property name="url" value="jdbc:mysql://localhost:3306/db_house?characterEncoding=utf8&amp;serverTimezone=Asia/Shanghai&amp;allowPublicKeyRetrieval=true" /></bean><!--spring和mybatis整合的工厂bean--><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource" /><property name="typeAliasesPackage" value="com.atguigu.entity"></property><property name="configLocation" value="classpath:mybatis-config.xml" /><property name="mapperLocations"><array><value>classpath:mapper/*.xml</value></array></property></bean><!--批量扫描接口生成代理对象--><spring-mybatis:scan base-package="com.atguigu.dao"></spring-mybatis:scan></beans>

创建ibatis xml文件存放文件夹:

在resources目录添加:mapper文件夹

3.4、添加service层配置文件

在resources/spring目录添加: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:tx="http://www.springframework.org/schema/tx"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsd"><!-- 扫描service包 --><context:component-scan base-package="com.atguigu.service" ></context:component-scan><!-- 事务管理器  --><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/></bean><tx:annotation-driven transaction-manager="transactionManager"/>
</beans>

3.5、添加controller层配置文件

在resources/spring目录添加: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:aop="http://www.springframework.org/schema/aop"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsd"><!--包扫描--><context:component-scan base-package="com.atguigu.controller" /><!-- 没有匹配上的url全部按默认方式(就是直接访问)访问,避免拦截静态资源 --><mvc:default-servlet-handler/><!-- 开启mvc注解--><mvc:annotation-driven><mvc:message-converters register-defaults="true"><!-- 配置Fastjson支持 --><bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"><property name="supportedMediaTypes"><list><value>text/html;charset=UTF-8</value><value>application/json</value></list></property></bean></mvc:message-converters></mvc:annotation-driven><!--视图解析器--><bean id="templateResolver" class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver"><!--配置前缀--><property name="prefix" value="/WEB-INF/templates/"></property><!--配置后缀--><property name="suffix" value=".html"></property><!--配置编码格式--><property name="characterEncoding" value="UTF-8"></property><!--设置缓存为null--><property name="cacheable" value="false"></property><!--配置模板模式,HTML5:表示严格模式LEGACYHTML5:表示宽松模式--><property name="templateMode" value="LEGACYHTML5"></property></bean><!--配置spring的视图解析器--><bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver"><!--设置编码格式--><property name="characterEncoding" value="UTF-8"></property><!--设置模板引擎--><property name="templateEngine" ref="templateEngine"/></bean><!--配置模板引擎--><bean id="templateEngine" class="org.thymeleaf.spring5.SpringTemplateEngine"><!--引用视图解析器--><property name="templateResolver" ref="templateResolver"></property></bean>
</beans>

3.6、修改web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID" version="3.0"><display-name>web</display-name><!-- 解决post乱码 添加字符编码过滤器 --><filter><filter-name>encode</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><init-param><param-name>forceRequestEncoding</param-name><param-value>true</param-value></init-param><init-param><param-name>forceResponseEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>encode</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- 配置SpringMVC框架前端控制器 --><servlet><servlet-name>springMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/spring-mvc.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springMVC</servlet-name><url-pattern>/</url-pattern></servlet-mapping><!-- 加载spring容器 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/spring-*.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener></web-app>

4、测试SSM环境

我们用户角色为例,获取全部角色数据在页面显示

4.1、添加表

如果已经导入数据库,忽略

CREATE TABLE acl_role (
id bigint(20) NOT NULL AUTO_INCREMENT COMMENT ‘角色id’,
role_name varchar(20) NOT NULL DEFAULT ‘’ COMMENT ‘角色名称’,
role_code varchar(20) DEFAULT NULL COMMENT ‘角色编码’,
description varchar(255) DEFAULT NULL COMMENT ‘描述’,
create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ‘创建时间’,
update_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘更新时间’,
is_deleted tinyint(3) NOT NULL DEFAULT ‘0’ COMMENT ‘删除标记(0:不可用 1:可用)’,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT=‘角色’;

插入数据:

INSERT INTO acl_role (id,role_name,role_code,description,create_time,update_time,is_deleted) VALUES (1,‘系统管理员’,‘SYSTEM’,‘系统管理员’,‘2021-05-31 18:09:18’,‘2022-01-20 20:37:52’,0),(2,‘权限浏览’,‘’,‘权限浏览’,‘2021-06-01 08:38:40’,‘2022-01-20 20:40:09’,0),(3,‘权限编辑’,NULL,‘权限编辑’,‘2021-06-18 17:12:21’,‘2022-01-20 20:40:27’,0),(4,‘房源浏览’,NULL,‘房源浏览’,‘2021-09-27 09:37:13’,‘2022-01-21 15:34:38’,0),(5,‘房源编辑’,NULL,‘房源编辑’,‘2022-01-10 21:57:32’,‘2022-01-21 15:40:45’,0);

4.2、添加实体

在model模块添加实体

构建model模块是直接引入全部实体类,引入了忽略

package com.atguigu.entity;public class Role extends BaseEntity {private static final long serialVersionUID = 1L;//角色名称   private String roleName;//角色编码   private String roleCode;//描述   private String description;public void setRoleName(String value) {this.roleName = value;}public String getRoleName() {return this.roleName;}public void setRoleCode(String value) {this.roleCode = value;}public String getRoleCode() {return this.roleCode;}public void setDescription(String value) {this.description = value;}public String getDescription() {return this.description;}}

4.4、添加RoleDao

package com.atguigu.dao;import com.atguigu.entity.Role;
import java.util.List;public interface RoleDao {List<Role> findAll();}

4.4、添加RoleDao.xml映射文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.atguigu.dao.RoleDao"><!-- 用于select查询公用抽取的列 --><sql id="columns">select id,role_name,role_code,description,create_time,update_time,is_deleted</sql><!--查询所有--><select id="findAll" resultType="role"><include refid="column"></include>from acl_rolewhere is_deleted = 0</select></mapper>

4.5、添加service

package com.atguigu.service;import com.atguigu.entity.Role;import java.util.List;public interface RoleService {List<Role> findAll();
}

4.6、添加service实现

package com.atguigu.service.impl;import com.atguigu.dao.RoleDao;
import com.atguigu.entity.Role;
import com.atguigu.service.RoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class RoleServiceImpl implements RoleService {@Autowiredprivate RoleDao roleDao;public List<Role> findAll() {return roleDao.findAll();}
}

4.7、添加controller

package com.atguigu.controller;import com.atguigu.entity.Role;
import com.atguigu.service.RoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;import java.util.List;@Controller
@RequestMapping(value="/role")
@SuppressWarnings({"unchecked", "rawtypes"})
public class RoleController {@Autowiredprivate RoleService roleService;private final static String PAGE_INDEX = "role/index";/** * 列表* @param model* @return*/@RequestMappingpublic String index(ModelMap model) {List<Role> list = roleService.findAll();model.addAttribute("list", list);return PAGE_INDEX;}
}

4.8、添加页面

在WEB-INFE下创建模板总的文件夹:templates

在templates下创建角色文件夹:role

在role文件夹下创建文件:index.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<table><tr th:each="item,it : ${list}"><td class="text-center" th:text="${it.count}">11</td><td th:text="${item.roleName}">22</td><td th:text="${item.roleCode}">33</td><td th:text="${item.description}">33</td><td th:text="${#dates.format(item.createTime,'yyyy-MM-dd HH:mm:ss')}" >33</td></tr>
</table>
</body>
</html>

4.9、部署web-admin

第一步:

第二步:

4.10、访问测试

4.11、汇总

public String index(ModelMap model) {
List list = roleService.findAll();

  model.addAttribute("list", list);return PAGE_INDEX;

}
}


Java分布式二手房项目尚好房第一课 搭建环境相关推荐

  1. Java分布式二手房项目尚好房第三课 利用Dubbo拆分微服务

    Java分布式二手房项目尚好房:Apache Dubbo介绍 一.分布式RPC框架Apache Dubbo 1.软件架构的演进过程 软件架构的发展经历了由单体架构.垂直架构.SOA架构到微服务架构的演 ...

  2. Java分布式二手房项目尚好房第五课 图片上传及前端房源展示

    尚好房:图片上传 一.图片存储方案 1.介绍 在实际开发中,我们会有很多处理不同功能的服务器.例如: 应用服务器:负责部署我们的应用 数据库服务器:运行我们的数据库 文件服务器:负责存储用户上传文件的 ...

  3. Java分布式二手房项目尚好房第四课 二手房和房源管理

    尚好房:二手房管理 一.功能介绍 1.数据字典 2.小区管理 3.房源管理 二.数据字典 1.搭建service-house模块 搭建方式与service-acl一致,这里可直接复制service-a ...

  4. Java web小项目_个人主页(1)—— 云环境搭建与项目部署

    摘自:Java web小项目_个人主页(1)-- 云环境搭建与项目部署 作者:丶PURSUING 发布时间: 2021-03-26 23:59:39 网址:https://blog.csdn.net/ ...

  5. Eclipse搭建java分布式商城项目

    博主也是在学习,看到一篇博客,自己一边学习,一边写下了这篇博客 项目模块划分 ycshop-parent: 父工程, 其打包方式是 pom, 主要管理 jar 包的版本号. 项目中的所有工程都应该继承 ...

  6. java地图完整项目-地图找房(基于百度地图-MongoDB)

    1.BMapGLLib库 网址: GitHub - huiyan-fe/BMapGLLib: 百度地图JSAPI GL版JavaScript开源工具库 该库相关辅助功能可通过点击上述网址进行查看! 2 ...

  7. java多模块项目脚手架:Spring Boot + MyBatis 搭建教程

    作者 | 枫本非凡 链接 | cnblogs.com/orzlin/p/9717399.html 一.前言 最近公司项目准备开始重构,框架选定为SpringBoot+Mybatis,本篇主要记录了在I ...

  8. Java job interview:项目架构研发使用Apache Kylin搭建企业级开源大数据分析平台

    Kylin(麒麟)是什么?我们听到过有麒麟芯片.麒麟OS等等,我们这个全名是叫Apache Kylin,是一个大数据分析的项目. 从名字上或许可以猜到,它来自中国,的确这也是我们想让世界知道的,有一群 ...

  9. Java学习之路(一):日常第一课,认识JAVA

    Java的介绍 语言的起源 Java是SUN(Stanford University Network 斯坦福大学网络公司) 1995年推出的一门高级编程语言. Java名称的来源: Java最初是被命 ...

最新文章

  1. UVa10000_Longest Paths(最短路SPFA)
  2. jittor和pytorch生成网络对比之sgan
  3. java安全点_关于OopMap、SafePoint(安全点)以及安全区域
  4. 【翻译】Pro.Silverlight.5.in.CSharp.4th.Edition - 第三章 布局 03
  5. 外设驱动库开发笔记29:DS17887实时时钟驱动
  6. python动态创建字典_如何在Python中创建动态命名字典?
  7. IT营Beego教程 Golang+Beego+Grom仿小米商城项目实战视频教程
  8. 【生信】统计学基础知识
  9. 《凤凰架构》读书笔记
  10. iPS细胞移植最新进展
  11. Python 文件的读写操作
  12. 哒哒租车系统(慕课网学习)
  13. 深度多模态子空间聚类网络+代码实现
  14. 史蒂芬·埃洛普本纪:代号 Trojan.Win32.Elop
  15. 第075封“情书”:百撕不得其解Tearing Cloth<Entagma>Houdini 2018
  16. jenkins 触发 Rancher实现自动部署 流水线一键操作
  17. 【信息安全】EDR、HIDS、NDR、MDR、XDR 区别与联系
  18. B站成长期UP主有哪些涨粉机会?
  19. 同步下的资源互斥:停运保护(Run-Down Protection)机制
  20. linux-FHS总结

热门文章

  1. Mac 上的蓝牙设备断开连接如何修复?
  2. 《趣学算法》欢迎来到异步社区!
  3. Perceiver_General Perception with Iterative Attention稿
  4. 2021年终总结——适应改变,成为更好的自己
  5. Linux下rm命令
  6. 电阻、电容、电感在电路中的作用及大致选择的条件
  7. 功能测试,接口测试,自动化测试,压力测试,性能测试,渗透测试,安全测试,具体是干嘛的?
  8. springboot目录,端口,banner---2
  9. phpmyadmin #1045错误无法登录mysql服务器的解决方法
  10. 大数据和云计算技术周报(第58期)