1、引入相關jar包依賴
<!--版本號設置--> <properties> <!--spring--> <!--<spring-version>3.2.4.RELEASE</spring-version>--> <spring-version>5.1.3.RELEASE</spring-version> <!--mysql--> <mysql-version>6.0.6</mysql-version> <!--dbcp--> <dbcp-version>1.4</dbcp-version> <!--mybatis--> <mybatis-version>3.4.6</mybatis-version> <!--mybatis-spring--> <mybatis-srping-version>1.3.2</mybatis-srping-version> <!--slf4j--> <slf4j.version>1.7.25</slf4j.version> <!--log4j--> <log4j.version>2.8.2</log4j.version> </properties> <dependencies> <!--spring--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring-version}</version> </dependency> <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-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> <scope>test</scope> </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-aop</artifactId> <version>${spring-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${spring-version}</version> </dependency> <!--mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql-version}</version> </dependency> <!--dbcp--> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>${dbcp-version}</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>${mybatis-srping-version}</version> </dependency> <!--jstl--> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!--log4j2--> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>${slf4j.version}</version> <scope>runtime</scope> </dependency> <!--核心log4j2jar包--> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>${log4j.version}</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>${log4j.version}</version> </dependency> <!--用於與slf4j保持橋接--> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>${log4j.version}</version> </dependency> <!--web工程需要包含log4j-web,非web工程不需要--> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-web</artifactId> <version>${log4j.version}</version> <scope>runtime</scope> </dependency> <!--需要使用log4j2的AsyncLogger需要包含disruptor--> <dependency> <groupId>com.lmax</groupId> <artifactId>disruptor</artifactId> <version>3.3.7</version> </dependency> <!--json--> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.9.8</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.8</version> </dependency> <!--上傳組件包--> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.10</version> </dependency> <!-- javaee --> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>8.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> </dependencies>
2、創建項目目錄結構
3、創建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.forever.service"/> <!-- 配置數據庫相關參數properties的屬性:${url} --> <context:property-placeholder location="classpath:properties/jdbc.properties"/> <!-- 數據庫連接池 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 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}"/> </bean> <!-- 配置SqlSessionFactory對象 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 注入數據庫連接池 --> <property name="dataSource" ref="dataSource"/> <!-- 掃描model包 使用別名 --> <property name="typeAliasesPackage" value="com.forever.pojo"/> <!-- 掃描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.forever.mapper"/> </bean> <!-- 配置事務管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <!-- 注入數據庫連接池 --> <property name="dataSource" ref="dataSource"/> </bean> <!-- 配置基於注解的聲明式事務 --> <tx:annotation-driven transaction-manager="transactionManager"/> </beans>
4、創建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.forever.controller"/> <!-- 開啟SpringMVC注解模式 --> <mvc:annotation-driven/> <!-- 靜態資源默認servlet配置 --> <mvc:default-servlet-handler/> <!-- 配置jsp 顯示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/jsp/"/> <property name="suffix" value=".jsp"/> </bean> </beans>
5、創建jdbc.properties
jdbc.driver=com.mysql.cj.jdbc.Driver #url jdbc.url=jdbc:mysql://localhost:3306/db_boot?useUnicode=true&characterEncoding=utf8 #賬號 jdbc.username=root #密碼 jdbc.password=root
6、日志文件log4j2.xml
<?xml version="1.0" encoding="UTF-8"?> <!-- 設置log4j2的自身log級別為warn --> <!-- OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL --> <configuration status="WARN" monitorInterval="30"> <appenders> <console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/> </console> <RollingFile name="RollingFileInfo" fileName="${sys:catalina.home}/logs/info/info.log" filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log"> <!--控制台只輸出level及以上級別的信息(onMatch),其他的直接拒絕(onMismatch)--> <Filters> <ThresholdFilter level="INFO"/> <ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL"/> </Filters> <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy size="50 MB"/> </Policies> </RollingFile> <RollingFile name="RollingFileWarn" fileName="${sys:catalina.home}/logs/warn/warn.log" filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log"> <Filters> <ThresholdFilter level="WARN"/> <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/> </Filters> <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy size="50 MB"/> </Policies> </RollingFile> <RollingFile name="RollingFileError" fileName="${sys:catalina.home}/logs/error/error.log" filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log"> <ThresholdFilter level="ERROR"/> <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy size="50 MB"/> </Policies> </RollingFile> </appenders> <loggers> <!--過濾掉spring和mybatis的一些無用的DEBUG信息--> <logger name="org.springframework" level="INFO"></logger> <logger name="org.mybatis" level="INFO"></logger> <root level="all"> <appender-ref ref="Console"/> <appender-ref ref="RollingFileInfo"/> <appender-ref ref="RollingFileWarn"/> <appender-ref ref="RollingFileError"/> </root> </loggers> </configuration>
7、web.xml配置如下
<?xml version="1.0" encoding="UTF-8"?> <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_4_0.xsd" version="4.0"> <!-- 編碼過濾器 --> <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> <!-- spring-mvc --> <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/spring-mvc.xml classpath:spring/spring-mybatis.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> <!--log4j2--> <listener> <listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class> </listener> <filter> <filter-name>log4jServletFilter</filter-name> <filter-class>org.apache.logging.log4j.web.Log4jServletFilter</filter-class> </filter> <filter-mapping> <filter-name>log4jServletFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>INCLUDE</dispatcher> <dispatcher>ERROR</dispatcher> </filter-mapping> </web-app>
8、創建數據庫表 插入信息
CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用戶id' , `username` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '賬號' , `password` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '密碼' , PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci COMMENT='用戶表' AUTO_INCREMENT=4 ROW_FORMAT=COMPACT ; INSERT INTO `users` (`id`, `username`, `password`) VALUES ('1', 'root', 'root');
9、創建實體IUsers
package com.forever.pojo; public class IUsers { private int id; private String username; private String password; @Override public String toString() { return "IUsers{" + "id=" + id + ", username='" + username + '\'' + ", password='" + password + '\'' + '}'; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
10、創建 IUsersMapper
package com.forever.mapper; import com.forever.pojo.IUsers; import org.springframework.stereotype.Repository; import java.util.List; @Repository public interface IUsersMapper { public List<IUsers> selectAll(); public boolean selectOne(IUsers users); }
11、創建 IUsersService
package com.forever.service; import com.forever.pojo.IUsers; import java.util.List; public interface IUsersService { public List<IUsers> selectAll(); public boolean selectOne(IUsers users); }
12、創建 UsersServiceImpl
package com.forever.service.impl; import com.forever.mapper.IUsersMapper; import com.forever.pojo.IUsers; import com.forever.service.IUsersService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; @Service @Transactional public class UsersServiceImpl implements IUsersService { @Autowired private IUsersMapper usersMapper; public List<IUsers> selectAll(){ return usersMapper.selectAll(); } public boolean selectOne(IUsers users) { return usersMapper.selectOne(users); } }
13、創建IUsersMapper.xml
<?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"> <!-- 設置為IUserDao接口方法提供sql語句配置 --> <mapper namespace="com.forever.mapper.IUsersMapper"> <select id="selectAll" resultType="IUsers"> SELECT * FROM users </select> <select id="selectOne" resultType="boolean" parameterType="IUsers"> select count(1) from users where username=#{username} and password=#{password} </select> </mapper>
14、創建UsersController
package com.forever.controller;
import com.forever.pojo.IUsers;
import com.forever.service.IUsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
@Controller
public class UsersController {
@Autowired
private IUsersService usersService;
@RequestMapping("/selectList")
public String selectAl(HttpServletRequest request,IUsers users){
boolean dron=usersService.selectOne(users);
if (dron){
request.setAttribute("ulist",usersService.selectAll());
return "index";
}
request.setAttribute("error","賬號或密碼錯誤");
return "login";
}
@RequestMapping("/login")
public String login(){
return "login";
}
}
15、創建login.jsp和index.jsp
login.jsp
<%-- Created by IntelliJ IDEA. User: Administrator Date: 2019/1/21 Time: 15:02 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <meta charset="UTF-8"> <title>登錄</title> <link href="/static/css/bootstrap.css" rel="stylesheet"> <link href="/static/css/bootstrap-theme.css"rel="stylesheet"> <link href="/static/js/bootstrap.js"rel="stylesheet"> <link href="/static/js/jquery-3.3.1.js"rel="stylesheet"> </head> <body background="/static/wqw.jpg"> <div class="container"> <div class="row"> <form action="/selectList" method="post" class="form-horizontal col-sm-3 col-md-3"> <h3>Login Form</h3> <div class="col-md-9 col-sm-9"> <div class="form-group"> <span class="glyphicon glyphicon-user"></span> <input class="form-control" type="text" name="username" placeholder="username"> </div> <div class="form-group"> <span class="glyphicon glyphicon-lock"></span> <input class="form-control" type="password" name="password" placeholder="password"> </div> <div class="form-group"> <input class="btn btn-primary btn-lg btn-block" type="submit" value="登錄"> </div> <div> <h4>${error}</h4> </div> </div> </form> </div> </div> </body> </html>
index.jsp
<%-- Created by IntelliJ IDEA. User: Administrator Date: 2019/1/21 Time: 15:04 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <meta charset="UTF-8"> <title>首頁</title> <link href="/static/css/bootstrap.css" rel="stylesheet"> <link href="/static/css/bootstrap-theme.css" rel="stylesheet"> <link href="/static/js/bootstrap.js" rel="stylesheet"> <link href="/static/js/jquery-3.3.1.js" rel="stylesheet"> </head> <body> <table class="table table-hover"> <thead> <tr> <td>全選</td> <td>ID</td> <td>USERNAME</td> <td>PASSWORD</td> </tr> </thead> <tbody> <c:forEach var="users" items="${ulist}"> <tr> <td><input type="checkbox"></td> <td>${users.id}</td> <td>${users.username}</td> <td>${users.password}</td> </tr> </c:forEach> </tbody> </table> </body> </html>
16、測試運行
啟動成功 瀏覽器訪問 http://localhost:8080/login
輸入賬號密碼 查詢成功
到此ssm實現登錄查詢整合完成
(附:項目github地址 https://github.com/devil-xiaofei/forever.git)