登录项目

2 篇文章 0 订阅
2 篇文章 0 订阅

一、项目需求

项目要求:
使用Servlet+Druid+JdbcTemplate实现用户登录功能,后台为Mysql数据库

1.编写静态登录页面login.html,页面中包含:姓名,密码

2.编写处理登录功能的Servlet,使用注解版或配置版

3.使用MVC三层架构,编写Service层和Dao层,要有接口和实现类

4.在Dao层中使用Druid连接池和JdbcTemplate查询Mysql中的Users表数据,判断登录是否成功

5.要求编写druid.properties文件存放jdbc参数,编写JDBC工具类获取数据源DataSource

6.如果登录成功,跳转到success.html,提示:登录成功,欢迎您!

7.如果登录失败,继续跳转到登录页面。

8.登录页面需要使用js或jq进行表单验证:如果用户名或密码为空,则不允许提交,并在对应的输入框后面显示红色文字提示:用户名为空,或密码为空!

二、需要的包和类

在这里插入图片描述

在这里插入图片描述

三、代码

Users类代码:

package com.bean;

public class Users {
    private String name;
    private String psw;

    @Override
    public String toString() {
        return "Users{" +
                "name='" + name + '\'' +
                ", psw='" + psw + '\'' +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPsw() {
        return psw;
    }

    public void setPsw(String psw) {
        this.psw = psw;
    }
}

UserDaoImpl类:

package com.dao.impl;

import com.bean.Users;
import com.dao.UserDao;
import com.utils.JdbcUtil;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;

public class UserDaoImpl implements UserDao {
    @Override
    public boolean login(Users users) {
        JdbcTemplate t=new JdbcTemplate(JdbcUtil.getDs());
        Users users1;
        try {
            users1 = t.queryForObject("select name,psw from users where name=? and psw=?",
                    new BeanPropertyRowMapper<Users>(Users.class), users.getName(), users.getPsw());

        }catch (Exception e){

            System.out.println("账户或者密码错误");
            return false;
        }
        return users1!=null;
        }
}

UserDao接口:

package com.dao;

import com.bean.Users;

public interface UserDao {
     boolean login(Users users);
}

UserServiceImpl类:

package com.service.impl;

import com.bean.Users;
import com.dao.UserDao;
import com.dao.impl.UserDaoImpl;
import com.service.UserService;

public class UserServiceImpl implements UserService {
   private UserDao dao=new UserDaoImpl();

    @Override
    public boolean login(Users users) {
        return dao.login(users);
    }
}

UserService接口:

package com.service;

import com.bean.Users;

public interface UserService {
    boolean login(Users users);
}

JdbcUtil类:

package com.utils;

import com.alibaba.druid.pool.DruidDataSourceFactory;
import org.apache.commons.beanutils.BeanUtils;

import javax.sql.DataSource;
import java.io.FileInputStream;
import java.util.Map;
import java.util.Properties;

public class JdbcUtil {
    private static DataSource ds;
    static {
        Properties p=new Properties();
        try {
            p.load(new FileInputStream("D:\\java-two-train\\yuekao-one\\src\\druid.properties"));
            ds=new DruidDataSourceFactory().createDataSource(p);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static DataSource getDs(){ return ds;}
    public static <T> T mapToBean(Map map,Class<T> c){
        T t=null;
        try {
            t=c.newInstance();
            BeanUtils.populate(t,map);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return t;
    }
}

LoginServlet类:

package com.web;

import com.bean.Users;
import com.service.UserService;
import com.service.impl.UserServiceImpl;
import com.utils.JdbcUtil;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;

@WebServlet("/login")
public class LoginServlet extends HttpServlet {
    private UserService service=new UserServiceImpl();
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");
        Map<String, String[]> map = req.getParameterMap();
        Users users = JdbcUtil.mapToBean(map, Users.class);
        boolean login = service.login(users);
        if (login){
            req.getRequestDispatcher("/success.html").forward(req,resp);
        }else {
            req.getRequestDispatcher("/login1.html").forward(req,resp);
        }
    }
}

druid.properties文件:

url=jdbc:mysql:///db3?characterEncoding=utf-8
username=root
password=root

login1.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/jquery-3.3.1.js"></script>
</head>
<body>
<form action="/jml/login" method="post">
    姓名: <input type="text" name="name" id="name" value=""><span id="sp"></span>
    <br>
    密码: <input type="password" name="psw" id="psw" value="">
    <br>
    <input type="button" value="提交" id="b">
    <input type="submit" value="提交" id="s">
</form>
</body>
<script>
   $('#b').click(function () {
       var name = $('#name').val();
       var psw = $('#psw').val();
       if (name==''||psw==''){
           $('#sp').css('color','red')
           $('#sp').text('用户名或密码为空')
       }else {
           $("#s").trigger("click");
       }
   })

</script>
</html>

success.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>登陆成功</h1>
</body>
</html>

在这里插入图片描述

总结

以上就是登录项目的全部内容,主要是利用mysql、jdbc、servlet、html、css、jq等方面的技术和知识。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
function doublechooseclick() { //alert("doublechooseclick"); $.ajax({ type: "POST", dataType: "json", url: "/HttpUrl/UserReg.ashx?UserMail=" + emailTxt, success: function (msg) { // alert(msg.user); var user = msg.user; var balance = msg.balance; // alert(user); /// alert(balance); if (user != "") { location.href = "RegSuccess.html?user=" + user + "&balance=" + balance; //location.href实现客户端页面的跳转 // location.href = "RegSuccess.html"; //location.href实现客户端页面的跳转 } else { alert("注册失败!"); return; } } }); } //function doublechooseclick() { // $.post("/HttpUrl/UserReg.ashx", { id: "1", name: "join" }, function () { location.href = "/User/RegSuccess.html"; }); //} /**********************************************************************************/ //var falg = true; //定义是否通过的标志 //function bt_reg_C() { // location.href = "/User/reg.html "; //} //$(document).ready(function () { // $("#VerifyCode").bind("click", function () { // $("#VerifyCode img").attr("src", "/Httpurl/RandomImage.ashx?time=" + Math.random()); // }); // $("#bt_login").bind("click", function () { // //alert("1"); // login(); // }); //}); //function login() {///登陆 // var falg = ""; // var username = $("#UserName").val(); // var password = $("#PassWord").val(); // var val = $("#Validate").val(); // $.ajax({ // type: "POST", // url: "/HttpUrl/UserReg.ashx?Validate=" + val, // success: function (msg) { // var msg = "ok"; ///测试先写死,到时候进行屏蔽 // if (msg == "ok") { // falg = true; // if (falg) { // $.ajax({ // type: "POST", // url: "/HttpUrl/index.ashx?type=3&uname=" + username + "&pwd=" + password, // success: function (msg) { // if (msg.user == username) { // downdan("ssq", username); ///下单 // } // else { // alert("用户名密码错误!"); // } // } // }); // } // } // else { // alert("验证码不一致!"); // falg = false; // } // } // }); //} ///跳转按钮中的事件 最强护卫 function sure() { var combination = getcombination(); var amount = $("#pt_bs").val() - 0; var posturl = "/order/sure"; var count; var btype = $("input[name='buyType']:checked").val(); var title; //<li class="chasing_name"><span>追号名称:</span><input name="" type="text"></li> if (btype == 3) { posturl = "/order/autoplay"; count = $("#lx").val(); title = $(".chasing_name :text").val(); if (title == null || title == '') { title = '\u8ffd\u53f7'; } if (count == null || count <= 0) { alert("\u8bf7\u8f93\u5165\u8ffd\u53f7\u7684\u671f\u6570"); return; } } var lotterytype = $("#lotterytype").val(); if ($("#lx_buy").attr("checked") == "checked") { posturl = "/order/autoplay"; } $.ajax({ //一个Ajax过程 type: "post", url: posturl, dataType: 'json', data: { combination: combination, amount: amount, lotterytype: lotterytype, count: count, title: title }, success: function (data) { if (data.success == true) { tdialog("\u6210\u529f ", "\u8d2d\u4e70\u6210\u529f,\u8bf7<a href='/payment/pay?orderid=" + data.orderid + "&money=" + data.money + "' target='_blank'>\u4ed8\u6b3e</a>"); } else if (data.status == 0) { $.ajax({ type: "get", url: "/home/login", data: { isdialog: true }, success: function (data) { if (btype == 1) { var m = "<div class='Directbuy'><h2>\u76f4\u63a5\u8d2d\u4e70</h2>-<h4>\u65e0\u9700\u767b\u5f55\u5c31\u53ef\u8d2d\u4e70</h4><ul class='popUp_logincon'><li><span class='popUp_loginname'></span><div class='popUp_error' id='noneuserinfo'></div></li><li><span class='popUp_loginname'>\u771f\u5b9e\u59d3\u540d</span><input class='login_input' type='text' name='realname'></li>"; m += "<li><span class='popUp_loginname'>\u8eab\u4efd\u8bc1\u53f7\u7801</span><input class='login_input' type='text' name='idcard'></li>"; m += "<li><span class='popUp_loginname'>\u4e2d\u5956\u8054\u7cfb\u624b\u673a</span><input class='login_input' type='text' name='mobile'></li>"; m += "<li><span class='popUp_loginname'></span><input class='popUp_btn' type='button' name='noneuserbuy' value='\u76f4\u63a5\u8d2d\u4e70' onclick='noneuserbuy();' /></li></ul></div>"; tdialog("\u8bf7\u767b\u5f55", m + data); } else if (btype == 3) { tdialog("\u8bf7\u767b\u5f55", data); } } }); } else if (data.status == 2) { tdialog("\u8bf7\u5b8c\u5584\u8eab\u4efd\u4fe1\u606f", "<a class='improve' href='/account/userinfo' target='_blank'>\u70b9\u6b64\u5b8c\u5584\u4fe1\u606f</a>"); } else { tdialog("\u5931\u8d25\u4e86", data.info); } } }); }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值