java登录功能如何实现?java登录功能的实现

Java是现在最流行的编程语言,生活中很多地方都与java息息相关,因此学会java,不仅会有高薪工作,还可以自己做一些软件,那java登录功能如何实现?下面来我们就来给大家讲解一下。

首先我们要JavaWeb登陆的基本流程:JSP页面发送请求——>Servlet——>Servlet通过调用方法从数据库中得到数据并将结果返回页面。

我们先建立三个jsp页面,包括login.jsp(登陆页面)、index.jsp(显示登陆成功后的信息)、error.jsp(登录失败的页面),其中后两个页面的内容可以随意写,而login.jsp页面的主要内容如下:

<form action = "LoginServlet"
method = "post" >
    用户名: <input type="text" name="userName"/>
密码: < input type = "password"
name = "password" / >
    <input type="submit" value="提交"/> <
    /form>

在login.jsp文件的开头我们需要将pageEncoding="ISO-8859-1"改为pageEncoding="utf-8"(同时不要忘记设置开发工具的编码格式,不然jsp页面会显示乱码)

根据用户名和密码两个属性我们建立相应的实体类,并添加get和set方法,代码如下:

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

而jsp页面中的action=“LoginServlet”是指将请求发送到Servlet处理。接下来我们转到Servlet来进行处理:

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.test.dao.UserDao;
//创建时为Servlet而不是Class,需要在web.xml中进行配置,配置的代码Myeclipse将自动生成
public class LoginServlet extends HttpServlet
{
    //创建UserDao的对象,以便于查询数据库
    UserDao userDao = new UserDao();
    //以下doGet方法和doPost方法分别对应form表单中的method="get"和method="post"
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    {}
    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    {
        //利用getParameter方法获取到前台文本框中输入的值,其中括号内的内容为<input/>标签中的name属性
        String userName = request.getParameter("userName");
        String password = request.getParameter("password");
        //调用UserDao中的getSelect方法并获取到返回值
        boolean flag = userDao.getSelect(userName, password);
        //若用户名和密码存在则转发到index.jsp页面,否则重定向到error.jsp页面
        if (flag)
        {
            request.getRequestDispatcher("index.jsp")
                .forward(request, response);
        }
        else
            response.sendRedirect("error.jsp");
    }
}

注释 中已经说的很明白了,就不再重复了,可以看看第26行和29行,其中26行是转发,29行是重定向,感兴趣的小伙伴可以查查两者的区别。剩下的一部分就是我们之前提到过的关于数据库的查询操作了,我们在23行进行了调用,下面我们完成调用的方法:

package com.test.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class UserDao
{
    //连接数据库的代码
    public Connection getCon()
    {
        //数据库连接名称
        String username = "root";
        //数据库连接密码
        String password = "";
        String driver = "com.mysql.jdbc.Driver";
        //其中test为数据库名称
        String url = "jdbc:mysql://localhost:3306/test";
        Connection conn = null;
        try
        {
            Class.forName(driver);
            conn = (Connection) DriverManager.getConnection(url, username, password);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        return conn;
    }
    //进行查询的方法,若含有满足条件的数据则返回true
    public boolean getSelect(String userName, String password)
    {
        boolean flag = false;
        String sql = "select * from user where userName='" + userName + "' and password='" + password + "'";
        Connection conn = getCon();
        PreparedStatement pst = null;
        try
        {
            pst = (PreparedStatement) conn.prepareStatement(sql);
            ResultSet rs = pst.executeQuery();
            if (rs.next())
            {
                flag = true;
            }
        }
        catch (Exception e)
        {}
        return flag;
    }
}

在这个方法中我们首先连接数据库,然后在查询的方法中传入从jsp页面获取到的userName和password,判断数据库中是否存在此用户名和密码的用户,如果存在则返回true,否则返回false(不要忘记导入数据库链接的包)。

至于数据库中的字段则参照实体类User建立即可,即包含userName和password两个属性,如果数据库链接还有问题的请参照之前的关于数据库部分的随笔。

最后看一下web.xml中的配置:

<? xml version = "1.0"
encoding = "UTF-8" ? >
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
 <servlet>
 <servlet-name>LoginServlet</servlet-name>
 <servlet-class>com.test.servlet.LoginServlet</servlet-class>
 </servlet>
 <servlet-mapping>
 <servlet-name>LoginServlet</servlet-name>
 <url-pattern>/LoginServlet</url-pattern>
 </servlet-mapping>
</web-app>

其中中的可以随意写,只需要保证上下两部分相同即可。

然后是是自己定义的Servlet的路径(包含包名),最后是,里面的内容也可以随意写,但是jsp页面中form表单的action属性必须与此名称相同(action中不包含"/")

最后我们需要将web项目发布到tomcat中然后在浏览器输入:http://localhost:8080/项目名称/login.jsp就可以进行访问并登陆了。

这样就实现了java登陆功能,可以看出变成一个登陆功能还是需要费点时间的,不过能将这些功能实现出来,自己也会有成就感哦!最后大家如果想要了解更多java实例知识,敬请关注奇Q工具网。

推荐阅读:

java笔试编程题有哪些?java笔试编程题分享

面试java学什么?面试java有哪些基础题?

java注册功能如何编写?java注册功能编写实操