使用 eclipse 和 mysql 创建一个简单的登录页面

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/23020003/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-31 20:25:04  来源:igfitidea点击:

Create a simple Login page using eclipse and mysql

mysqleclipsejspservlets

提问by NewDev

I have created a simple login page in which user will give an username and password. After clicking on submit button it will show welcome user. But it is not giving any result This is my index page

我创建了一个简单的登录页面,用户将在其中提供用户名和密码。单击提交按钮后,它将显示欢迎用户。但它没有给出任何结果 这是我的索引页

This is my index login page :

这是我的索引登录页面:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <link rel="stylesheet" type="text/css" href="style.css"/>
    <title>Login</title>
</head>
<body>
    <%
        String error_msg = "";
        Object error = request.getAttribute("error");
        if (error != null) error_msg = error.toString();
    %>
    <div id="Container">
        <div id="Header">
            <h1>Online File Management System</h1>
        </div>
        <a href="../index.html" target="_self">Home</a>
        <div id="Content">
            <div id="Login">
                <form action="login">
                    <table align = "center" bgcolor=#66CCFF>
                        <tr><td align = "left">Username:   </td>
                            <td rowspan="7" valign="middle">
                                    <font color="red"> <%= error_msg %> </font>
                                    <p>You can also Login using Google</p>
                                    <p class="Google"><input name="Submit" type="Submit" value="Login with Google Account"></p> 
                            </td>
                        </tr>
                        <tr>
                            <td><input name="username" type="text" size="30"></td>
                            <td></td>
                        </tr>
                        <tr><td align = "left">Password:</td></tr>
                        <tr><td><input name="password" type="password" size="30"></td></tr>
                        <tr><td align = "left">Forgot your password?</td></tr>
                        <tr><td align = "left">Remember me       <input type="checkbox" name="checkbox" value="checkbox"></td></tr>
                        <tr><td align = "left"><input type="Submit" value="LOGIN"></td></tr>
                    </table>
                </form>
                <hr>
            </div>
        </div>
        <div id="Footer">
            Copyright &copy; 2014 Office of the Vice Chancellor.
        </div>
    </div>  
</body>
</html>

This is my Database conectivity page :

这是我的数据库连接页面:

package org.form.login;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import org.apache.catalina.connector.Request;

public class database {

    @SuppressWarnings("null")
    public String validateUserLogin (String username, String password) throws SQLException{
        Connection connection = null;
        ResultSet resultset = null;
        Statement statement = null;

        String fullname = "";

        String DRIVER = "com.mysql.jdbc.Driver";
        String URL = "jdbc:mysql://localhost:3306/onfms";
        String USER = "root";
        String PASS = "";
        String QUERY = "SELECT * FROM tblUser WHERE fldUser_Name = '"+
            username+"'          AND fldPassword = '"+password+"' ";
        try {
            Class.forName(DRIVER);
            connection = DriverManager.getConnection(URL,USER,PASS);
            resultset = statement.executeQuery(QUERY);
        }   catch (Exception e){
            e.printStackTrace();
        }   finally {
            if (resultset != null)
                resultset.close();
            if (statement != null)
                statement.close();
            if (connection != null)
                connection.close();
        }
    }
}

This is my login servlet page:

这是我的登录 servlet 页面:

package org.form.login;

import java.io.IOException;
import java.sql.SQLException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
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.form.login.database;

/**
 * Servlet implementation class login
 */
@WebServlet("/login")
public class login extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public login() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        String url = "/main.jsp";
        String user = request.getParameter("username");
        String pass = request.getParameter("password");
        if (user == null || user.length() == 0 ||pass == null || pass.length() == 0) {
            url = "/index.jsp";
            request.setAttribute("error", "Username & Password must not be empty.");
        }else{
            try {
                String fullname = new database().validateUserLogin(user, pass);
                request.setAttribute("fullname", fullname);
                if (fullname != null || fullname.length() != 0){
                    request.setAttribute("sucess", "Sucessfull Connection");
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        ServletContext context = getServletContext();
        RequestDispatcher dispatcher = context.getRequestDispatcher(url);
        dispatcher.forward(request, response);
    }

    /**
    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
    */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }
}

This is my final Page where I display my result

这是我显示结果的最后一页

 <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org    /TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Desk Board</title>
</head>
<body>
Hello
<%
    String sucess_message ="";
    Object sucess = request.getAttribute("sucess");
    if (sucess != null ) sucess_message = sucess.toString();
%>
<%= sucess_message %>
</body>
</html>

回答by Smit Shilu

use this code it is working

使用此代码它正在工作

// index.jsp or login.jsp

// index.jsp 或 login.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

<form action="login" method="post">
Username : <input type="text" name="username"><br>
Password : <input type="password" name="pass"><br>
<input type="submit"><br>
</form>

</body>
</html>

// authentication servlet class

// 认证servlet类

    import java.io.IOException;
    import java.io.PrintWriter;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;

    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    public class auth extends HttpServlet {
        private static final long serialVersionUID = 1L;

        public auth() {
            super();
        }
        protected void doGet(HttpServletRequest request,
                HttpServletResponse response) throws ServletException, IOException {

        }

        protected void doPost(HttpServletRequest request,
                HttpServletResponse response) throws ServletException, IOException {

            try {
                Class.forName("com.mysql.jdbc.Driver");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }

            String username = request.getParameter("username");
            String pass = request.getParameter("pass");

            String sql = "select * from reg where username='" + username + "'";
            Connection conn = null;

            try {
                conn = DriverManager.getConnection("jdbc:mysql://localhost/Exam",
                        "root", "");
                Statement s = conn.createStatement();

                java.sql.ResultSet rs = s.executeQuery(sql);
                String un = null;
                String pw = null;
                String name = null;

            /* Need to put some condition in case the above query does not return any row, else code will throw Null Pointer exception */   

            PrintWriter prwr1 = response.getWriter();               
            if(!rs.isBeforeFirst()){
                prwr1.write("<h1> No Such User in Database<h1>");
            } else {

/* Conditions to be executed after at least one row is returned by query execution */ 
                while (rs.next()) {
                    un = rs.getString("username");
                    pw = rs.getString("password");
                    name = rs.getString("name");
                }

                PrintWriter pww = response.getWriter();

                if (un.equalsIgnoreCase(username) && pw.equals(pass)) {
                                // use this or create request dispatcher 
                    response.setContentType("text/html");
                    pww.write("<h1>Welcome, " + name + "</h1>");
                } else {
                    pww.write("wrong username or password\n");
                }
              }

            } catch (SQLException e) {
                e.printStackTrace();
            }

        }

    }

回答by Aditya Ekbote

You Can simply Use One Jsp Page To accomplish the task.

您可以简单地使用一个 Jsp 页面来完成任务。

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java.sql.*"%>
<!DOCTYPE html>
<html>
   <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    <%
        String username=request.getParameter("user_name");
        String password=request.getParameter("password");
        String role=request.getParameter("role");
        try
        {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/t_fleet","root","root");
            Statement st=con.createStatement();
            String query="select * from tbl_login where user_name='"+username+"' and password='"+password+"' and role='"+role+"'";
            ResultSet rs=st.executeQuery(query);
            while(rs.next())
            {
                session.setAttribute( "user_name",rs.getString(2));
                session.setMaxInactiveInterval(3000);
                response.sendRedirect("homepage.jsp");
            }
            %>



        <%}
        catch(Exception e)
        {
            out.println(e);
        }
    %>

</body>

I have use username, password and role to get into the system. One more thing to implement is you can do page permission checking through jsp and javascript function.

我已经使用用户名、密码和角色进入系统。要实现的另一件事是您可以通过jsp和javascript函数进行页面权限检查。