使用java,tomcat,mysql实现登录功能

来源:互联网 发布:时间安排手机软件 知乎 编辑:程序博客网 时间:2024/06/09 19:58

第一步,创建动态web项目
New-Other找到web下的Dynamic Web Project点击Next

输入项目名,完成即可
这里写图片描述

第二步,导入JDBC包,和配置Tomcat服务
导入jar包参考下面链接里的普通方法,这里不多加介绍
http://blog.csdn.net/children_of_light/article/details/54985869
这里写图片描述

配置Tomcat服务如图,找到Window-Preferences-Server-Runtime Environm然后点击Add…然后OK
这里写图片描述

这时按需求选择需要的Tomcat版本,这里例子是选择Tomcat v8.0,你可以Next选择Tomcat路径,或者你是老司机已经设置过路径,就可以直接Finish
这里写图片描述

接下来右键你的项目,点击Build Path-Cononfigure Build Path…在新窗口中找到jva Build Path点击Add Library…然后OK
这里写图片描述

在新窗口选择Server Runtime然后Next
这里写图片描述

最后选择刚才选择好的Tomcat按Finish,这样就算启动好服务了
这里写图片描述

第三步关键代码

下面是登录界面JSP的表单代码,需要注意的点有在,记得加上type=“submit”,

<form class="login" action="loginservlet" method="post">            <p class="title">Log in</p>            <input type="text" placeholder="Username" autofocus name="username" />            <i class="fa fa-user"></i>             <input type="password" placeholder="Password" name="password" /> <i class="fa fa-key"></i>            <a href="#">Forgot your password?</a>            <button type="submit">                <i class="spinner"></i> <span class="state">Log in</span>            </button>        </form>

接下来要创建一个容器servlet,这里右键项目,New,Servlet
这里写图片描述
在新窗口空白处码输入名和名(要创建的包和要创建的类)
这里写图片描述
在刚刚创建好的类中,我们改造一下代码,这个类能获取到前端表单下的代码

类默认有两个方法,doPost(),和doGet()
因为我们前面的前端代码使用的是method=”post”
所以我们只要改doPost()即可

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;/** * Servlet implementation class loginservlet */@WebServlet("/loginservlet")public class loginservlet extends HttpServlet {    private static final long serialVersionUID = 1L;    /**     * @see HttpServlet#HttpServlet()     */    public loginservlet() {        super();        // TODO Auto-generated constructor stub    }    /**     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)     */    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        doPost(request, response);    }    /**     * request请求     * response响应     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)     */    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("数据穿到这里");        String username = request.getParameter("username");//获取表单中name="username"        String userpassword = request.getParameter("password");//获取表单中nam="password"的数据        System.out.println(username + "," + userpassword);//测试是否能够传到这里        //接下来是验证表单数据是否与数据库数据相匹配        sqlD util = new sqlD(); //jdbc连接数据库的类        if (util.login(username, userpassword) == 1) { //在sqlD类中的login方法,如果返回值为1,if语句为true            System.out.println("登录成功!");            response.sendRedirect("suce.jsp");          //跳转到登录成功的页面            /*第二种跳转方式,并且能够传参             * request.setAttribute("username", username);               * request.getRequestDispatcher("suce.jsp").forward(request, response);             */        }else {                                     //如果if语句为false,跳转会登录界面或者跳转到失败界面            System.out.println("登录失败!");            response.sendRedirect("NewFile.jsp");        }    }}

下面是连接数据库的类
在类中还有比较从doPost()方法传来的参数与数据库数据是否相等的方法

/** * 数据库工具类  * @author Administrator * */import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class sqlD {     public static Connection getConnection(){ //连接数据库的方法        //与特定数据库的连接(会话)。在连接上下文中执行 SQL 语句并返回结果。         Connection conn=null;                             //连接的IP加端口号    //数据库名     //跳过安全认证        String ip="jdbc:mysql://localhost:3306/oli?useSSL=false";        String username="root";     //数据库用户名        String password="123456";//数据库用户密码        try {   //返回与带有给定字符串名的类或接口相关联的 Class 对象。                Class.forName("com.mysql.jdbc.Driver");//指向jdbc包下的"com.mysql.jdbc.Driver"类//管理一组 JDBC 驱动程序的基本服务。      //试图建立到给定数据库 URL 的连接。            conn=DriverManager.getConnection(ip,username,password);        } catch (ClassNotFoundException e) {            e.printStackTrace();        } catch (SQLException e) {            e.printStackTrace();        }        return conn;    }public int login(String username,String userpassword){ //将doPost()传来的值和数据库用户密码表的数据相比较        Connection conn = getConnection();//与特定数据库的连接(会话)。在连接上下文中执行 SQL 语句并返回结果。         if (conn != null) {            Statement stat = null;            ResultSet rs = null;//表示数据库结果集的数据表,            try {                stat = conn.createStatement(); //创建一个 Statement 对象来将 SQL 语句发送到数据库。                //数据库条件查询语句                String sql = "select * from user where username='"+username+"' and userpassword='"+userpassword+"'";                rs = stat.executeQuery(sql);//executeQuery()执行给定的 SQL 语句,该语句返回单个 ResultSet 对象。                if (rs.next()) { //有返回结果集为true,帐号密码正确                    return 1;//方法返回1                }else {                    return 0;//方法返回0                }            } catch (SQLException e) {                e.printStackTrace();            }        }        return 0;   //方法返回0    }}

从表单中输入帐号密码,再将数据传到doPost方法,在传到数据库连接方法中的查询方法做出比较,如果有结果集返回就是帐号密码正确。通过返回值,我们可以在判断语句中设置跳转界面。
登录功能实现成功

0 0
原创粉丝点击