第一个数据库联动web应用

利用web登陆验证用户信息

第一个web登录界面的基础上实现用户验证
1.在用户信息核对的基础上添加

package com.myfirstwebLogin;

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

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

public class LoginCheck extends HttpServlet{
    public void doGet(HttpServletRequest req,HttpServletResponse res){
        Connection conn=null;
        Statement state=null;
        ResultSet result=null;
        try{
            //接收用户名和密码
            String username=req.getParameter("username");
            String password=req.getParameter("password");
            String msg=req.getParameter("hiddenMessage");

            try{
                try {
                    //连接数据库
                    Class.forName("com.mysql.jdbc.Driver");
                } catch (ClassNotFoundException e) {
                    // TODO 自动生成的 catch 块
                    System.out.println("驱动未找到");
                    e.printStackTrace();
                }

                try {
                    //得到连接
                    String url="jdbc:mysql://localhost:3306/usersinfodatabase?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT&2B8";
                    conn=DriverManager.getConnection(url,"root","123");
                } catch (SQLNonTransientConnectionException e) {
                    // TODO 自动生成的 catch 块
                    System.out.println("未成功连接至数据库");
                    e.printStackTrace();
                }
                //创建一个Statement
                state=conn.createStatement();
                //Select * from users order by userId limit 1返回第一条数据
                //寻找password列,以匹配username
                result=state.executeQuery("select password from users where username='"+username+"' order by userId limit 1");
                if(result.next()){
                    //不能直接在result.getString();中直接写表格列名,要先初始化;

                    String pd="password";
                    if(result.getString(pd).equals(password)){

                        //设值session 验证用户是从login界面登录的
                        HttpSession hs=req.getSession(true);
                        hs.setMaxInactiveInterval(30);
                        hs.setAttribute(username, password);

                        //传递给welcome页面username和password
                        res.sendRedirect("welcome?username="+username+"&password="+password+"&hiddenMessage="+msg);
                    }
                    else{
                        //跳转的url
                        res.sendRedirect("login");
                    }

                }
                else{
                    //跳转的url
                    res.sendRedirect("login");
                }       
            }
            catch(Exception e){
                e.printStackTrace();
            }
            finally{
                try{
                    if(result!=null){
                        result.close();
                    }
                    if(state!=null){
                        state.close();
                    }
                    if(conn!=null){
                        conn.close();
                    }
                }
                catch(Exception ex){
                    ex.printStackTrace();
                }
            }           
        }
        catch(Exception exx){
            exx.printStackTrace();
        }


}




    public void doPost(HttpServletRequest req,HttpServletResponse res){
        this.doGet(req, res);
    }
}

2.准备数据库
我这儿创建了3个样本
这里写图片描述

3.我测试途中最恼火的问题:
java连接至数据库的时候,因为我是默认安装mysql的,故需改如下设置,否则网络问题严重影响


这里写图片描述
这里写图片描述
改成本地系统登陆

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值