WebService搭建用户注册与登录系统(初学)

1.使用idea首先建立一个Web项目或普通项目
2.写一个接口类MyService如下:
package pers.liam.countManager;

import javax.jws.WebMethod;
import javax.jws.WebService;

@WebService
public interface MyService {

    @WebMethod
    int addUser(String username, String password);

    @WebMethod
    boolean modify_userInfo();

    @WebMethod
    String get_userInfo(String username, String password);

    @WebMethod
    int verify_userInfo(String usernaem, String password);
}

然后写具体方法MyServiceImpl如下,暂时只写了addUser与verify_userInfo方法:


package pers.liam.countManager;

import pers.liam.DB.JDBCUtil;

import javax.jws.WebService;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

@WebService(targetNamespace = "pers.liam.countManager.MyService")
public class MyServiceImpl implements MyService {
    @Override
    public int addUser(String username, String password) {    //返回值  1-该用户已存在  2-注册成功  3-服务器异常
        int i = 0;
        System.out.println(username);
        System.out.println(password);
        Connection conn = JDBCUtil.get_conn();
        try {
            String sql_select = "SELECT Susername,Spassword FROM AccountManager.Account WHERE Susername=?";
            String sql_insert = "INSERT INTO AccountManager.Account(Susername,Spassword) VALUES(?,?)";
            assert conn != null;
            PreparedStatement pstmt_select = conn.prepareStatement(sql_select);
            pstmt_select.setString(1, username);
            ResultSet resultSet = pstmt_select.executeQuery();
            resultSet.last();
            int n = resultSet.getRow();
            resultSet.beforeFirst();
            if (n == 1) {
                JDBCUtil.close(conn, pstmt_select, resultSet);
                return 1;
            }
            PreparedStatement pstmt_insert = conn.prepareStatement(sql_insert);
            pstmt_insert.setString(1, username);
            pstmt_insert.setString(2, password);
            i = pstmt_insert.executeUpdate();
            if (i == 1) {
                JDBCUtil.close(conn, pstmt_select, resultSet);
                JDBCUtil.close(conn, pstmt_insert, resultSet);
                return 2;
            } else {
                JDBCUtil.close(conn, pstmt_select, resultSet);
                JDBCUtil.close(conn, pstmt_insert, resultSet);
                return 3;
            }
        } catch (SQLException e) {
            e.printStackTrace();
            return 3;
        }
    }

    @Override
    public boolean modify_userInfo() {
        return false;
    }

    @Override
    public String get_userInfo(String user, String password) {
        System.out.println(user);
        System.out.println(password);
        return "Hello world";
    }

    @Override
    public int verify_userInfo(String username, String password) {    //返回值  0-服务器异常  1-该用户不存在  2-密码错误  3-登录成功
        String db_password;
        System.out.println(username);
        System.out.println(password);
        Connection conn = JDBCUtil.get_conn();
        String sql_select = "SELECT Susername,Spassword FROM AccountManager.Account WHERE Susername=?";
        try {
            assert conn != null;
            PreparedStatement pstmt = conn.prepareStatement(sql_select);
            pstmt.setString(1, username);
            ResultSet resultSet = pstmt.executeQuery();
            resultSet.last();
            int n = resultSet.getRow();
            resultSet.first();
            if (n == 0) {
                JDBCUtil.close(conn, pstmt, resultSet);
                return 1;
            } else {
                db_password = resultSet.getString("Spassword").trim();
                boolean flag = password.equals(db_password);
                if (!flag) {
                    JDBCUtil.close(conn, pstmt, resultSet);
                    return 2;
                } else {
                    JDBCUtil.close(conn, pstmt, resultSet);
                    return 3;
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
            return 0;
        }
    }
}

中间使用JDBC工具包JDBCUtil来连接数据库与关闭:

package pers.liam.DB;

import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

public class JDBCUtil {

    private static String driver;
    private static String dbURL;
    private static String username;
    private static String password;

    //静态语句块(自动执行)
    static {
        //加载资源文件
        InputStream resource = JDBCUtil.class.getClassLoader().getResourceAsStream("db.properties");
        Properties p = new Properties();
        try {
            p.load(resource);
        } catch (IOException e) {
            System.out.println("加载流文件失败!");
            e.printStackTrace();
        }

        driver = p.getProperty("driver");
        dbURL = p.getProperty("dbURL");
        username = p.getProperty("username");
        password = p.getProperty("password");

        try {
            Class.forName(driver);
        } catch (ClassNotFoundException e) {
            System.out.println("加载驱动失败!");
            e.printStackTrace();
        }
    }

    public static Connection get_conn() {
        try {
            return DriverManager.getConnection(dbURL, username, password);
        } catch (SQLException e) {
            System.out.println("连接数据库失败!");
            e.printStackTrace();
            return null;
        }
    }

    public static void close(Connection conn, PreparedStatement pstmt, ResultSet resultSet) {
        try {
            if (resultSet != null) {
                resultSet.close();
                resultSet = null;
            }

            if (pstmt != null) {
                pstmt.close();
                pstmt = null;
            }

            if (conn != null) {
                conn.close();
                conn = null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

最后写Publish方法来发布服务:

package pers.liam.countManager;

import javax.xml.ws.Endpoint;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class MyServicePublish {
    public static void main(String[] args) {
        InputStream resource = MyServicePublish.class.getClassLoader().getResourceAsStream("db.properties");
        Properties p = new Properties();
        try {
            p.load(resource);
        } catch (IOException e) {
            System.out.println("加载流文件(URL)失败!");
            e.printStackTrace();
        }
        String address = p.getProperty("publishURL");
        Endpoint.publish(address, new MyServiceImpl());
        System.out.println("服务发布成功!");
    }
}
访问WSDL在publishURL后加上?wsdl 即可

所有配置字段均写在db.properties文件中,该文件放在src文件夹下:

driver=org.mariadb.jdbc.Driver

dbURL=

publishURL=http://localhost:8080/MyService

username=liam

password=password

等于号后面不需要引号,不需要空格,不需要分号

在需要用到字段的类中使用类加载器来加载配置文件:

InputStream resource = MyServicePublish.class.getClassLoader().getResourceAsStream("db.properties");
Properties p = new Properties();
try {
    p.load(resource);
} catch (IOException e) {
    System.out.println("加载流文件(URL)失败!");
    e.printStackTrace();
}
String address = p.getProperty("publishURL");

然后就可以访问改WebService了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

华仔哦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值