zoukankan      html  css  js  c++  java
  • 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=" 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-jdk8in路径下放入了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-jdk8in路径下放入了sqljdbc_auth.dll文件

  • 相关阅读:
    异常
    一线互联网大厂,内推吧!
    node-sass 安装失败的解决办法
    上下文执行栈
    1像素边框
    babel需要这样配置
    【webpack】中enforce的使用方法
    【webpack】中resolveLoader的使用方法
    【webpack】中的devtool的使用方法
    【webpack】中splitChunk的使用方法
  • 原文地址:https://www.cnblogs.com/9968jie/p/9052670.html
Copyright © 2011-2022 走看看