萌新建立的简单登陆网页,

本文档展示了一个使用SpringMVC框架创建服务器的实例,该服务器接收网页上的用户注册信息,包括姓名、密码、年龄、性别、爱好、学历和入学日期。在服务器端,代码实现了密码的重复验证、用户名查重的功能,并通过JDBC将数据存储到MySQL数据库中。同时,还提供了一个登录验证功能,用于查询数据库中是否存在匹配的用户名和密码。
摘要由CSDN通过智能技术生成

 利用idea创建服务器,并使网页中的数据可以存入MySQL中,欢迎留言指导

使用Spring MVC建立服务器,在网页中向该服务器发射注册相关数据,

目标:

1.在服务器中整理数据,并使用JDBC协议将数据储存在mysql中。

        1)注册要求重复验证密码,并需保证两次输入一致

        2)具有用户名查重提示

2.在网页中输入正确的账号密码,并在idea中输出该用户其他的信息

//目标类:Studens

package cn.tedu.pojo;

import org.springframework.format.annotation.DateTimeFormat;

import java.util.Arrays;
import java.util.Date;

public class Students {             //创建Students类
    private String name;            //用户名
    private String password;        //密码
    private int age;                //年纪
    private int sex;                //性别
    private String[] hobby;         //喜好
    private  String edu;            //学历
    @DateTimeFormat(pattern="yyyy-MM-dd")//日期
    private java.util.Date intime;


    //为私密对象创建获取调用方法。私密对象更利于数据的保护
    public Date getIntime()
    {
        return intime;
    }

    public String getName() {
        return name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getSex() {
        return sex;
    }

    public void setSex(int sex) {
        this.sex = sex;
    }

    public String[] getHobby() {
        return hobby;
    }

    public void setHobby(String[] hobby) {
        this.hobby = hobby;
    }

    public String getEdu() {
        return edu;
    }

    public void setEdu(String edu) {
        this.edu = edu;
    }

    public void setIntime(Date intime) {
        this.intime = intime;
    }

    @Override
    public String toString() {        //重写toString方法,方便调用输出检查
        return "Students{" +
                "name='" + name + '\'' +
                ", password='" + password + '\'' +
                ", age=" + age +
                ", sex=" + sex +
                ", hobby=" + Arrays.toString(hobby) +
                ", edu='" + edu + '\'' +
                ", intime=" + intime +
                '}';
    }
}

package cn.tedu.controller;

import cn.tedu.pojo.Students;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.sql.*;
import java.util.Arrays;

//http://localhost:8080/stu/reg?name=sayhi&password=lin123&repass=lin123&age=23&sex=0&hobby=1&hobby=3&%E5%AD%A6%E5%8E%86=2&data=2021-08-01        网页发送来的注册信息
@RestController //标注表明了这个类是一个控制器类。但想要让这个类成为一个处理请求的处理器
@RequestMapping("stu") //@RequestMapping 来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,表明接受网页数据的指向位置
public class StuController {    //创建StuConller控制器

    //连接数据库
    static String url="jdbc:mysql://localhost:3306/cgb2106";

    //设置Connection
  /*static {
        try {
            Connection  c = DriverManager.getConnection(url, "root", "root");
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }*/
//想把Conneion作为一个公用的静态变量使用,但是不知道该如何在使用后及时关闭,所以还是写在了模块里
    //name password repass age sex hobby edu;//注册会输入的变量,做一个标志防止漏写
    private java.util.Date intime;  
    public String hint;
    public Boolean flag;

    @RequestMapping("reg")            //reg regist 注册
    public String stuReg(Students stu, String repass){//获取stu和repass
        flag=false;  
        System.out.println(repass);             //控制台检查是否获取repass,程序是否正确运行
        System.out.println(stu.getPassword());  //检查同上                      
        System.out.println(stu);                //检查同上
        if(!repass.equals(stu.getPassword())){  //密码查重
            hint = "注册失败,两次密码输入不一致";
            System.out.println(hint);}
        else if (isrenam(stu.getName())){       //用户名查重
            hint = "注册失败,用户名重复";
            System.out.println(hint);}
        else{                                   //写入sql
            witter(stu,repass);
            return stu.toString()+hint;}        //输出结果   
        return stu+" hint";                     //网页上输出结果
    }

    private Boolean witter(Students stu,String repass) { //使用jdbc协议向数据库中写入数据
        String sql = "insert into students(name,password,age,sex,hobby,edu,intime) values (?,?,?,?,?,?,?)";                               //sql语句
        try {
            Connection c = DriverManager.getConnection(url, "root", "root"); //2.创建链接数据库   
            PreparedStatement ps = c.prepareStatement(sql);        //建立sql命令
            ps.setString(1, stu.getName());                        //填充sql命令
            ps.setString(2, stu.getPassword());
            ps.setInt(3, stu.getAge());
            ps.setInt(4, stu.getSex());
            ps.setString(5, Arrays.toString(stu.getHobby()));
            ps.setString(6, stu.getEdu());
            ps.setObject(7,stu.getIntime());               //使用Obj类型上传日期数据
            ps.executeUpdate();                            //运行sql语句 
            ps.close();                                    //关闭PreparedStatement资源
            hint = "注册成功";
            return true;                             //注册成功没有触发异常直接返回true              
        } catch (SQLException throwables) {
            throwables.printStackTrace();                
        }
        return false;                                    //发生异常注册失败返回false
    }

    private boolean isrenam(String name) {                  //查重模块
        flag =false;
        String sql="select name from students where name=?";
                                                    //只查name标签,加快查询速度,节省资源
        try {
            Connection c = DriverManager.getConnection(url, "root", "root"); //2.创建链接数据库
            PreparedStatement ps = c.prepareStatement(sql);
            ps.setString(1,name);
            System.out.println(name);
            System.out.println(sql);
            ResultSet r = ps.executeQuery();    
            flag = r.next();                                //查到数据了,说明有重复
            System.out.println(flag);
            r.close();
            ps.close();
        } catch (Exception throwables) {
            throwables.printStackTrace();
        }

       return flag;
    }


    @RequestMapping("log")
    private void isrenam(String name, String password) {
        flag = false;
        String sql = "select * from students where name=? and password=?";    //sql语句
        try {
            Connection c = DriverManager.getConnection(url, "root", "root");
            PreparedStatement ps = c.prepareStatement(sql);
            ps.setString(1, name);
            ps.setString(2, password);
            System.out.println(sql);
            ResultSet r = ps.executeQuery();
            flag = r.next();   //检查是否查到数据
            //r.next已经被获取了,再获取就数据丢失了!,所以使用do while循环
            //按道理来说已经去重了,用户不存在重复且唯一,这个do while....可以不写..吧..
            do{                                  
                for (int i=1;r.getObject(i)!=null;i++) {   
                    //使用for循环来获取数据直到获取不到数据为止,
                    //我这里是不是应当重新设计避免数据库出现空值导致获取不到空值后面的数据?
                    String o = r.getString(i);
                    System.out.println(o+" ");        
                    //打印数据因为从表中获取的数据都会是String类型,所以这里倒是不用做区分了
                }
            }while(r.next());
            System.out.println(flag);
            r.close();
            ps.close();
        } catch (Exception throwables) {
            throwables.printStackTrace();
        }
        if(flag){
            System.out.println("登录成功");
        }
    }



}


<!--目标网页-->

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>stuform</title>
	<style>    //css语句
		input{width: 300px;height: 30px;}
		td{font-size: 20px;}
		input[type="radio"],[type="checkbox"]{width:15px;height:15px;}
		select{width:50px;height:20px;}
		input[type="date"]{width: 120px;height: 20px;}
		input[type="submit"],[type="reset"]{width:60px;height:40px;
		border: 0px; color:white;}
	</style>
   
</head>
<body >
	<h1>学生信息管理系统MIS</h1>
	<form method="post" action="http://localhost:8080/stu/reg">
		<table>
		<tr><td>姓名:</td></tr>
		<tr><td><input type="text" placeholder="请输入姓名"  name="name"/></td></tr>
		<tr><td>密码:</td></tr>
		<tr><td><input type="password" placeholder="请输入密码" name="password"/></td></tr>
		<tr><td>第二次输入密码:</td></tr>
		<tr><td><input type="password" placeholder="请重复输入密码" name="repass"/></td></tr>
		<tr><td>年龄:</td></tr>
		<tr><td><input type="number" placeholder="请输入年龄" name="age"/></td></tr>
		<tr><td>性别:(单选框)
				<input type="radio" value="0" name="sex"/>男
				<input type="radio" value="1"name="sex"/>女</td></tr>
		<tr><td>爱好:(多选框)
		<input type="checkbox"  value="1" name="hobby"/>乒乓球
		<input type="checkbox"  value="2" name="hobby"/>爬山
		<input type="checkbox"  value="3" name="hobby"/>唱歌</td></tr>
		<tr><td>学历:(下拉框)
		<select name=edu>
			<option value ="1">本科</option>
			<option value ="2">专科</option>
		</select></td></tr>
		<tr><td>入学日期:</td></tr>
		<tr><td><input type="date" name="intime"/></td></tr>
		<tr><td><input type="submit" value="保存" style="background-color: blue;"/>
		<input type="reset" value="重置" style="background-color: fuchsia;"/></td></tr>
		</table>
	</form>
</body>
</html>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

sayhitoloverOvO

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

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

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

打赏作者

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

抵扣说明:

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

余额充值