2.7- 使用idea开发javaWeb应用程序-3(java操作mysql数据库)

使用idea开发javaWeb应用程序-java操作mysql数据库

回到第一章:目录

文章目录

  • 使用idea开发javaWeb应用程序-java操作mysql数据库
  • 一、java操作mysql数据库
    • 1、 cmd连接本地数据库
    • 2、pom.xml文件中加入MySQL驱动
    • 3、编写后台逻辑
    • 4、修改LoginController中doPost方法
    • 5 、修改login.html
    • 6、修改index.html
    • 7、运行
    • 8、全部代码



2.4-使用idea开发javaWeb应用程序,实现了简单的java web程序,具有3个前端页面和一个后台登录接口,后台登录接口仅仅是打印了登录信息,没有做校验。
这节实现:后台登录接口,根据前端输入的用户名和密码,查询mysql数据库校验是否合法,合法则跳转到主页面,不合法则给出提示。
工程目录:
2.7- 使用idea开发javaWeb应用程序-3(java操作mysql数据库)_第1张图片


一、java操作mysql数据库

1、 cmd连接本地数据库

cmd登录mysql,use ztest数据库,查询user表:
use ztest;
select * from user;
数据库里有2个用户 :
2.7- 使用idea开发javaWeb应用程序-3(java操作mysql数据库)_第2张图片

2、pom.xml文件中加入MySQL驱动

 
    <dependency>
      <groupId>mysqlgroupId>
      <artifactId>mysql-connector-javaartifactId>
      <version>8.0.13version>
    dependency>

3、编写后台逻辑

在com.my.site包下新建类:MySqlOperator
代码如下:

package com.my.site;

import java.sql.*;

public class MySqlOperator {
     

    private static final String  MYSQL_URL = "jdbc:mysql://localhost:3309/ztest?allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=UTC";
    private static final String  MYSQL_NAME = "root";
    private static final String  MYSQL_PASSWORD = "MySql@8022";

    /**
     * 根据用户名和密码检查是否合法用户,
     * @param uname
     * @param pwd
     * @return
     */
    public static boolean loginChecked(String uname,String pwd){
     
        try {
     
            Class.forName("com.mysql.cj.jdbc.Driver");
            Connection conn = DriverManager.getConnection(MYSQL_URL,MYSQL_NAME,MYSQL_PASSWORD);
            Statement stt = conn.createStatement();
            String sql = "select * from user where account='"+uname+"' and password = '"+pwd+"'";//这样写是有sql注入漏洞的,后面会用到
            System.out.println(sql);
            ResultSet rs =  stt.executeQuery(sql);
            while (rs.next()){
     
                return true;
            }
        } catch (ClassNotFoundException | SQLException e) {
     
            e.printStackTrace();
        }
        return false;
    }
}

4、修改LoginController中doPost方法

package com.my.site;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**继承至HttpServlet,重写doPost方法,实现自定义的处理逻辑。
 * "/login" 为访问路径*/
@WebServlet("/login")
public class LoginController extends HttpServlet {
     

    /** req 携带了请求相关信息,包括各种配置和请求参数; resp:携带返回相关信息 */
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
     
        //从请求对象中获取请求参数:uname、pwd是从前端login.html页面的loginForm表单提交过来的
        String uname = new String(req.getParameter("uname").getBytes("ISO-8859-1"),"utf-8");
        String pwd = new String(req.getParameter("pwd").getBytes("ISO-8859-1"),"utf-8");
        System.out.println("输入的户名是:"+uname);
        System.out.println("输入的密码是:"+pwd);
        if(MySqlOperator.loginChecked(uname,pwd)){
     
            // 设置返回类型
            resp.setContentType("text/html;charset=UTF-8");
            //跳转到主页面,并携带请求体,返回体对象。
            req.getRequestDispatcher("main.jsp").forward(req,resp);
        }else{
     
            //校验失败则跳转到登录页面
            req.getRequestDispatcher("login.html?check=false").forward(req,resp);
        }

    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
     
        doPost(req, resp);
    }
}

5 、修改login.html


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录页面title>
    <link rel="stylesheet" type="text/css" href="css/my.css">
    <script type="text/javascript" src="./js/my.js">script>
head>

<body>
<div id="main-container" >
    <div id="div-header" >
        <h3 style="margin-bottom:0;">欢迎进入我的网站h3>
        hr>
        <p>
            天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其所不能。——孟子
        p>
    div>

    <div id="div-content" >
        <img src="./pics/pic0.jpg" alt="" class="main-img">
        <form id="loginForm" class="loginForm" action="login" method="post">
            <p>户 名: <input id="uname" type="text" name="uname" />p>
            <p>密 码: <input id="pwd" type="password" name="pwd" />p>
            <input type="button" value="登录" onclick="check()"/>
        form>
    div>


div>
<script type="text/javascript">

//检查输入是否为非空
function check()
{
      
    var uname = document.getElementById("uname").value;//获取输入的用户名的值
    var pwd = document.getElementById("pwd").value;//获取输入的密码值

    if(loginCheck(uname,pwd)){
       //调用 js/my.js 中定义的方法,来检查输入是否非空
        document.getElementById("loginForm").submit();  //输入不为空则跳转到主页面
    }else{
      
        alert("户名和密码不能空。");
        return false;
    }
}
//从url中获取参数
function getQueryVariable(variable)
{
      
       var query = window.location.search.substring(1);
       var vars = query.split("&");
       for (var i=0;i<vars.length;i++) {
      
               var pair = vars[i].split("=");
               if(pair[0] == variable){
      return pair[1];}
       }
       return(false);
}
//判断参数是否为true,不为true则弹窗提示密码错误。
var bool = getQueryVariable("check");
if(bool == false){
      
    alert("用户名或密码错误。");
}
script>
body>
html>

6、修改index.html

function toJsp()
{
     
    window.location.href="login.html;
}

修改为:

function toJsp()
{
     
    window.location.href="login.html?check=true";
}

7、运行

输入 admin 123456登录。

在这里插入图片描述

8、全部代码

百度下载:
链接:https://pan.baidu.com/s/1_OkPxUJ3nPZszpwlk9lPIQ
提取码:opcq
到此,一个简单的具有前端、后台和数据库的java web程序完成。后续将介绍测试工具对这个工程进行测试。

你可能感兴趣的:(开发-测试技术基础知识培训)