目录
- 前言:
- 完整项目结构
- 预实现功能
- 后台代码实现
- 创建controller
- model
- service
- mapper
- mapper.xml
- 运行测试
- 前端代码实现
- 导入相关文件
- index.html
- index.js
- 注意点
- 将登录页设置为项目欢迎页
- Tomcat设置
- spring-mvc.xml修改静态资源的位置
- 实现
- 登录界面
- 小结
前言:
SSM实现简单登录现有的项目已经很多了,这边主要是为了自己的回顾,使用的是IDEA
SSM整合请看系列九与系列八
完整项目结构
预实现功能
数据库中admin用户,页面登录,后台判断用户与密码,成功则跳转
后台代码实现
创建controller
@RestController
@RequestMapping("login")
public class LoginController {
@Autowired
private UserService userService;
@RequestMapping("checkLogin")
public String login(String username,String password){
User user = userService.checkLogin(username,password);
if (user!=null){
return "success";
}
return "fail";
}
}
model
public class User {
private String id;
private String name;
private String password;
...(get set)
}
service
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public User checkLogin(String username, String password) {
return userMapper.checkLogin(username,password);
}
}
mapper
public interface UserMapper{
User checkLogin(@Param("username") String username,@Param("password") String password);
}
mapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- 该文件代表的是类和表的映射关系,关于表的sql语句等等写在这里 -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.demo.mapper.UserMapper">
<select id="checkLogin" resultType="com.demo.model.User">
select * from user where name = #{username} and password =#{password}
</select>
</mapper>
运行测试
到这步,后台代码已经成功了,接下去就是前端的部分
前端代码实现
前端部分用了layui,因为方便快捷(主要还是懒),具体的都可以去layui官网看参考文档,下面就不祥讲了
导入相关文件
layui相关文件可以直接在官网下载,将其文件夹放入到静态资源文件中,静态资源文件放在WEB-INF外面(否则会导致静态资源访问不到,具体另外讲),如图:
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>登入</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
<link rel="stylesheet" href="../resources/layui-v2.5.7/css/layui.css">
</head>
<body>
<div style="width: 20%;margin:20px auto">
<form class="layui-form" action="">
<div class="layui-form-item">
<label class="layui-form-label">账号</label>
<div class="layui-input-inline">
<input type="text" name="username" required lay-verify="required" placeholder="请输入账号" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">密码</label>
<div class="layui-input-inline">
<input type="password" name="password" required lay-verify="required" placeholder="请输入密码" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="submit">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
<script src="../resources/layui-v2.5.7/layui.js"></script>
<script src="../page/index.js"></script>
</body>
</html>
index.js
layui.use(['layer', 'form'], function() {
var $ = layui.$,
layer = layui.layer,
form = layui.form
form.on('submit(submit)', function(data){
console.log(data.field) //当前容器的全部表单字段,名值对形式:{name: value}
$.ajax({
url: 'http://localhost:8081/login/checkLogin',
type: "post",
data:data.field,
success : function(data) {
window.location.href ="http://localhost:8081/page/hello.html" ;
},
})
// return false; //阻止表单跳转。如果需要表单跳转,去掉这段即可。
});
// form.render();
})
注意点
将登录页设置为项目欢迎页
web.xml中修改
<welcome-file-list>
<welcome-file>page/index.html</welcome-file>
</welcome-file-list>
因为登录页目录为
Tomcat设置
如果设置成http://localhost:8081/demospring会导致静态资源路径错误
原因:
由于加入了默认工程所以对于工程名demospring的访问http://localhost:8081/demospring/和http://localhost:8081/是一样的。
再看html文件中路径的写法:,这样写成绝对路径,访问时就变成了http://localhost:8081/resources/layui-v2.5.7/css/layui.css
但是实际的路径是http://localhost:8081/demospring/resources/layui-v2.5.7/css/layui.css
(但是这个有可能会导致这个问题:部署到服务器后无法访问静态资源)
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.xsd">
<!-- 扫描controller -->
<context:component-scan base-package="com.demo.controller" />
<!-- 当配置了mvc:annotation-driven/后,Spring就知道了我们启用注解驱动。然后Spring通过context:component-scan/标签的配置,
会自动为我们将扫描到的@Component,@Controller,@Service,@Repository等注解标记的组件注册到工厂中,来处理我们的请求 -->
<mvc:annotation-driven />
<!--通过location,可以重新定义资源文件的位置-->
<mvc:resources mapping="/resources/**" location="/resources/"/>
<!--静态页面,如html,css,js,images可以访问-->
<mvc:default-servlet-handler />
<!-- 视图定位到/WEB/INF/jsp 这个目录下 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/page/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
实现
登录界面
登录成功
小结
在实现前后端时,发生了静态资源访问404的情况,在这里另外起一篇进行讲解