Intellij-IDEA搭建SrpingMVC+Spring+Mybatis+Bootstrap+分頁(一)
1.環境介紹
- Intellij-IDEA:2017.3.2
- JDK:1.8.0_77
- Maven:3.5.0
- Tomcat:8.5.20
- mysql:5.7.19
Intellij-IDEA安裝配置相關連結
2.建立一個maven專案
一步一步往下走就行
看到import change 記得點一下
到這裡整個maven工程就建立完了,下面是整個maven工程的目錄
似乎好像少了個java資料夾,那我們就自己建一個
假如這時候我們想在java資料夾中建一個類,會發現找不到建立class這個選項
這時候我們需要將java資料夾設定為sources
這時候發現有了class選項,還多了很多其他的可選操作
2.搭建目錄結構
3.設定配置檔案
先配置pom,xlm,引入相關jar
pom.xml配置:
<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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.xujd</groupId> <artifactId>xujd-ssm</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>xujd-ssm Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <!-- 設定專案編碼 --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <!-- spring版本號 --> <spring.version>4.3.5.RELEASE</spring.version> <!-- mybatis版本號 --> <mybatis.version>3.4.1</mybatis.version> <!-- log4j日誌檔案管理包版本 --> <slf4j.version>1.7.7</slf4j.version> <log4j.version>1.2.17</log4j.version> <!-- jackson包版本 --> <jackson.version>2.5.0</jackson.version> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!--新增java ee依賴--> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>7.0</version> </dependency> <!-- 實現slf4j介面並整合 --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.2</version> </dependency> <!-- 新增JSON依賴 --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.7</version> </dependency> <!-- 新增mysql驅動依賴 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.41</version> <scope>runtime</scope> </dependency> <!-- 新增資料庫連線池 --> <dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <version>0.9.5.2</version> </dependency> <!-- 新增MyBatis依賴 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <!-- 新增mybatis/spring整合包依賴 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.1</version> </dependency> <!-- 新增Spring核心依賴 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <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> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency> <!--新增servlet依賴--> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2</version> <scope>provided</scope> </dependency> <!-- 新增JSTL標籤類依賴 --> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- 新增日誌相關jar包 --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> </dependencies> <build> <finalName>xujd-ssm</finalName> </build> </project>
web.xml配置:
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <!-- 編碼過濾器 --> <filter> <filter-name>encodingFilter</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>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 配置DispatcherServlet --> <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 配置springMVC需要載入的配置檔案--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-*.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> <async-supported>true</async-supported> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <!-- 匹配所有請求,此處也可以配置成 *.do 形式 --> <url-pattern>/</url-pattern> </servlet-mapping> <!--訪問專案名 預設開啟頁面--> <welcome-file-list> <welcome-file>/WEB-INF/views/login.jsp</welcome-file> </welcome-file-list> </web-app>
jdbc.properties配置:
#mysql驅動
jdbc.driver=com.mysql.jdbc.Driver
#mysql地址
jdbc.url=jdbc:mysql://localhost:3306/idea-ssm?useUnicode=true&characterEncoding=utf8
#賬號
jdbc.username=root
#密碼
jdbc.password=123456
#最大連線數
c3p0.maxPoolSize=30
#最小連線數
c3p0.minPoolSize=10
#關閉連線後不自動commit
c3p0.autoCommitOnClose=false
#獲取連線超時時間
c3p0.checkoutTimeout=10000
#當獲取連線失敗重試次數
c3p0.acquireRetryAttempts=2
logback.xml配置:
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">
<!--控制檯輸出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>xujd--%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- root將級別為“DEBUG”及大於“DEBUG”的日誌資訊交給已經配置好的名為“Console”的appender處理,“Console”appender將資訊列印到Console -->
<root level="debug">
<appender-ref ref="STDOUT"/>
</root>
</configuration>
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:mvc="http://www.springframework.org/schema/mvc"
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/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<!-- 掃描web相關的bean -->
<context:component-scan base-package="com.xujd.controller"/>
<!-- 開啟SpringMVC註解模式 -->
<mvc:annotation-driven/>
<!-- 靜態資源預設servlet配置 -->
<mvc:default-servlet-handler/>
<!-- 靜態資源對映 -->
<mvc:resources mapping="/img/**" location="/img/" />
<mvc:resources mapping="/js/**" location="/js/" />
<!-- REST中根據URL字尾自動判定Content-Type及相應的View -->
<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
<property name="mediaTypes">
<map>
<entry key="xml" value="application/xml"/>
<entry key="json" value="application/json"/>
</map>
</property>
<property name="ignoreAcceptHeader" value="true"/>
<property name="favorPathExtension" value="true"/>
</bean>
<!-- 配置檢視解析器 顯示ViewResolver -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
spring-mybatis.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:tx="http://www.springframework.org/schema/tx"
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">
<!-- 掃描service包下所有使用註解的型別 -->
<context:component-scan base-package="com.xujd.service"/>
<!-- 配置資料庫相關引數properties的屬性:${url} -->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!-- 資料庫連線池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<property name="maxPoolSize" value="${c3p0.maxPoolSize}"/>
<property name="minPoolSize" value="${c3p0.minPoolSize}"/>
<property name="autoCommitOnClose" value="${c3p0.autoCommitOnClose}"/>
<property name="checkoutTimeout" value="${c3p0.checkoutTimeout}"/>
<property name="acquireRetryAttempts" value="${c3p0.acquireRetryAttempts}"/>
</bean>
<!-- 配置SqlSessionFactory物件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注入資料庫連線池 -->
<property name="dataSource" ref="dataSource"/>
<!-- 掃描model包 使用別名 -->
<property name="typeAliasesPackage" value="com.xujd.model"/>
<!-- 掃描sql配置檔案:mapper需要的xml檔案 -->
<property name="mapperLocations" value="classpath:mapper/*.xml"/>
</bean>
<!-- 配置掃描Dao介面包,動態實現Dao介面,注入到spring容器中 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 注入sqlSessionFactory -->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
<!-- 給出需要掃描Dao介面包 -->
<property name="basePackage" value="com.xujd.dao"/>
</bean>
<!-- 配置事務管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!-- 注入資料庫連線池 -->
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 配置基於註解的宣告式事務 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
</beans>
4.建表和完善程式碼
建表語句
CREATE TABLE `userinfo` (
`ID` int(128) NOT NULL AUTO_INCREMENT,
`NAME` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT '姓名',
`AGE` int(8) DEFAULT NULL COMMENT '年齡',
`LOGINNAME` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT '登入賬號',
`PASSWORD` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT '密碼',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
這是我的測試資料,不想自己加資料可以直接用我的
INSERT INTO `userinfo` VALUES ('1', '張三', '24', 'admin', '123');
INSERT INTO `userinfo` VALUES ('3', '李四', '22', '123', '123');
INSERT INTO `userinfo` VALUES ('4', '王二', '21', 'wanger', '123');
INSERT INTO `userinfo` VALUES ('5', '丐幫', '25', 'gaibang', '123');
INSERT INTO `userinfo` VALUES ('6', '明教', '27', 'mingjiao', '123');
INSERT INTO `userinfo` VALUES ('7', '武當', '28', 'wudang', '123');
INSERT INTO `userinfo` VALUES ('8', '少林', '29', 'shaolin', '123');
INSERT INTO `userinfo` VALUES ('9', '峨眉', '24', 'emei', '123');
INSERT INTO `userinfo` VALUES ('10', '天山', '25', 'tianshan', '123');
INSERT INTO `userinfo` VALUES ('11', '逍遙', '25', 'xiaoyao', '123');
INSERT INTO `userinfo` VALUES ('12', '唐門', '26', 'tangmen', '123');
INSERT INTO `userinfo` VALUES ('13', '慕容', '23', 'murong', '123');
INSERT INTO `userinfo` VALUES ('14', '馬雲', '56', 'mayun', '123');
INSERT INTO `userinfo` VALUES ('15', '百度', '12', 'baidu', '123');
INSERT INTO `userinfo` VALUES ('16', '華為', '23', 'huawei', '123');
INSERT INTO `userinfo` VALUES ('17', '騰訊', '16', 'tengxun', '123');
INSERT INTO `userinfo` VALUES ('18', '微軟', '12', 'weiruan', '123');
INSERT INTO `userinfo` VALUES ('19', '網易', '18', 'wangyi', '123');
INSERT INTO `userinfo` VALUES ('20', '阿里巴巴', '19', 'alibaba', '123');
UserInfo
package com.xujd.model;
public class UserInfo {
private int id;
private String name;
private int age;
private String loginName;
private String password;
private int startRow;
private int endRow;
getter、setter省略。。。
IDEA中快速構建get和set:Alt+insert
}
UserInfoDao
介面先寫好,裡面這些函式到時候會用上的
IDEA 快速導包:Alt+enter
package com.xujd.dao;
import com.xujd.model.UserInfo;
import java.util.List;
public interface UserInfoDao {
/**
*新增使用者資訊
* @param userInfo
*/
void insertUser(UserInfo userInfo);
/**
* 刪除使用者
* @param id
*/
void deleteUser(int id);
/**
* 修改使用者資訊
* @param userInfo
*/
void updateUser(UserInfo userInfo);
/**
* 根據ID獲取使用者資訊
* @param id
* @return
*/
UserInfo selectUserById(int id);
/**
* 獲取所有使用者資訊
* @return
*/
List<UserInfo> selectAll();
/**
* 根據登入名獲取使用者
* @param
* @return
*/
UserInfo selectUserByLoginName(String loginName);
/**
* 根據查詢條件獲取使用者
* @param userInfo
* @return
*/
List<UserInfo> selectUserByParams(UserInfo userInfo);
/**
* 獲取所有使用者數量
* @return
*/
int selectUserCount();
}
UserInfoService
package com.xujd.service;
import com.xujd.model.UserInfo;
import java.util.List;
public interface UserInfoService {
/**
*新增使用者資訊
* @param user
*/
void insertUser(UserInfo user);
/**
* 刪除使用者
* @param id
*/
void deleteUser(int id);
/**
* 修改使用者資訊
* @param user
*/
void updateUser(UserInfo user);
/**
* 根據ID獲取使用者資訊
* @param id
* @return
*/
UserInfo selectUserById(int id);
/**
* 獲取所有使用者資訊
* @return
*/
List<UserInfo> selectAll();
/**
* 根據登入名獲取使用者
* @param
* @return
*/
UserInfo selectUserByLoginName(String loginName);
/**
* 根據查詢條件獲取使用者
* @param userInfo
* @return
*/
List<UserInfo> selectUserByParams(UserInfo userInfo);
/**
* 獲取所有使用者數量
* @return
*/
int selectUserCount();
}
UserInfoServiceImpl
package com.xujd.service.Impl;
import com.xujd.dao.UserInfoDao;
import com.xujd.model.UserInfo;
import com.xujd.service.UserInfoService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service("userInfoService")
public class UserInfoServiceImpl implements UserInfoService {
@Resource
private UserInfoDao userInfoDao;
public void insertUser(UserInfo user) {
userInfoDao.insertUser(user);
}
public void deleteUser(int id) {
userInfoDao.deleteUser(id);
}
public void updateUser(UserInfo user) {
userInfoDao.updateUser(user);
}
public UserInfo selectUserById(int id) {
return userInfoDao.selectUserById(id);
}
public List<UserInfo> selectAll() {
return userInfoDao.selectAll();
}
public UserInfo selectUserByLoginName(String loginName) {
return userInfoDao.selectUserByLoginName(loginName);
}
public List<UserInfo> selectUserByParams(UserInfo userInfo) {
return userInfoDao.selectUserByParams(userInfo);
}
public int selectUserCount() {
return userInfoDao.selectUserCount();
}
}
UserInfoController
這裡用到了一個登入頁面和一個主頁面。
package com.xujd.controller;
import com.xujd.model.UserInfo;
import com.xujd.service.UserInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/user")
public class UserInfoController {
@Autowired
private UserInfoService userInfoService;
/**
* 使用者登入
* @param userInfo
* @return
*/
@RequestMapping("/login")
public String login(UserInfo userInfo, Model model){
String msg="";
//根據登入賬號判斷該使用者是否存在
UserInfo user = userInfoService.selectUserByLoginName(userInfo.getLoginName());
if(user==null){
msg="該使用者不存在!";
}else{
if(user.getPassword().equals(userInfo.getPassword())){
//驗證成功進入主介面
model.addAttribute("userInfo",user);
return "/main";
}else{
msg="密碼錯誤!";
}
}
model.addAttribute("msg",msg);
return "/login";
}
}
UserInfo_sql
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 設定為UserDao介面方法提供sql語句配置 -->
<mapper namespace="com.xujd.dao.UserInfoDao">
<insert id="insertUser" parameterType="UserInfo">
INSERT INTO USERINFO(NAME,AGE,LOGINNAME,PASSWORD)VALUES(#{name},#{age},#{loginName},#{password})
</insert>
<delete id="deleteUser" parameterType="int">
DELETE FROM USERINFO WHERE ID=#{id}
</delete>
<update id="updateUser" parameterType="UserInfo">
UPDATE USERINFO
<set>
<if test="name!=null and name!=''">NAME =#{name},</if>
<if test="age!=null and age!=''">AGE =#{age},</if>
<if test="loginName!=null and loginName!=''">LOGINNAME =#{loginName},</if>
<if test="password!=null and password!=''">PASSWORD =#{password}</if>
</set>
where ID=#{id}
</update>
<select id="selectUserById" resultType="UserInfo" parameterType="int">
SELECT * FROM USERINFO WHERE id = #{id}
</select>
<select id="selectAll" resultType="UserInfo">
SELECT * FROM USERINFO order by id desc
</select>
<select id="selectUserByLoginName" parameterType="java.lang.String" resultType="UserInfo">
SELECT * FROM USERINFO WHERE LOGINNAME=#{loginName}
</select>
<select id="selectUserByParams" resultType="UserInfo" parameterType="UserInfo">
SELECT * FROM USERINFO
<where>
<if test="name!=null and name!=''">and NAME=#{name}</if>
<if test="loginName!=null and loginName!=''">and LOGINNAME=#{loginName}</if>
</where>
order by id desc
</select>
<select id="selectUserCount" resultType="int">
select count(*) from USERINFO
</select>
</mapper>
5.登入頁面和主頁面
在views目錄下新建兩個頁面login.jsp和main.jsp
login.jsp
<%@ page contentType="text/html;charset=UTF-8"%>
<%
/*獲取工程路徑*/
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
<head>
<title>登入頁面</title>
</head>
<body>
<div>
<form action="<%=basePath%>user/login" method="post">
<div style="text-align: center;margin-top: 100px;">
<h3>${msg}</h3>
<input type="text" name="loginName" placeholder="LoginName">
<input type="password" name="password" placeholder="password">
<input type="submit" value="登入">
</div>
</form>
</div>
</body>
</html>
main.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<div style="text-align: center;margin-top: 100px;">
<h1>登入成功!</h1>
</div>
</body>
</html>
6.配置tomcat,啟動應用測試
配置好了啟動應用
啟動成功
訪問localhost:8080
輸入admin 123 登入
到這裡Intellij IDEA搭建SSM完成了,頁面有些敷衍,望海涵!!
本文原始碼下載地址:Intellij IDEA搭建SSM框架
GitHub下載地址:Intellij IDEA搭建SSM框架小夥伴們記得點個star喲,非常感謝!!
下一遍文章將在此篇文章的基礎上做完善,包括頁面上的一些設計,分頁,整合Bootstrap等,敬請期待!!