【超越梦想】Android+Servlet搭建自己的app(2)——JDBC

上一篇我们已经将需要的环境搭建好了,接下来我们首先实现一个最简单的功能,那就是登陆和注册。先看一下服务器端的实现。服务器端需要和数据库进行联系,用到的技术是JDBC。
所谓的JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。

在讲解JDBC之前我们先在数据库创建一个表,就是User表,然后添加几条测试数据。然后通过JDBC对表进行操作。登陆和注册对应的就是查询和插入数据。

我们可以通过命令行窗口用sql语句进行操作,但是我们有Navicat 这个工具软件,就可以通过可视化的操作创表。

这里写图片描述

id主键自增,还有username、password没有什么好说的
插入两条测试数据
这里写图片描述

到这里我们还没有开始写代码,很多小伙伴可能很着急了。接下来我们在创建服务器端项目。

新建一个Dynamic Web Project 项目。然后创建一个Servlet(如果没有学习过Servlet建议先学习一下相关知识)
再创建一个JavaBean 创建一个LoginDao接口,一个LoginDao的接口实现类LoginDaoImpl
创建完之后可能会报错,不要着急,这是因为没有导入Tomcat的jar包,解决方法:
右键项目名->Build Path->Configure->Build Path ->Libraries->Add External JARs->servlet-api.jar(在你的Tomcat安装目录下的lib )->Apply->OK
我们还需要一个mysql的jar包。可在官网下载,为了大家方便,贴上百度云链接
链接:https://pan.baidu.com/s/101ACHtD1QmZz-kiVD-ypuA 密码:dlqg
项目创建好了,话不多说,先上代码,再解释。

(一)工具类ConnectionUtil


public class ConnectionUtil {
    public static Connection open(){
        String url="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=true";
        String driver = "com.mysql.jdbc.Driver";
        String username = "root";
        String password = "123456";
        Connection connection=null;
        try{
        Class.forName(driver);
        connection =(Connection)DriverManager.getConnection(url,username,password);
        }
        catch(Exception e){
            e.printStackTrace( );
        }
        return connection;

    }
    public static void close(Connection conn){
        if(conn!=null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
                conn=null;
            }
        }       
    }

}

(二)User类


public class User {

    private int id;
    private String username;
    private String password;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    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;
    }


}

(三)接口LoginDao


public interface LoginDao {
    public User Login(String username,String password);
}

(三)接口实现类LoginDaoImpl


public class LoginDaoImpl  implements LoginDao{

    @Override
    public User Login(String username, String password) {
        Connection conn = ConnectionUtil.open();
        String sql = "select id,username,password from user where username = ? and password = ?";
        try {
            PreparedStatement pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, username);
            pstmt.setString(2, password);
            ResultSet rs = pstmt.executeQuery();
            if(rs.next()){
                int id = rs.getInt(1);
                User user = new User();
                user.setId(id);
                user.setUsername(username);
                user.setPassword(password);
                return user;
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            ConnectionUtil.close(conn);
        }
        return null;
    }

}

(四)LoginServlet


import java.io.IOException;
import java.io.PrintWriter;

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

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        LoginDao dao = new LoginDaoImpl();
        User user = dao.Login(username, password);

        if(user!=null){
            response.setContentType("text/html;charset=utf-8");
            PrintWriter out = response.getWriter();
            out.println("1");

        }else {
            response.setContentType("text/html;charset=utf-8");
            PrintWriter out = response.getWriter();
            out.println("-1");
        }
        }

}

到这里,我们服务器端代码已经是实现。
运行LoginServlet,然后再地址栏写入
http://localhost:8080/test/LoginServlet?username=admin&password=123

接下来我们看一下代码。

第一个工具类ConnectionUtil的open方法实现了加载驱动、建立连接,创建了connection对象。大家写的时候根据自己的数据库名和安装Mysql时的用户名和密码进行更改就OK
close方法将连接关闭。

第二个类是User类,里边有id 、username、password 等变量,通过get和set方法进行取值赋值.

第三个是接口LoginDao

第四个是接口实现类LoginDaoImpl
本篇中最重要的地方JDBC就在这个地方。JDBC简单的说就是java程序和数据库之间的桥梁,让java程序去操作数据库。其实JDBC的内容大多都是固定的,就是sql语句有变化,其他的都是固定套路。首先载入JDBC驱动程序,再得到连接对象 Connection、接下来创建 Statement对象,然后运行sql语句、处理结果,最后关闭资源释放资源。
在这里我们出入两个参数作为查询的条件
pstmt.setString(1, username);
pstmt.setString(2, password);
这里就是sql语句sql = “select id,username,password from user where username = ? and password = ?”对应的两个问号。返回结果给ResultSet对象,然后返回结果。

第五个是LoginServlet,servlet是服务器端的入口,在doGet方法中调用了 doPost方法。接收了两个参数username和password,
(在
http://localhost:8080/test/LoginServlet?username=admin&password=123
中就对应了admin和password)这里的两个参数就是从客户端人为输入的用户名和密码。在这里接收然后处理,如果验证成功就…如果验证失败就…

然后创建dao对象,调用Login方法,将两个参数传入,返回一个use对象,如果查询到了,说明用户名密码正确,那么就返回一个1,如果user为空,说明用户名或者密码错误,就返回一个-1

到这里登陆服务器端代码已经实现,希望大家批评指正,下一篇我们看一下客户端的实现。
【超越梦想】Android+Servlet搭建自己的app(3-1)——Android端登陆实现

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值