IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 萌新建立的简单登陆网页, -> 正文阅读

[开发工具]萌新建立的简单登陆网页,

?利用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.getName());
            ps.setInt(3, stu.getAge());
            ps.setInt(4, stu.getSex());
            ps.setString(5, Arrays.toString(stu.getHobby()));
            ps.setString(6, stu.getEdu());
            ps.setDate(7, (Date) stu.getIntime());
            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="data"/></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>

?

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-08-13 12:28:08  更:2021-08-13 12:30:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/22 13:18:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码