JavaWeb+JDBC+Servlet+SqlServer實現登錄功能


首先創建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文件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM