Springboot+thymeleaf+layui登录注册demo

新手小白上路,做一次博客记录下开发遇见的问题。

我们选用的框架是springboot,

模板选用是thymeleaf(spring boot默认不支持jsp,当然也可以通过配置来使用,但是官方推荐用thymeleaf模板,就选择了这个。),

前端框架使用了layui和jquery,

数据库选用的是mysql。

整体目录结构。

配置

spring.datasource.driver-class-name = com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource  
# \u521D\u59CB\u5316\u5927\u5C0F\uFF0C\u6700\u5C0F\uFF0C\u6700\u5927
spring.datasource.initialSize=5    
spring.datasource.minIdle=5    
spring.datasource.maxActive=20    
# \u914D\u7F6E\u83B7\u53D6\u8FDE\u63A5\u7B49\u5F85\u8D85\u65F6\u7684\u65F6\u95F4
spring.datasource.maxWait=60000
mybatis.mapper-locations=classpath*:mapper/*Mapper.xml  
mybatis.type-aliases-package=com.example.demo.entity 

server.port=8080
spring.thymeleaf.cache=false
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.check-template-location=true
spring.thymeleaf.suffix=.html
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.servlet.content-type=text/html
spring.thymeleaf.mode=HTML5
spring.mvc.static-path-pattern=/static/**

以上是application配置。

重点是spring.mvc.static-path-pattern=/static/**这句不配置的话加载不到静态资源。

对,我们用到了通用mapper,这里有个要记录的点。

@MapperScan(basePackages = "com.example.demo.dao")
@SpringBootApplication
public class DemoApplication {
	@Autowired
	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}
}

在启动springboot的文件中要加上注解@MapperScan(basePackages = "com.example.demo.dao")以及对应的dao层的包。

还有一点是扫描dao层接口时,dao层接口不能直接继承mapper,这样会报错的。

baseDao:

public interface BaseMapper <T>extends
        tk.mybatis.mapper.common.BaseMapper<T>,
        SelectByExampleMapper<T>,
        DeleteByExampleMapper<T>,
        SelectCountByExampleMapper<T>,
        UpdateByExampleSelectiveMapper<T>,
        UpdateByExampleMapper<T> {
}

然后你要使用的UserDao进行继承,这样就可以通过扫描。

@Controller
@RequestMapping(value = "/user")
public class DemoController {
    @Autowired
    private UserService userService;
    private static final Logger LOGGER = LoggerFactory.getLogger(DemoController.class);
    @RequestMapping(value = "/hello")
    public String firstController(){
        return "login";
    }
    @RequestMapping(value = "/login")
    public String login(String account, String password, HttpServletRequest request){
        if(account != null && password != null){
           User user =  userService.getUser(account,password);
           request.setAttribute("result",new ResultModle("200","success!",user));
            return "user/user";
        }
        request.setAttribute("result",new ResultModle("404","fail!"));
        return "login";
    }
    @RequestMapping(value = "/returnReg")
    public String returnReg(){
        return "reg";
    }
    @RequestMapping(value = "/checkAccount.action")
    @ResponseBody
    public ResultModle checkAccount(String account){
        System.out.println(account+"sdfhjkasdhjkfdshjkfhjkasfhjkdsadhjkfhjk lsdfhjklsadhjklfkhjsdafweyuiorfgyudvbvh djkhgtfuic vbhnjkds");
        if(userService.checkAccount(account) == 0) {
            return new ResultModle("200", "SUCCESS");
    }
        return new ResultModle("404", "Fail");
    }
}

Cotroller层代码。这里没有什么需要注意的。

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" th:href="@{../static/layui/css/layui.css}"/>
    <style>
        .window{
            width: 400px;
            position: absolute;
            margin-left: -200px;
            margin-top: -80px;
            top: 50%;
            left: 50%;
            display: block;
            z-index: 2000;
            background: #fff;
            padding: 20 0;
        }
    </style>
</head>
<body style="background: #f1f1f1;">
<div class="window">
    <form  class="layui-form" method="post" action="/user/login">
        <div class="layui-form-item" style="margin-right: 100px;margin-top: 20px;">
            <label class="layui-form-label">用户名:</label>
            <div class="layui-input-block">
                <input type="text" name="account" 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">
            <input type="checkbox" name="" title="写作" lay-skin="primary" checked>
            <div style="margin-left: 50px;margin-bottom: 10px;" class="layui-unselect layui-form-checkbox" lay-skin="primary"><span>保持登录7天</span><i class="layui-icon"></i></div>
            <div style="text-align: center;">
                <input type="submit" class="layui-btn"  value="登      录"/>
                <a href="/user/returnReg" class="layui-btn">注      册</a>
            </div>
        </div>
    </form>
</div>
</body>
</html>

登录页面代码,这里还没有全部写好。

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" th:href="@{../static/layui/css/layui.css}"/>
    <script type="text/javascript" src="/static/jquery-3.3.1.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
            $("#account").blur(function(){
                $.ajax({
                    url:'/user/checkAccount.action',
                    type:'post',
                    data:{
                        account:$("#account").val()
                    },
                    success:function (data) {
                        if(data.code == 200){
                            alert("账号可以使用");
                            $("#account").css("background-color","#00FF00");
                        }else if(data.code == 404){
                            alert("账号已被注册");
                            $("#account").css("background-color","#FF0000");
                        }
                    }
                })
            });
        });
    </script>
    <style>
        .window{
            width: 400px;
            position: absolute;
            margin-left: -200px;
            margin-top: -80px;
            top: 50%;
            left: 50%;
            display: block;
            z-index: 2000;
            background: #fff;
            padding: 20 0;
        }
    </style>
</head>
<body style="background: #f1f1f1;">
<div class="window">
    <form  class="layui-form" method="post" action="/user/login">
        <div class="layui-form-item" style="margin-right: 100px;margin-top: 20px;">
            <label class="layui-form-label">用户名:</label>
            <div class="layui-input-block">
                <input type="text" name="account" required  lay-verify="required" placeholder="请输入账号" autocomplete="off" class="layui-input" id="account">
            </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" id="password">
            </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" id="spassword">
            </div>
        </div>
        <div class="layui-form-item">
            <input type="checkbox" name="" title="写作" lay-skin="primary" checked>
            <div style="margin-left: 50px;margin-bottom: 10px;" class="layui-unselect layui-form-checkbox" lay-skin="primary"><span>保持登录7天</span><i class="layui-icon"></i></div>
            <div style="text-align: center;">
                <input type="submit" class="layui-btn"  value="注      测"/>
            </div>
        </div>
    </form>


</div>

</body>
</html>

注册代码。这里有些需要注意的,再写这一块时,我发现两个问题:

1.写的js代码不放到头标签中不能使用,加载不出来。

2.写ajax时,url指定时直接写url:/user/**时模板会找到templates目录下,不能直接找到接口。要在接口后的路径以及url的路径后加上.action才行。

那位大佬看到了帮我解释一下为什么?不胜感激。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值