1、框架搭建前期環境準備css
jdk8.0下載地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htmlhtml
apache-maven-3.5.0-alpha-1下載地址:https://archive.apache.org/dist/maven/maven-3/3.5.0/binaries/中安裝,前端
而後要進行倉庫和阿里鏡像的配置參考https://blog.csdn.net/weixin_42035152/article/details/80035373;java
apache-tomcat-7.0.90;下載地址:https://tomcat.apache.org/download-70.cgi中標題爲Core:下載,,前兩個爲mac系統的下載;mysql
mysql-5.6.41-macos10.13-x86_64,下載地址:Looking for previous GA versions?,能夠選擇版本進行下載(個人電腦是mac系統,因此我安裝的是mac版本mysql);git
這裏安裝完畢之後,都須要配置環境變量,這裏就再也不進行說明了,能夠參考其餘的博客進行配置;github
開發工具去官網下載https://www.jetbrains.com/idea/download/#section=mac根據本身電腦選擇下載相應的intellij idea,註冊請看https://www.cnblogs.com/chen-ya-ping/p/9622062.htmlweb
2、搭建框架算法
框架的搭建就從這裏開始吧!spring
打開intellij idea.出現以下的界面,這時候咱們先對Maven的地址進行配置一下吧,點擊Configure咱們選擇preference;
這時候會直接跳轉到Maven配置界面以下圖所示,這是咱們主要配置三個地方,Maven home directory請選擇你maven的安裝路徑,User setting file這是咱們前面提到的倉庫和阿里鏡像的配置文件,Local repository是配置倉庫的地址,
配置完畢咱們選擇apply而後Ok;
而後點擊下一步,咱們看到下面的界面 ,GroupID是項目組織惟一的標識符, 好比個人項目叫test001 那麼GroupID應該是 com.lixiaoming.test001 域名.公司名.項目名,ArtifactID就是項目的惟一的標識符, 通常是 項目名-xxx 好比test001-model
繼續下一步,以下圖顯示項目名稱和你的項目本地地址。
點擊完成,項目結構算是搭建起來了,下面我給出了本身的項目結構就是咱們說明以前,咱們先理解ssm框架是什麼?
SSM是sping+springMVC+mysql集成的框架。
MVC即model view controller。
model層=entity層。存放咱們的實體類,與數據庫中的屬性值基本保持一致。
service層。存放業務邏輯處理,也是一些關於數據庫處理的操做,但不是直接和數據庫打交道,他有接口還有接口的實現方法,在接口的實現方法中須要導入mapper層,mapper層是直接跟數據庫打交道的,他也是個接口,只有方法名字,具體實如今mapper.xml文件裏,service是供咱們使用的方法。
mapper層=dao層,如今用mybatis逆向工程生成的mapper層,其實就是dao層。對數據庫進行數據持久化操做,他的方法語句是直接針對數據庫操做的,而service層是針對咱們controller,也就是針對咱們使用者。service的impl是把mapper和service進行整合的文件。
(多說一句,數據持久化操做就是指,把數據放到持久化的介質中,同時提供增刪改查操做,好比數據經過hibernate插入到數據庫中。)
controller層。控制器,導入service層,由於service中的方法是咱們使用到的,controller經過接收前端傳過來的參數進行業務操做,在返回一個指定的路徑或者數據表。
引用1:https://blog.csdn.net/mybloggerlxs/article/details/81569536
引用2:http://www.javashuo.com/article/p-ezudzoui-hy.html
3、搭建目錄結構:
這裏的目錄建好以後還須要設置一下,讓idea識別目錄做用,選擇File-Project Structure,還有一種設置方式選擇java文件夾右擊Mark Directory as 設置的根文件,固然其實兩種方式效果相同。
4、文件配置內容
首先咱們要在pox.xml中引進咱們須要的jar包,在地址:http://mvnrepository.com/裏面搜素本身須要的jar包,由於要進行下載會有點慢,須要耐心等待一下,這時咱們配置SSM其餘的文件。
pox.xml
<dependencies> <!--引入junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <!--引入servlet --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>3.0-alpha-1</version> <scope>provided</scope> </dependency> <!--引入jstl的包 --> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency> <!--引入jsp的編譯依賴 --> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2</version> <scope>provided</scope> </dependency> <!--引入log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <!--spring springmvc mybatis --> <!-- spring和springmvc相關的構建 jar --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.2.1.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.2.1.RELEASE</version> </dependency> <!-- springmvc相關 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.2.1.RELEASE</version> </dependency> <!--springmvc須要用到json的轉換包 jackson --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.5.4</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.5.4</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.5.4</version> </dependency> <!--JSR303 後臺校驗 hibernate validator --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.1.1.Final</version> </dependency> <!--上傳文件相關的jar包 --> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.3.2</version> </dependency> <!--跟加密算法相關的codeC --> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.9</version> </dependency> <!--orm或者jdbc組件須要用到的jar包 mybatis --> <!--mysql數據庫驅動 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.0.8</version> <scope>runtime</scope> </dependency> <!--阿里的鏈接 druid鏈接池 相似於c3p0 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.15</version> </dependency> <!--引入mybatis須要的jar包 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.3.1</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.2.4</version> </dependency> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.2.1</version> </dependency>
咱們引進的jar包能夠在右側maven欄進行查看以下圖,固然也能夠去本地倉庫裏查看,若是pox.xml部分文件顯示紅色,多是jar 包沒有下載到倉庫中,可能沒有從倉庫中引入你的jar 包,這是你須要進行刷新。
applicationContext.xml 主要是對Spring和mybatis進行整合,對數據庫鏈接。
<?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" xmlns:aop="http://www.springframework.org/schema/aop" 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 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <context:component-scan base-package="com.chatRotbot" > <!--過濾掉控制層的註解 --> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> <context:property-placeholder location="classpath:jdbc.properties" /> <!-- 配置druid數據源 --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="driverClassName" value="${jdbc.driverClass}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </bean> <!--註冊jdbc訪問數據的事務管理器 --> <bean id = "txManager" class = "org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref = "dataSource"></property> </bean> <!--開啓事物註解驅動 --> <tx:annotation-driven transaction-manager="txManager" /> <!--配置mybaits的SqlSessionFactory --> <bean id = "sqlSessionFactory" class = "org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref = "dataSource"></property> <property name="configLocation" value="classpath:mybatis-cfg.xml"></property> <property name="mapperLocations"> <list> <value>classpath:mapper/UserMapper.xml</value> </list> </property> <!--<property name="mapperLocations" value=""></property>--> </bean> <!-- 配置mybatis mapper接口 --> <bean class = "org.mybatis.spring.mapper.MapperScannerConfigurer"> <!--若是有多個報路徑,用逗號分開便可 --> <property name="basePackage" value="com.chatRotbot.dao.*"/> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> </bean> </beans>
jdbc.properties 數據庫鏈接的配置
jdbc.driverClass=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/chatRotbot
##?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true jdbc.username=root jdbc.password=123456
mybatis-cfg.xml mybtisde設置
<?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> <!--是否開啓自動駝峯命名規則映射, 即從經典數據庫列名 AB_CD 到經典 Java 屬性名 AbCd 的相似映射。 默認false --> <setting name="mapUnderscoreToCamelCase" value="true"/> <!-- 延遲加載總開關 --> <!-- <setting name="lazyLoadingEnabled" value="true" /> --> <!-- 設置按需加載 --> <!-- <setting name="aggressiveLazyLoading" value="false" /> --> <!--開啓二級緩存 --> <!-- <setting name="cacheEnabled" value="true"/> --> </settings> <!--在mybatis默認提供的別名的基礎上,咱們還能夠自定義別名引用 --> <typeAliases> <!--自定義user對象的別名 --> <!--<typeAlias type="com.chatRotbot.model.User" alias="user"/>--> <!-- 批量定義別名 --> <package name="com.chatRotbot.model" /> <!--<package name="com.chatRotbot.dao" />--> </typeAliases> <!-- 配置pageHelper分頁插件 --> <plugins> <plugin interceptor="com.github.pagehelper.PageHelper"> <!-- 設置數據庫類型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六種數據庫--> <property name="dialect" value="mysql"/> <!-- RowBounds參數offset做爲PageNum使用 - 默認不使用 --> <property name="offsetAsPageNum" value="false"/> <!-- 使用RowBounds分頁會進行count查詢 --> <property name="rowBoundsWithCount" value="false"/> <!--當設置爲true的時候,若是pagesize設置爲0 就不執行分頁,返回所有結果 --> <property name="pageSizeZero" value="true"/> <!--合理化查詢 好比若是pageNum<1會查詢第一頁;若是pageNum>pages會查詢最後一頁(設置爲false返回空)--> <property name="reasonable" value="false"/> <!-- 支持經過Mapper接口參數來傳遞分頁參數 --> <property name="supportMethodsArguments" value="false"/> <!-- 老是返回PageInfo類型,check檢查返回類型是否爲PageInfo,none返回Page --> <property name="returnPageInfo" value="none"/> </plugin> </plugins> </configuration>
log4.properties 日誌輸出設置
log4j.rootLogger=DEBUG, CONSOLE, FILE
## console 配置文件輸出的目的地 (控制檯)
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy/MM/dd/HH:mm:ss} %-5p [%t] %10l - %m%n
## file 配置文件輸出的目的地 (寫入日誌文件)
log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE.File=D:/logs/log4j.log
log4j.appender.FILE.MaxFileSize=1MB
log4j.appender.FILE.Append = true
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%d{yyyy/MM/dd/HH:mm:ss} %-5p [%t] %10l - %m%n
##第一個參數表明日誌的級別 日誌級別有五個 DEBUG INFO WARN ERROR FATAL
##經常使用的日誌基本有4個 DEBUG INFO WARN ERROR
##DEBUG 咱們爲程序設定的一些調試信息
##INFO 爲通常 要顯示的信息 ,好比登錄,參數的值
##WARN 通常爲警告信息 ,好比說session丟失,文件路徑不存在
##ERROR 通常爲異常信息 用於異常打印
##
##第二個和第三個參數表明日誌信息的輸出地點 輸出地點分五個類型
##1.org.apache.log4j.ConsoleAppender(控制檯)
##2.org.apache.log4j.FileAppender(文件)
##3.org.apache.log4j.DailyRollingFileAppender(天天產生一個日誌文件)
##4.org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件)
##5.org.apache.log4j.WriterAppender(將日誌信息以流格式發送到任意指定的地方--郵箱)
springmvc.xml spring和Springmvc的整合
<?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" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop" 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 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!--開啓spring組件掃描 --> <context:component-scan base-package="com.chatRotbot" use-default-filters="false"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> <!--如下映射器和適配器的配置能夠經過註解驅動來代替 --> <mvc:annotation-driven/> <!--配置視圖解析器 這個是專門用於解析jsp的視圖解析器 --> <bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver" > <property name="prefix" value="/WEB-INF/pages/"/> <property name="suffix" value=".jsp"/> </bean> <!--對靜態資源文件的訪問--> <mvc:resources mapping="/jsAndCss/**" location="/jsAndCss/" /> <!--文件上傳解析器 --> <bean id = "multipartResolver" class = "org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="UTF-8"></property> <!--指定所上傳文件的總大小,單位字節。注意maxUploadSize屬性的限制不是針對單個文件,而是全部文件的容量之和 --> <property name="maxUploadSize" value="10240000"></property> </bean> <!--配置hibernate validator --> <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/> </bean> </beans>
web.xml springmvc 配置文件
<?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>ChatRobot</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!--加載spring的ioc容器 spring的配置文件通常要跟springmvc的配置文件分開 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 配置springmvc的DispatcherServlet springMVC的ioc容器包括控制層的註冊以及涉及到springmvc的相關配置 --> <!--配置前端的控制器 (servlet),攔截全部請求 --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--若是不配置此初始化參數,springmvc會默認去加載classpath下面名稱爲 [servlet-name]-servlet.xml(springmvc-serlvet.xml) --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:*.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <!-- 1:能夠配置*.do,*.action 須要你在全部頁面請求的url帶.do或者.action的後綴 2:也能夠配置/ ,此工程全部請求(包括.do .action,js/image/css)都會由springmvc解析 因此要對上述的靜態文件資源進行過濾 3:配置 /* ,返回的jsp也會有springmvc解析 ,不支持 總結:通常配置*.do,或者 *.action;若是須要restful風格的接口,最後用/來標識 --> <url-pattern>/</url-pattern> </servlet-mapping> <!-- springmvc提供的亂碼過濾器 --> <filter> <filter-name>CharacterEncodingFilter</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> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
index.jsp 項目啓動初始文件
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath() ; response.sendRedirect(path+"/gotoLogin"); %>
5、測試
首先進入終端或cmd進入docs輸入
mysql -hlocalhost -uroot -p;
輸入密碼進入數據庫,而後建立數據庫,若是顯示建立的數據庫,那麼咱們繼續下一步;
CREATE DATABASE chatRotbot;
SHOW DATABASE;
如今咱們要在用intellij idea鏈接數據庫,進入設置mysql數據庫的頁面。
輸入下面的命令行,插入數據時,請吧xxxx換成具體數據;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用戶ID',
`email` varchar(255) NOT NULL COMMENT '用戶郵箱',
`password` varchar(255) NOT NULL COMMENT '用戶密碼',
`username` varchar(255) NOT NULL COMMENT '用戶暱稱',
`role` varchar(255) NOT NULL COMMENT '用戶身份',
`status` int(1) NOT NULL COMMENT '用戶狀態',
`regTime` datetime NOT NULL COMMENT '註冊時間',
`regIp` varchar(255) NOT NULL COMMENT '註冊IP',
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
INSERT INTO `user` VALUES ('1', 'xxx', 'xxxxx', 'xxxxx', 'root', '0', '2017-03-28 09:40:31', '127.0.0.1');
SET FOREIGN_KEY_CHECKS=1;