二gradle创建SSM项目——Hello word
一创建gradle web项目
1.以下是我的项目结构web工程+工具module,mapper用来存放mybatis-plus自动生成类,通过 MpGenerator.class 生成。

2.刚创建的web项目webapp下没有web.xml文件,生成方式如下所示


二spring配置 在resources文件夹下面新建以下文件(1~4)
1.jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/tobi_fresh?
useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=root
2.logo4j.properties
log4j.rootLogger=error, Console
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.org.apache=error
log4j.logger.java.sql.ResultSet=error
log4j.logger.java.sql.Connection=error
log4j.logger.java.sql.Statement=error
log4j.logger.java.sql.PreparedStatement=error
log4j.logger.org.springframework=error
log4j.logger.org.springframework.jdbc.support=error
log4j.logger.org.springframework.scheduling=error
3.applicationContext.xml 省略头尾<beans>
<context:component-scan base-package="com.tobi.*.services"/>
<context:property-placeholder location="classpath:jdbc.properties"/>
<!--数据源-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init"
destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/> <!-- 配置初始化大小、最小、最大 -->
<property name="initialSize" value="1"/>
<property name="minIdle" value="1"/>
<property name="maxActive" value="20"/> <!-- 配置获取连接等待超时的时间 -->
<property name="maxWait" value="60000"/>
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000"/>
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="300000"/> <property name="validationQuery" value="SELECT 'x'"/>
<property name="testWhileIdle" value="true"/>
<property name="testOnBorrow" value="false"/>
<property name="testOnReturn" value="false"/> <!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
<property name="poolPreparedStatements" value="true"/>
<property name="maxPoolPreparedStatementPerConnectionSize" value="20"/> <!-- 配置监控统计拦截的filters,去掉后监控界面sql无法统计 -->
<property name="filters" value="stat"/>
</bean> <!-- 定义 MP 全局策略 -->
<bean id="globalConfig" class="com.baomidou.mybatisplus.entity.GlobalConfiguration">
<!-- 主键策略配置 -->
<!-- 可选参数 AUTO->`0`("数据库ID自增") INPUT->`1`(用户输入ID") ID_WORKER->`2`("全局唯一ID") UUID->`3`("全局唯一ID") -->
<property name="idType" value="2"/>
<!-- 数据库类型配置 -->
<!-- 可选参数(默认mysql) MYSQL->`mysql` ORACLE->`oracle` DB2->`db2` H2->`h2` HSQL->`hsql` SQLITE->`sqlite` POSTGRE->`postgresql` SQLSERVER2005->`sqlserver2005` SQLSERVER->`sqlserver` -->
<property name="dbType" value="MYSQL"/>
<!-- 全局表为下划线命名设置 true -->
<!-- <property name="dbColumnUnderline" value="true"/>-->
<!--逻辑未删除全局值-->
<!--<property name="logicNotDeleteValue" value="1"/>-->
<!--逻辑删除全局值 逻辑删除的字段需要注解 @TableLogic-->
<!-- <property name="logicDeleteValue" value="2"/>-->
</bean> <!-- 会话工厂 完美整合 mybatis, 不需要mybatis配置文件-->
<bean name="sqlSessionFactory" class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations">
<array>
<value>classpath:com/tobi/sqlxml/*.xml</value>
</array>
</property>
<!-- 配置包别名 -->
<property name="typeAliasesPackage" value="com.tobi.entity"/> <!-- 插件配置 -->
<property name="plugins">
<array>
<!-- 分页插件配置 -->
<bean id="paginationInterceptor" class="com.baomidou.mybatisplus.plugins.PaginationInterceptor">
<!-- 指定数据库方言 -->
<property name="dialectType" value="mysql"/>
</bean>
<!-- SQL 执行分析拦截器 stopProceed 发现全表执行 delete update 是否停止运行 -->
<bean id="sqlExplainInterceptor" class="com.baomidou.mybatisplus.plugins.SqlExplainInterceptor">
<property name="stopProceed" value="false"/>
</bean>
</array>
</property>
<!-- MP 全局配置注入 -->
<property name="globalConfig" ref="globalConfig"/>
</bean> <!-- DAO接口所在包名,Spring会自动查找其下的类 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.tobi.mapper"/>
</bean> <!--声明式事物管理器-->
<!-- 配置spring的PlatformTransactionManager,名字为默认值 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean> <!-- 配置基于注解的声明式事务 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
4.spring-mvc.xml
<!-- 启动注解驱动的Spring MVC功能,注册请求url和注解POJO类方法的映射 -->
<mvc:default-servlet-handler/>
<!--自动生成文档-->
<mvc:resources location="classpath:/META-INF/resources/" mapping="swagger-ui.html"/>
<mvc:resources location="classpath:/META-INF/resources/webjars/" mapping="/webjars/**"/> <!-- controller 扫描 -->
<context:component-scan base-package="com.tobi.*.controller"/> <bean class="com.tobi.config.SwaggerConfig"/>
<!-- handler(controller)映射器 用来寻找 controller 就是查找 对应的 @controller注解的类- 3.2以前是
org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean> <!-- handler(controller)适配器 用来执行controller 3.2以前是 org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <!-- 消息解析 -->
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html; charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean> <!-- 用来配置 返回json对象的参数, 默认 会出现 乱码 需要导入 jackson-annotations.jar,jackson-core.jar,jackson-databind.jar -->
<bean
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html; charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
</list>
</property> <!-- 定义自己的绑定器 -->
<property name="webBindingInitializer" ref="binder"/>
</bean> <bean id="binder"
class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer"> <!-- 使用自己的绑定 解析器 比如 这里 用来 对 日期类型进行参数绑定 -->
<property name="conversionService" ref="timeConversionService"/> <!-- 加 校验器 -->
<!-- <property name="validator" -->
</bean> <bean id="timeConversionService"
class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<!-- 定义自己的转换器 -->
<property name="converters">
<set>
</set>
</property>
</bean> <!-- 视图解析器 配置解析JSP jstl 的解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 配置前缀和后缀 , controller层 return modelandview 返回文件时 不用写前面的路径和后面的文件后缀名 -->
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
5.web.xml
<!--加载 spring 容器 的配置文件-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!--加载 spring 容器 的配置文件-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.properties</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener> <!--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-mvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<!--springMvc前端控制器--> <!--阿里巴巴监控配置-->
<servlet>
<servlet-name>DruidStatView</servlet-name>
<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DruidStatView</servlet-name>
<url-pattern>/mysql/*</url-pattern>
</servlet-mapping> <filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<async-supported>true</async-supported>
<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> <welcome-file-list>
<welcome-file>/log.html</welcome-file>
</welcome-file-list> <session-config>
<session-timeout>30</session-timeout>
</session-config>
三mapper自动生成 mapper、entity、mapperXml
1.在module的build.gradle中添加依赖
//MyBatis-plus
compile "com.baomidou:mybatis-plus:2.1.4"
compile group: 'org.apache.velocity', name: 'velocity', version: '1.7'
//数据库驱动
compile "mysql:mysql-connector-java:5.1.23"
2.在 Java 文件夹建一个main方法(仅供参考,生成规则,数据库地址需要自己配置)
public static void main(String[] args) {
AutoGenerator mpg = new AutoGenerator();
// 全局配置
GlobalConfig gc = new GlobalConfig();
gc.setOutputDir("D:\\ProjectHub\\tobi\\mapper\\src\\main\\java");
gc.setFileOverride(true);
gc.setActiveRecord(true);
gc.setEnableCache(false);// XML 二级缓存
gc.setBaseResultMap(true);// XML ResultMap
gc.setBaseColumnList(false);// XML columList
gc.setAuthor("tobi");
// 自定义文件命名,注意 %s 会自动填充表实体属性!
// dev.setMapperName("%sDao");
// dev.setXmlName("%sDao");
// dev.setServiceName("MP%sService");
// dev.setServiceImplName("%sServiceDiy");
mpg.setGlobalConfig(gc); // 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setDbType(DbType.MYSQL);
dsc.setTypeConvert(new MySqlTypeConvert(){
// 自定义数据库表字段类型转换【可选】
@Override
public DbColumnType processTypeConvert(String fieldType) {
return super.processTypeConvert(fieldType);
}
});
dsc.setDriverName("com.mysql.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("root");
dsc.setUrl("jdbc:mysql://127.0.0.1:3306/tobi_fresh?characterEncoding=utf8");
mpg.setDataSource(dsc); // 策略配置
StrategyConfig strategy = new StrategyConfig();
// strategy.setCapitalMode(true);// 全局大写命名 ORACLE 注意
strategy.setTablePrefix(new String[] {"b_","c_","m_","p_","s_","t_"});// 此处可以修改为您的表前缀
strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
// strategy.setInclude(new String[] { "user" }); // 需要生成的表
// strategy.setExclude(new String[]{"test"}); // 排除生成的表
// 自定义实体父类
// strategy.setSuperEntityClass("com.baomidou.demo.TestEntity");
// 自定义实体,公共字段
// strategy.setSuperEntityColumns(new String[] { "test_id", "age" });
// 自定义 mapper 父类
// strategy.setSuperMapperClass("com.baomidou.demo.TestMapper");
// 自定义 service 父类
// strategy.setSuperServiceClass("com.baomidou.demo.TestService");
// 自定义 service 实现类父类
// strategy.setSuperServiceImplClass("com.baomidou.demo.TestServiceImpl");
// 自定义 controller 父类
// strategy.setSuperControllerClass("com.baomidou.demo.TestController");
// 【实体】是否生成字段常量(默认 false)
// public static final String ID = "test_id";
// strategy.setEntityColumnConstant(true);
// 【实体】是否为构建者模型(默认 false)
// public User setName(String name) {this.name = name; return this;}
// strategy.setEntityBuliderModel(true);
mpg.setStrategy(strategy); // 包配置
PackageConfig pc = new PackageConfig();
pc.setParent("com");
pc.setModuleName("tobi");
pc.setMapper("mapper");
pc.setXml("sqlxml");
mpg.setPackageInfo(pc); // 自定义模板配置,可以 copy 源码 mybatis-plus/src/main/resources/template 下面内容修改,
// 放置自己项目的 src/main/resources/template 目录下, 默认名称一下可以不配置,也可以自定义模板名称
TemplateConfig tc = new TemplateConfig();
tc.setController(null);
//tc.setEntity("/templates/entity.java.vm");//模版自定义添加了逻辑删除注解。
//tc.setMapper(null);
//tc.setXml(null);
tc.setService(null);
tc.setServiceImpl(null);
//如上任何一个模块如果设置 空 OR Null 将不生成该模块。
mpg.setTemplate(tc); // 执行生成
mpg.execute(); // 打印注入设置
// System.err.println(mpg.getCfg().getMap().get("abc"));
}

四 创建 controller, services
回到web项目,创建controller 和 services 包 类使用 @Controller @Services 注解

@Controller
public class LogController { @RequestMapping("log")
@ResponseBody
public AjaxMsg log(){
Map<String,Object> map=new HashMap<>();
map.put("title","hello word");
map.put("content","a");
AjaxMsg ajaxMsg=new AjaxMsg();
ajaxMsg.setCode(200);
ajaxMsg.setMsg("a");
ajaxMsg.setObject(map);
return ajaxMsg;
} private class AjaxMsg{
```````
} @RequestMapping("indexJsp")
public String indexJsp(Model model){
model.addAttribute("a","a");
return "index";
}
}
里面有个@ResponseBody注解用于浏览器直接返回 json 需要用到
compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: jackson_version
compile group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: jackson_version
compile group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: jackson_version
~ 对应spring-mvc,xml 中映射器适配器配置
五Hello word
添加一个Tomcat server 并部署 war(exploded) 运行后 输了localhost:8080/index.html

最后
报错406,检查spring-mvc.xml 映射器适配器;jackson的三个包有没有添加,
报错404,检查web.xml过滤器
作者:罗宾船长
链接:https://www.jianshu.com/p/92f77158d29f
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
二gradle创建SSM项目——Hello word的更多相关文章
- 一gradle创建SSM项目——依赖包
build.gradle compile:编译时必须. runtime:运行时必须,包括编译时. testCompile:测试编译时必须. testRuntime:测试运行时必须,包括编译时. 注:此 ...
- 使用idea+gradle建立SSM项目
目录: 一.创建一个gradle项目 二 .在gradle中创建SSM项目 一 .创建一个gradle项目 第一步: 打开我们的IDEA工具,选择创建一个新项目 第二步:这里会让你选择创建一个什么 ...
- eclipse gradle创建java项目
参考: https://blog.csdn.net/weixin_33733810/article/details/92438913 一 : 需要在 https://gradle.org/releas ...
- 使用Spring Boot和Gradle创建AngularJS项目
Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的 ...
- SpringBoot25 gradle安装、利用gradle创建SrpingBoot项目
1 gradle安装 技巧01:gradle依赖JDK或者JRE,而且版本至少时1.7 1.1 下载安装包 到gradle官网下载安装包[PS: 也可以利用命令的方式安装,本案例是利用安装包的方式] ...
- Cocos2d-x 3.2 学习笔记(二)创建自定义项目
一.通过命令创建项目 前面搭建好环境后,怎样创建自己的cocos2d-x项目呢? 先来看看cocos2dx 3.2的目录吧(涉及到3.1.1版本的,请自动对应3.2版本,3.x版本的环境搭建都是一样的 ...
- vscode + gradle 创建 java 项目 - java language server无法启动
1.在系统上安装一个版本的gradle,用`gradle init --type java-application`创建一个默认的java项目,假设项目目录是hellojava 2.vscode写ja ...
- Eclipse创建ssm项目
1.创建Maven项目 2.勾选上面的 3.打成war包的形式 4.配置webapp.xml Project Facets——Dynamic Wed Module 2.5 ——然后点击下面的提示 5 ...
- 3、使用Gradle创建Libgdx项目
(原文链接:http://www.libgdx.cn/topic/20/3-%E4%BD%BF%E7%94%A8gradle%E5%88%9B%E5%BB%BAlibgdx%E9%A1%B9%E7%9 ...
随机推荐
- @PathVariable注解使用
@PathVariable是spring3.0的一个新功能:接收请求路径中占位符的值 语法: @PathVariable("xxx")通过 @PathVariable 可以将URL ...
- php array_push()函数 语法
php array_push()函数 语法 作用:向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度.博智达 语法:array_push(array,value1,value2.. ...
- Activiti创建表(三)
创建Mysql 创建 mysql 数据库 activiti(名字任意):CREATE DATABASE activiti DEFAULT CHARACTER SET utf8; pom.xml < ...
- SPOJ 2798 QTREE3 - Query on a tree again!
原oj题面 Time limit 2000 ms Memory limit 1572864 kB Code length Limit 50000 B OS Linux Language limit A ...
- MySQL Password Expired
好久没有登录MySQL,登录的时候遇到如下提示: 尝试使用命令行登录,发现是可以使用之前的密码登录的,如下: 只是登录之后,发现做不了什么操作.并且使用,alter 语句重设密码也没有成功,如下: 试 ...
- React-Native 之 GD (六)无数据情况处理
1.还是网络问题,在网络出现问题或者无法加载数据的时候,一般我们会展示空白页,在空白页中提示 无数据 之类的提示,比较好的还会使用 指示器 的方式告诉用户网络出现问题等等. 这边我们做以下处理,当无数 ...
- 从数据库、页面加载速度角度思考 id设计 sku asin
(已对数据进行字符串替换,去身份识别.隐私跟踪) 12-13-14-15-16-18岁20女孩夏装初中高中学生韩版上衣服短袖T恤衫-tmall.com天猫 https://detail.tmall.c ...
- set集合 浅层拷贝会和深层拷贝
一.什么是set集合 集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的.以下是集合最重要的两点: 1.去重,把一个列表变成集合, ...
- linux中也有闹钟alarm, timer, stopwatch, world clock 等等
stopwatch和timer的区别? timer叫计时器, 是先给出一个时间, 然后从现在开始, 倒数, 减少, 直到时间为0 stopwatch 叫跑錶, 则是从现在开始, 往后 增加时间, 事先 ...
- spring,springMVC的优点和区别
spring 是是一个开源框架,是为了解决企业应用程序开发,功能如下◆目的:解决企业应用开发的复杂性◆功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能◆范围:任何Java应用简单 ...