整合SSM制作登录注册功能
首先 引入pom.xml 配置 对应版本确定无冲突 注意反射插件的引入路径
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.kkb</groupId>
<artifactId>myssm_kkb</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<!--SSM整合 spring-springMVC mybatis mysql -->
<!-- 集中定义依赖版本号:一定要注意版本号,避免踩坑-->
<properties>
<spring.version>5.2.13.RELEASE</spring.version>
<mybatis.version>3.5.6</mybatis.version>
<mybatis.spring.version>1.3.3</mybatis.spring.version>
<pagehelper.version>5.1.10</pagehelper.version>
<mysql.version>8.0.23</mysql.version>
<druid.version>1.2.3</druid.version>
<servlet-api.version>4.0.1</servlet-api.version>
<jackson.version>2.9.6</jackson.version>
<log4j.version>1.2.17</log4j.version>
<junit.version>4.12</junit.version>
</properties>
<dependencies>
<!-- spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</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-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<!--文件上传-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<!-- Mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!-- Mybatis spring整合需要的jar -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis.spring.version}</version>
</dependency>
<!-- 分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>${pagehelper.version}</version>
</dependency>
<!-- MySql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!-- 连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
<!-- servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${servlet-api.version}</version>
<scope>provided</scope>
</dependency>
<!-- Jackson Json处理工具包 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<!-- log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<!-- junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<!--@Resource注解的依赖-->
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</dependency>
</dependencies>
<!-- 插件配置 -->
<build>
<resources>
<resource>
<directory>src/main/java</directory><!--所在的目录-->
<includes><!--包括目录下的.properties,.xml 文件都会被扫描到-->
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
<plugins>
<!-- 设置项目的编译版本 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- 设置tomcat插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<!-- 指定端口 -->
<port>80</port>
<!-- 请求路径 -->
<path>/</path>
<uriEncoding>UTF-8</uriEncoding>
</configuration>
</plugin>
<!--反向生成插件-->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<configuration>
<!--配置文件的路径-->
<configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
</configuration>
<dependencies>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.5</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
login.html 登录页面
<form action="/admin/test01" method="get">
username:<input type="text" name="username"/><br/>
password:<input type="text" name="password"/><br/>
<button type="submit">提交</button>
<a href="../pages/register.html">注册</a>
</form>
register.html 注册页面
<form action="/admin/register" method="get" >
username:<input type="text" name="username"><br>
password:<input type="text" name="password"><br>
<button type="submit">注册</button>
</form>
注意pom.xml 引入了反向生成插件,右边插件列表双击后自动生成mapper文件和pojo文件
resources底下需要配置的文件就不发了 若有需要评论即可 现在看下我们的包和类
刚刚说了 mapper和pojo是反向生成插件自动生成,并且对应着数据库的字段属性一模一样,登录和注册需要用到的方法在AdminMapper里有,思路就是在Controller层接受前端传递过来的username和password,最后调用我们即将书写的service的方法进行登录的用户名密码判断和注册方法也就是增加方法即可,所以我们现在需要写service为Controller服务。
这里不做过多讲解,有疑问可以评论。
package com.kkb.service;
import com.kkb.mapper.AdminMapper;
import com.kkb.pojo.Admin;
import com.kkb.pojo.AdminExample;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
@Service
public class AdminService {
@Resource
private AdminMapper adminMapper;
//根据传进来的账号密码 查询数据库
@Transactional(propagation = Propagation.REQUIRED,readOnly = true)
public boolean findPassByName(String username, String password){
Admin admin = adminMapper.selectByPrimaryKey(username);
if (admin.getPassword().equals(password)) {
return true;
}
return false;
}
//不是readOnly
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class})
public boolean insertNamePass(String username,String password){
Admin admin = new Admin();
admin.setUsername(username);
admin.setPassword(password);
int insert = adminMapper.insert(admin);
return true;
}
}
最后完成Controller层
package com.kkb.controller;
import com.alibaba.druid.stat.TableStat;
import com.kkb.pojo.Admin;
import com.kkb.service.AdminService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
@Controller
@ResponseBody
@RequestMapping("admin")
public class AdminController {
@Resource
private AdminService adminService;
@RequestMapping("test01")
public ModelAndView test01(HttpServletRequest request){
String username = request.getParameter("username");
String password = request.getParameter("password");
boolean passByName = adminService.findPassByName(username, password);
if (passByName){
return new ModelAndView("success");
}
return new ModelAndView("error");
}
@RequestMapping("register")
public ModelAndView register(HttpServletRequest request){
String username = request.getParameter("username");
String password = request.getParameter("password");
//创建对象
Admin admin = new Admin(username,password);
boolean flag = adminService.insertNamePass(admin.getUsername(), admin.getPassword());
if(flag){
return new ModelAndView("login");
}
return new ModelAndView("error");
}
}
运行!(和数据库对比)即可
反之返回错误页面 谢谢!
博主是个菜鸡...慢慢积累也许就能...变得更菜了QAQ