# SSM开发 **Repository Path**: by-mx/DevSSM ## Basic Information - **Project Name**: SSM开发 - **Description**: SSM(Spring、SpringMVC、MyBatis)开发模版 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-12-04 - **Last Updated**: 2025-05-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: SSM, MySQL, Java ## README # DevSSM 项目说明 ### IDEA 基本设置 以下是 IntelliJ IDEA 的一些基本设置和优化建议,帮助你更高效地开发和提高工作流效率: ------ 1. **设置外观和字体大小** 你可以根据个人偏好调整 IDEA 的外观和字体大小,以便更加舒适地进行开发。 路径:`File -> Settings -> Appearance & Behavior -> Appearance` 在这里你可以设置主题、字体和大小等。 2. **设置编辑器的快捷键** 若你习惯使用其他 IDE(如 Eclipse),可以将 IDEA 的快捷键设置为 Eclipse 模式。 路径:`File -> Settings -> Keymap` 在此页面,你可以选择不同的快捷键配置,也可以自定义快捷键。 3. **代码提示和补充功能** 通过调整代码补全设置,优化开发体验。 路径:`Settings -> Editor -> General -> Code Completion -> Case Sensitive Completion` - 默认情况下,`First letter` 会区分大小写,即只会根据首字母提示(如 `StringBuffer` 和 `stringBuffer` 会被视为不同的提示项)。 - 如果希望不区分大小写,可以将其改为 `None`。 4. **设置代码检查等级** 你可以设置 IDEA 对代码的检查等级,以确保代码质量。 路径:`File -> Settings -> Editor -> Inspections` - 选择 `Inspections` 为最高等级,这样 IDEA 会对代码进行全面的检查,包括拼写、语法、变量使用、方法调用等问题。 - `Syntax` 仅检查语法错误和拼写问题。 - `None` 不做任何检查,适用于不需要严格检查的情况。 5. **自动导包设置** 自动导入包的功能可以大大提高开发效率,避免手动输入包名。 路径:`Settings -> Editor -> General -> Auto Import` - 勾选 `Optimize imports on the fly`,IntelliJ IDEA 会在你写代码时自动优化导入的包,去除未使用的包。 - 勾选 `Add unambiguous imports on the fly`,IDEA 会自动导入你所需的包,但对于存在同名包的情况,仍需手动选择(使用 `Alt + Enter`)。 6. **启用省电模式** 启用省电模式后,IDEA 会关闭代码检查、提示等功能,这有助于节省系统资源,适用于需要提高性能的场景。 路径:`File -> Power Save Mode` 启用此模式时,IDEA 的一些智能功能(如代码提示、错误检查等)将会被关闭。 7. **全局编码设置** 确保默认编码设置为 UTF-8,以便于处理多种字符集的文件,避免乱码问题。 路径:`File -> Other Settings -> Default Settings -> Editor -> File Encodings` 设置编码为 UTF-8,特别是在跨平台开发时,统一的编码格式有助于避免字符编码问题。 8. **工程编码设置** 为确保特定项目的编码设置正确,可以为每个项目单独设置编码。 路径:`File -> Settings -> Editor -> File Encodings` 可以为当前工程指定编码,以确保文件内容在不同环境中的一致性。 9. **文件编码设置** 如果你需要调整某个特定文件的编码,可以通过文件右下角进行设置。 在文件的右下角,点击编码设置,选择你希望使用的编码格式。 10. **Maven 设置** Maven 是常用的构建工具,确保 IDEA 的 Maven 配置正确,以便顺利进行构建和依赖管理。 路径:`File -> Other Settings -> Default Settings -> Build, Execution, Deployment -> Build Tools -> Maven` - 设置 Maven Home Directory:选择 Maven 的安装路径。 - 设置 User Settings File:配置 `settings.xml` 文件的路径。 - 设置 Local Repository:指定本地仓库的位置。 11. **JDK 设置** 设置项目使用的 JDK 版本,以确保编译和运行环境的一致性。 路径:`File -> Other Settings -> Default Project Structure` 在此设置中,你可以为不同的项目配置 JDK 路径。 ------ ### 参考链接: - [CSDN 博客 - yelove1990](http://blog.csdn.net/yelove1990/article/details/51541327) - [CSDN 博客 - qq_27093465](http://blog.csdn.net/qq_27093465/article/details/52918873) - [CSDN 博客 - frankcheng5143](http://blog.csdn.net/frankcheng5143/article/details/50779149) 通过以上的设置和优化,你可以提升开发效率,减少环境配置带来的麻烦。 ### Maven 基本设置 打开 settings.xml 1. 设置本地仓库位置(建议) ```xml E:\sundry\maven\repo ``` 2. 配置镜像(建议) ```xml alimaven central aliyun maven http://maven.aliyun.com/nexus/content/repositories/central/ repo1 central Human Readable Name for this Mirror. http://repo1.maven.org/maven2/ repo2 central Human Readable Name for this Mirror. http://repo2.maven.org/maven2/ ibiblio central Human Readable Name for this Mirror. http://mirrors.ibiblio.org/pub/mirrors/maven2/ jboss-public-repository-group central JBoss Public Repository Group http://repository.jboss.org/nexus/content/groups/public maven.net.cn oneof the central mirrors in china http://maven.net.cn/content/groups/public/ central ``` 3. 设置代理(可选) ```xml my-proxy true http 10.18.97.76 3128 127.0.0.1 ``` 保存,重启IDE生效. ### 使用IDEA 搭建SSM 框架 参考: https://www.cnblogs.com/hackyo/p/6646051.html 需要的环境: - idea 2017 - jdk 1.8 - Maven 3 #### 步骤1 使用idea新建一个Maven webapp项目 File -> New -> Project -> Maven -> 确认JDK; 勾选Create from archetype; 在列表中选择 maven-archetype-webapp -> Next -> GroupId:www.Dev.com; Artifactid: devssm; -> Next -> 确认 directory、file、replsitory -> Next -> 确认信息 -> Finish 报错: [ERROR] Maven execution terminated abnormally (exit code 1) 这个问题是常见的.检测是不是网络的问题.右击项目名 -> remove Modoule -> 退出IDE -> 去工作区间删除项目 -> 启动IDE 在欢迎页面×了该项目 -> 重新进行步骤1. 第一次搭建可能会很慢, 一次未必成功. 创建成功后右上角会提示:Maven projects need to be imported .点击Enable Auto-Import,以后更改pom文件后就会自动下载依赖包了. 控制台成功信息: ```xml [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 51.253 s [INFO] Finished at: 2017-11-23T15:53:18+08:00 [INFO] Final Memory: 19M/172M [INFO] ------------------------------------------------------------------------ [INFO] Maven execution finished ``` 项目目录结构: ```xml DevSSM │ DevSSM.iml │ pom.xml │ ├─.idea │ │ compiler.xml │ │ encodings.xml │ │ misc.xml │ │ modules.xml │ │ workspace.xml │ │ │ ├─artifacts │ │ DevSSM_war.xml │ │ DevSSM_war_exploded.xml │ │ │ ├─dictionaries │ │ wuyanhui.xml │ │ │ ├─inspectionProfiles │ │ Project_Default.xml │ │ │ └─libraries │ Maven__junit_junit_3_8_1.xml │ └─src └─main ├─resources └─webapp │ index.jsp │ └─WEB-INF web.xml ``` #### 步骤2 搭建目录结构 ```xml DevSSM │ DevSSM.iml │ pom.xml │ ├─.idea │ │ compiler.xml │ │ encodings.xml │ │ misc.xml │ │ modules.xml │ │ workspace.xml │ │ │ ├─artifacts │ │ DevSSM_war.xml │ │ DevSSM_war_exploded.xml │ │ │ ├─dictionaries │ │ wuyanhui.xml │ │ │ ├─inspectionProfiles │ │ Project_Default.xml │ │ │ └─libraries │ Maven__junit_junit_3_8_1.xml │ └─src ├─main │ ├─java │ │ └─com.Dev │ │ ├─controller │ │ │ UserController.java │ │ │ │ │ ├─dao │ │ │ IUserDao.java │ │ │ │ │ ├─model │ │ │ User.java │ │ │ │ │ └─service │ │ │ IUserService.java │ │ │ │ │ └─impl │ │ UserServiceImpl.java │ │ │ ├─resources │ │ │ jdbc.properties │ │ │ logback.xml │ │ │ spring-mvc.xml │ │ │ spring-mybatis.xml │ │ │ │ │ ├─mapper │ │ │ UserDao.xml │ │ │ │ │ └─sql │ │ DevSSM.sql │ │ │ └─webapp │ │ index.html │ │ │ └─WEB-INF │ │ web.xml │ │ │ └─views └─test └─java └─com └─Dev ├─controller └─dao IUserDaoTest.java ``` 注意: 新建文件如果找不到Class 格式.我们把java 文件夹设置为source , 再创建就有.clss 文件格式了. 我们可以根据对项目的任意目录进行这五种目录类型标注,这个知识点非常非常重要,必须会。 - `Sources` 一般用于标注类似 src 这种可编译目录。有时候我们不单单项目的 src 目录要可编译,还有其他一些特别的目录也许我们也要作为可编译的目录,就需要对该目录进行此标注。**只有 Sources 这种可编译目录才可以新建 Java 类和包,这一点需要牢记。** ** - ` Tests` 一般用于标注可编译的单元测试目录。在规范的 maven 项目结构中,顶级目录是 src,maven 的 src 我们是不会设置为 Sources 的,而是在其子目录 main 目录下的 java 目录,我们会设置为 Sources。而单元测试的目录是 src - test - java,这里的 java 目录我们就会设置为 Tests,表示该目录是作为可编译的单元测试目录。一般这个和后面几个我们都是在 maven 项目下进行配置的,但是我这里还是会先说说。从这一点我们也可以看出 IntelliJ IDEA 对 maven 项目的支持是比彻底的。 - `Resources `一般用于标注资源文件目录。在 maven 项目下,资源目录是单独划分出来的,其目录为:src - main -resources,这里的 resources 目录我们就会设置为 Resources,表示该目录是作为资源目录。资源目录下的文件是会被编译到输出目录下的。 - `Test Resources `一般用于标注单元测试的资源文件目录。在 maven 项目下,单元测试的资源目录是单独划分出来的,其目录为:src - test -resources,这里的 resources 目录我们就会设置为 Test Resources,表示该目录是作为单元测试的资源目录。资源目录下的文件是会被编译到输出目录下的。 - ` Excluded `一般用于标注排除目录。被排除的目录不会被 IntelliJ IDEA 创建索引,相当于被 IntelliJ IDEA 废弃,该目录下的代码文件是不具备代码检查和智能提示等常规代码功能。 通过上面的介绍,我们知道对于非 maven 项目我们只要会设置 src 即可。 参考: http://blog.csdn.net/qq_27093465/article/details/52912444 #### 步骤3 配置文件内容 pom.xml ```xml 4.0.0 www.Dev.com DevSSM war 1.0-SNAPSHOT DevSSM Maven Webapp http://maven.apache.org UTF-8 UTF-8 4.3.5.RELEASE 3.4.1 javax javaee-api 8.0 junit junit 3.8.1 test ch.qos.logback logback-classic 1.2.2 com.fasterxml.jackson.core jackson-databind 2.8.7 mysql mysql-connector-java 5.1.41 runtime com.mchange c3p0 0.9.5.2 org.mybatis mybatis ${mybatis.version} org.mybatis mybatis-spring 1.3.1 org.springframework spring-core ${spring.version} org.springframework spring-beans ${spring.version} org.springframework spring-context ${spring.version} org.springframework spring-jdbc ${spring.version} org.springframework spring-tx ${spring.version} org.springframework spring-web ${spring.version} org.springframework spring-webmvc ${spring.version} org.springframework spring-test ${spring.version} DevSSM org.apache.maven.plugins maven-compiler-plugin 1.8 1.8 ``` 设置好后,Maven会自动更新依赖, 可以注意右下方的信息. logback.xml ```xml %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n ``` 这里可以控制输出格式和内容,有兴趣的可以自己设置 jdbc.properties ```java jdbc.driver=com.mysql.jdbc.Driver #数据库地址 jdbc.url=jdbc:mysql://localhost:3306/devssm?useUnicode=true&characterEncoding=utf8 #用户名 jdbc.username=root #密码 jdbc.password=123 #最大连接数 c3p0.maxPoolSize=30 #最小连接数 c3p0.minPoolSize=10 #关闭连接后不自动commit c3p0.autoCommitOnClose=false #获取连接超时时间 c3p0.checkoutTimeout=10000 #当获取连接失败重试次数 c3p0.acquireRetryAttempts=2 ``` spring-mybatis.xml ```xml ``` spring-mvc.xml ```xml ``` web.xml ```xml DevSSM DevSSM_Alpha_0.0.1 encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 encodingFilter /* SpringMVC org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:spring-*.xml 1 true SpringMVC / index.html ``` 到这里基本上环境就搭建完成了,下面开始测试 #### 步骤4 测试 先导入一份数据库测试文件 ```sql CREATE DATABASE /*!32312 IF NOT EXISTS*/`devssm` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */; USE `devssm`; /*Table structure for table `user` */ DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID', `email` varchar(255) NOT NULL COMMENT '用户邮箱', `password` varchar(255) DEFAULT NULL COMMENT '用户密码', `username` varchar(255) DEFAULT NULL COMMENT '用户昵称', `role` varchar(255) DEFAULT NULL COMMENT '用户身份', `status` int(1) DEFAULT NULL COMMENT '用户状态', `regTime` datetime DEFAULT NULL COMMENT '注册时间', `regIp` varchar(255) DEFAULT NULL COMMENT '注册IP', PRIMARY KEY (`id`), UNIQUE KEY `email` (`email`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 CHECKSUM=1; /*Data for the table `user` */ insert into `user`(`id`,`email`,`password`,`username`,`role`,`status`,`regTime`,`regIp`) values (1,'Dev@163.com','1223','DevKang','root',1,'2017-03-28 09:40:31','127.0.0.1'); ``` UserController ```java package com.Dev.controller; import com.fasterxml.jackson.databind.ObjectMapper; import model.com.User; import service.com.IUserService; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * project DevSSM * authod wuyanhui * datetime 2017/11/23 16:16 * desc */ @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(); } } ``` IUserDao ```java package com.Dev.dao; import model.com.User; /** * project DevSSM * authod wuyanhui * datetime 2017/11/23 16:17 * desc */ public interface IUserDao { User selectUser(long id); } ``` User ```java package com.Dev.model; import java.util.Date; /** * project DevSSM * authod wuyanhui * datetime 2017/11/23 16:17 * desc */ public class User { private long id; private String email; private String password; private String username; private String role; private int status; private Date regTime; private String regIp; public User() { } public long getId() { return id; } public void setId(long id) { this.id = id; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } 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; } public String getRole() { return role; } public void setRole(String role) { this.role = role; } public int getStatus() { return status; } public void setStatus(int status) { this.status = status; } public Date getRegTime() { return regTime; } public void setRegTime(Date regTime) { this.regTime = regTime; } public String getRegIp() { return regIp; } public void setRegIp(String regIp) { this.regIp = regIp; } @Override public String toString() { return "User{" + "id=" + id + ", email='" + email + '\'' + ", password='" + password + '\'' + ", username='" + username + '\'' + ", role='" + role + '\'' + ", status=" + status + ", regTime=" + regTime + ", regIp='" + regIp + '\'' + '}'; } } ``` IUserService ```java package com.Dev.service; import model.com.User; public interface IUserService { public User selectUser(long userId); } ``` UserServiceImpl ```java package com.Dev.service.impl; import dao.com.IUserDao; import model.com.User; import service.com.IUserService; import org.springframework.stereotype.Service; import javax.annotation.Resource; /** * project DevSSM * authod wuyanhui * datetime 2017/11/23 16:17 * desc */ @Service("userService") public class UserServiceImpl implements IUserService { @Resource private IUserDao userDao; @Override public User selectUser(long userId) { return this.userDao.selectUser(userId); } } ``` UserDao.xml ```xml ``` 然后新建个测试类,来测试mybatis IUserDaoTest ```java package com.Dev.dao; import model.com.User; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; /** * project DevSSM * authod wuyanhui * datetime 2017/11/23 16:45 * desc */ // 加载spring配置文件 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration({"classpath:spring-mybatis.xml"}) public class IUserDaoTest { @Autowired private IUserDao dao; @Test public void testSelectUser() throws Exception { long id = 1; User user = dao.selectUser(id); System.out.println(user.getUsername()); } } ``` 运行后结果应该是会在控制台输出id为1的用户名. 继续新建个页面来测试springmvc和mybatis index.html ```html test

Hello World!

``` 新建完成后配置项目运行环境,点击Run-Edit Configurations... 点击加号新建运行环境,选择Tomcat Server-Local 选中新建好的服务器,右边选择Deployment,点击加号-Atifact... 选择第二项 DevSSM:war exploded 然后在右边Application context配置你的项目名`/devssm` 最后运行项目,项目会打开里浏览器且访问`http://localhost:8080/devssm/`,在打开的页面中点击按钮测试,成功的话会在页面上显示id为1的用户信息`{"id":1,"email":"Dev@163.com","password":"1223","username":"DevKang","role":"root","status":1,"regTime":1490665231000,"regIp":"127.0.0.1"}` ### IDEA 通过 git 把项目上传到 gitHub ### 基础步骤: 1. **确保 Git 和 SSH key 配置好**: - 本地已经安装好 Git。 - 配置好 SSH key,并将公钥添加到 GitHub(可以参考上面提供的详细步骤)。 2. **在 IntelliJ IDEA 中设置 Git**: - 打开 IntelliJ IDEA。 - 进入 `File` -> `Settings`(或 `IntelliJ IDEA` -> `Preferences`,macOS 上)。 - 选择 `Version Control` -> `Git`。 - 在 `Path to Git executable` 输入框中,填写 Git 可执行文件的路径(如:`/usr/bin/git` 或 `C:\Program Files\Git\bin\git.exe`)。 3. **分享项目到 GitHub**: - 在 IDEA 中打开项目,选择 `VCS`(版本控制)菜单。 - 选择 `Import into Version Control` -> `Share Project on GitHub`。 - 输入你的 GitHub 账号和密码(如果是首次登录,会要求输入)。 - 完成设置后,IDEA 会自动创建一个新的 GitHub 仓库并上传项目代码。 ### 关键点: - 通过 `VCS` 菜单,选择 `Share Project` 即可直接将项目上传到 GitHub。 - 使用 SSH 配置时,确保 GitHub 上的 SSH key 设置正确,这样可以避免输入用户名和密码。 ### 最后 **不负责任声明:** 本例子只用于学习. **特别鸣谢:** https://github.com/hittun/helloSSM