首页 > 数据库技术 > 详细

JavaWeb+JDBC+Servlet+SqlServer实现登录功能

时间:2018-05-17 19:31:26      阅读:275      评论:0      收藏:0      [点我收藏+]

首先创建javaweb项目,可以参照以下:

https://blog.csdn.net/u012532559/article/details/51013400

附上项目结构:

技术分享图片

1.重写登录页面index.jsp的内容

<%--
  Created by IntelliJ IDEA.
  User: LXJ‘PC
  Date: 2018/5/12
  Time: 15:49
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>登录</title>
  </head>
  <body>
    <div id="container" style="width: 300px;margin: 0px auto">
      <div id="box">
        <form action="LoginServlet" methods="post">
          <div class="main">
            <div>
              <label>用户名:</label>
              <input name="userName" value="">
            </div>
            <div>
              <label>密码:</label>
              <input type="passWord" name="passWord" value="">
            </div>
            <div>
              <input type="submit" value="登录">
            </div>
          </div>
        </form>
      </div>
    </div>
  </body>
</html>

2.新建类DBUtil

package org.user.util;
import java.sql.*;

public class DBUtil {
    //mysql驱动包名
    private static final String DRIVER_NAME = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    //数据库连接地址
    private static final String URL = "jdbc:sqlserver://localhost:1433;integratedSecurity=true;DatabaseName=JavaWeb";
    //用户名
    private static final String USER_NAME = ".";
    //密码
    private static final String PASSWORD = "";

    public static Connection getConnection(){
        try {
            //加载mysql的驱动类
            Class.forName(DRIVER_NAME);
            //获取数据库连接
            return DriverManager.getConnection(URL);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public static void closeConn(Connection conn,Statement stm , ResultSet rs ){
        if(stm!=null){
            try {
                stm.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(rs!=null){
            try{
                rs.close();
            }catch(SQLException e){
                e.printStackTrace();
            }
        }
    }
    public static void main(String[] args){
        System.out.println(getConnection());
    }
}

3.新建实体类User

package org.user.entity;

public class User {
    private String userName;
    private String passWord;

    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;
    }
}

4.新建类UserDao

package org.user.dao;

import java.sql.*;
import org.user.entity.User;
import org.user.util.DBUtil;
public class UserDao {
    //根据用户名查找用户
    public User findUserByName(String userName){
        //编写sql语句
        String sql="select * from Login where userName=?";
        //获得连接
        Connection conn= DBUtil.getConnection();
        //有返回的结果
        ResultSet rs= null;
        //实例化一个User对象
        User user = new User();
        try {
            //用来发送sql语句的
            PreparedStatement ps = conn.prepareStatement(sql);
            //设置要传入的参数,这里是userN
            ps.setString(1, userName);
            //执行sql语句
            rs=ps.executeQuery();
            //如果能找到结果
            if(rs.next()){
                //则把找到的结果一一set进User对象中
                user.setUserName(rs.getString(1));
                user.setPassWord(rs.getString(2));
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        finally {//关闭连接
            DBUtil.closeConn(conn, null, rs);
        }
        //最后要把这个user返回出去
        return user;
    }

    public static void main(String[] args) {
        UserDao dao = new UserDao();
        User i = dao.findUserByName("lxj");
        System.out.println(i.getPassWord());
    }
}

5.新建服务类LoginService

package org.user.service;

import org.user.dao.UserDao;
import org.user.entity.User;
public class LoginService {
    public boolean checkUser(String userName, String passWord) {
        UserDao dao = new UserDao();
        User user = dao.findUserByName(userName);
        System.out.println(user);
        return user != null && passWord.equals(user.getPassWord()) ? true : false;
    }
}

6.新建servlet类LoginServlet

package org.user.servlet;

import java.io.IOException;
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 org.user.dao.UserDao;
import org.user.entity.User;
import org.user.service.LoginService;

@WebServlet(name = "LoginServlet")
public class LoginServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    // 在本电脑的D:\java-jdk8\bin路径下放入了sqljdbc_auth.dll文件;解决了登录不成功问题
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置编码
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        //获取从页面中提交过来的数据
        String userName = request.getParameter("userName");
        String userPass = request.getParameter("passWord");

        LoginService service = new LoginService();
        //调用service方法 把用户名 密码传入给service
        boolean flag = service.checkUser(userName, userPass);
        String msg = flag?"success":"error";

        request.setAttribute("msg", msg);
        if(msg=="success"){
            request.getRequestDispatcher("login_success.jsp").forward(request, response);
        }
        else{
            request.getRequestDispatcher("login_failure.jsp").forward(request, response);
        }
    }

}

7.最后在index.jsp同级目录下新建login_success.jsp和login_failure.jsp文件用于登录成功或失败跳转页面提示用的。

提示:如果出现警告: Failed to load the sqljdbc_auth.dll cause :- no sqljdbc_auth in java.library.path,可以把sqljdbc_auth.dll文件在放入你点jdk目录下的bin文件夹里,例如我自己的电脑的D:\java-jdk8\bin路径下放入了sqljdbc_auth.dll文件

JavaWeb+JDBC+Servlet+SqlServer实现登录功能

原文:https://www.cnblogs.com/9968jie/p/9052670.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!