javaweb实现登录和注册(前端转数据到后端,servlet到mysql验证的案例)

一、 myeclipse的tomcat的使用和驱动的放置

软件版本: 编译软件myeclipse2014 数据库mysql2014 驱动mysql-connector-java-5.1.47

1、myeclipse的tomcat的使用

新建立一个java web 项目,在src下面新建里一个servlet类(名叫register)
在这里插入图片描述
选择图最上的左边第一个小图标,然后选择自己的项目名字,点击add,然后选择tomcat7。
然后启动服务器,去自己的本地浏览器访问是否能访问成功。
在这里插入图片描述
点击绿色的启动,如果更新java和xml代码需要,关闭然后。到服务器设置哪里去点击更新按钮。
在这里插入图片描述
浏览器访问
http://127.0.0.1:8080/model_one/
在这里插入图片描述

2、驱动的放置

因为需要连接mysql,我们要用到驱动文件
自取地址:链接:https://pan.baidu.com/s/1efejLBwE40JNKd81tuptVA?pwd=top1
提取码:top1
一般放到
在这里插入图片描述

二、前端

在WebRoot文件夹下新建立两个hyml页面

<!DOCTYPE html>
<html>
  <head>
    <title>Login.html</title>
	
    <meta name="keywords" content="keyword1,keyword2,keyword3">
    <meta name="description" content="this is my page">
    <meta name="content-type" charset="UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

  </head>
  
  <body>
    <form action="/model_one/login" method="post" >
	<label>用户名:<input type="text" name="username"/></label> <br />
	<label>密码:<input type="text" name="password"/></label> <br />
	<input type="submit" value="提交"/>
    </form>
  </body>
</html>

在这里插入图片描述

name属性是需要被servlet获取判断的。
访问:http://127.0.0.1:8080/model_one/Login.html

在这里插入图片描述

三、 设置

在这里插入图片描述
设置后端的url
xml

  <servlet-mapping>
    <servlet-name>register</servlet-name>
    <url-pattern>/register</url-pattern>
  </servlet-mapping>

或者
@WebServlet(urlPatterns = “/myHttpServlet”)

四、mysql的功能代码

建立一个tool类,把下面的方法放到类里面。
写一个属性user user1 = new user();

1、连接数据库并检测是否有库

要把密码和名字换成自己的
要先运行才会有这个库

public static Connection testMysql() throws ClassNotFoundException, SQLException{
   	Connection con;
   	String driver = "com.mysql.jdbc.Driver";
   	String url ="jdbc:mysql://localhost:3306/Usermanage?createDatabaseIfNotExist=true";
   	String user="root";
   	String password = "****";
   	try {
   		Class.forName(driver);
   	} catch (ClassNotFoundException e) {
   		// TODO Auto-generated catch block
   		e.printStackTrace();
   	}
   	con = DriverManager.getConnection(url,user,password);
   	if(!con.isClosed()){
   		System.out.println("连接成功!");
   	}
   	return con;
   }

2、创建表格的

先运行才有这个表

public void cUserTable() throws ClassNotFoundException, SQLException{
		Connection con= tool.testMysql();
		String sql = "create table userlogin (id int(10) auto_increment primary key,username varchar(20) UNIQUE NOT NULL,password varchar(20) NOT NULL,address varchar(50) NOT NULL)";
		Statement stmt= con.createStatement();
		ResultSet rs = con.getMetaData().getTables(null, null,"userlogin", null);
		 if (rs.next()) {
             System.out.println("userlogin已经存在");
        }else {
        	stmt.execute(sql);
        }
		
		stmt.close();
		con.close();
	}
	

3、注册

public boolean addData(String name,String pwd,String address) throws ClassNotFoundException, SQLException{
		Connection con= tool.testMysql();
		String sql="insert into userlogin (username,password,address) values(?,?,?)";
		PreparedStatement pst=(PreparedStatement) con.prepareStatement(sql);
		pst.setString(1, name);
		pst.setString(2,pwd);
		pst.setString(3,address);
		try {
			pst.executeUpdate();
			pst.close();
			con.close();
			return true;
		} catch (Exception e) {
			// TODO: handle exception
			pst.close();
			con.close();
		}
		
		return false;
		}

}

4、登录


public boolean  login(String name,String password) throws ClassNotFoundException, SQLException{
		Connection con = tool.testMysql();
		Statement state = con.createStatement();
		String sql = "select * from userlogin where username='"+name+"' ";
		ResultSet rs= state.executeQuery(sql);
		
		if(rs!=null){
			
			while(rs.next()){
			
				if(password.equals(rs.getString("password"))){
						System.out.println("登录成功");
						return true;
				}
				else{
					System.out.print("用户密码错误");
					return false;
				}
			}
		}
		else{
			System.out.println("用户不存在");
			return false;
		}
		
		state.close();
		con.close();
		return false;
	}
	
	

5、javaBean

class user{
	private String name;
	private String password;
	private String address;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	@Override
	public String toString() {
		return "user [name=" + name + ", password=" + password + ", address="
				+ address + "]";
	}
}

五、register

先写一个静态的tool类型的属性
private tool mytool = new tool();
改写dopost

	response.setCharacterEncoding("utf-8");
		request.setCharacterEncoding("utf-8");
		mytool.user1.setName(request.getParameter("username"));
		mytool.user1.setPassword(request.getParameter("pwd"));
		mytool.user1.setAddress(request.getParameter("address"));
		try {
			if(mytool.addData(mytool.user1.getName(), mytool.user1.getPassword(),mytool.user1.getAddress())){
			//重定向,如果登录成功就跳转到登录页面
				response.sendRedirect("/test1/Login.html");
			}
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println(mytool.user1);
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		out.print(" 注册失败");
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();

六、login

属性:private tool mytool = new tool();
dopost

response.setContentType("text/html");
		response.setCharacterEncoding("utf-8");
		request.setCharacterEncoding("utf-8");
		mytool.user1.setName(request.getParameter("username"));
		mytool.user1.setPassword(request.getParameter("password"));
		try {
			if(mytool.login(mytool.user1.getName(),mytool.user1.getPassword())){
				PrintWriter out = response.getWriter();
				out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
				out.println("<HTML>");
				out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
				out.println("  <BODY>");
				out.print("  登录成功 ");
				out.println("  </BODY>");
				out.println("</HTML>");
				out.flush();
				out.close();
			}
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		PrintWriter out = response.getWriter();
		out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		out.print("  登录失败");
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();

运行
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
数据库
在这里插入图片描述

七、补充

getRequestDispatcher是服务器内部跳转,地址栏信息不变,只能跳转到web应用内的网页。(需要写在doget)
sendRedirect是页面重定向,地址栏信息改变,可以跳转到任意网页。
doget解决乱码
new String(request.getParameter(“username”).getBytes(“ISO-8859-1”),“UTF-8”);
dopost解决乱码
response.setCharacterEncoding(“utf-8”);
response.setContentType(“text/html;charset=utf-8”);
response.setContentType(“text/html;charset=UTF-8”);
前端解决乱码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/6864.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电子学会2023年3月青少年软件编程(图形化)等级考试试卷(四级)真题,含答案解析

青少年软件编程(图形化)等级考试试卷(四级) 分数:100 题数:24 一、单选题(共10题,共30分) 1. 编写一段程序,从26个英文字母中,随机选出10个加入列表a。空白处应填入的代码是?( )

数字工厂项目实施注意事项有哪些

借助数字工厂管理系统&#xff0c;电子制造企业可以规范和优化整个企业内部业务流程&#xff0c;标准化企业业务数据&#xff0c;实现企业管理信息化;可以更高效的管理及分配企业资源&#xff0c;更高效的运营。基于供应链管理的数字工厂系统&#xff0c;在实施过程中需要注意些…

Windows 使用很久以后,C盘空间不足,怎么办

C:\User\某用户\AppData\Local\Tmp 把这个文件夹下的文件删除掉

写在28岁,回看3年前的自己,庆幸当时入了软件测试这行

为什么会学习软件测试&#xff1f; 已经28岁了&#xff0c;算一下快过去3年了&#xff0c;刚毕业那会工作了一年&#xff0c;因为自己当时很迷茫&#xff08;觉得自己挺废的&#xff09;&#xff0c;所以就没去工作就一直在家&#xff0c;家里固定每个月给点生活费&#xff0c…

SimpleDataFormat.parse转换日期错误-多线程

最近使用线程池批量操作数据&#xff0c;中间用到了SimpleDataFormat转换时间&#xff0c;部分数据转换不正确&#xff0c;甚至2023年转成了7223年&#xff0c;原因是SimpleDataFormat不是线程安全的类&#xff0c;所以可以加锁进行处理 我是将sdf作为参数放入多线程&#xff0…

降噪蓝牙耳机哪个品牌好?降噪蓝牙耳机排行推荐

随着蓝牙耳机品牌越来越多&#xff0c;型号更是让人眼花缭乱&#xff0c;各种功能也是层出不穷。但是很多人在眼花缭乱的耳机中并不知道如何选择合适的&#xff0c;下面是我根据多年的耳机使用经验总结的几款值得推荐的降噪蓝牙耳机&#xff0c;快速来看。 1.南卡A2真无线降噪…

【蓝桥杯嵌入式】蓝桥杯第十届省赛真题,程序题全解析(含代码)

&#x1f38a;【蓝桥杯嵌入式】专题正在持续更新中&#xff0c;原理图解析✨&#xff0c;各模块分析✨以及历年真题讲解✨都在这儿哦&#xff0c;欢迎大家前往订阅本专题&#xff0c;获取更多详细信息哦&#x1f38f; &#x1f38f;【蓝桥杯嵌入式】蓝桥杯第十二届省赛程序真题…

C#和Lua的交互

1.C#调用Lua 1.1C#调用Lua文件中的全局变量 using System.Collections; using System.Collections.Generic; using System.IO; using UnityEngine; using XLua;/* *创建者: *创建时间: *描述:XLua管理器 *版本: */ public class XLuaManager {public static LuaEnv le;//Lua环…

计讯物联智慧景区应用解决方案,开启交互式智慧旅游新篇章

方案背景 后疫情时代&#xff0c;旅游市场逐步回暖。随着游客的旅游需求趋向个性化、多元化&#xff0c;景区的数字化转型升级势在必行。在此背景下&#xff0c;计讯物联充分发挥5G、云计算、物联网、大数据等技术的应用价值&#xff0c;以技术创新推动业务创新&#xff0c;面…

2022蓝桥杯省赛——砍竹子

问题描述 这天, 小明在砍竹子&#xff0c; 他面前有 n 棵竹子排成一排&#xff0c;一开始第 i 棵竹子的 高度为 hi​。 他觉得一棵一棵砍太慢了&#xff0c; 决定使用魔法来砍竹子。魔法可以对连续的一 段相同高度的竹子使用&#xff0c; 假设这一段竹子的高度为 H&#xff0…

【SSM】Spring6(二.Bean的生命周期)

文章目录1.Bean的作用域1.1 singleton1.2 prototype1.3 scope其它属性1.Bean的作用域 SpringBean.java package com.sdnu.spring6.bean;public class SpringBean {public SpringBean() {System.out.println("执行springBean的构造方法");} }spring-scope.xml <…

前后端分离下的-SpringSecurity

前后端分离下的SpringSecurity 项目创建 使用SpringBoot初始化器创建SpringBoot项目 修改项目依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2…

商务谈判Business Negotiation

目录 前言原文文章商务谈判常用会话前言 继续💪 原文文章 商务谈判常用会话 ❶ I cannot understand your point well. 我不太理解你的观点。 ❷ I’m conferring with my customers about online orders. 我现在跟我的顾客协商网上订单的事。 ❸ We express our pleasur…

Generalist: Decoupling Natural and Robust Generalization

通过原始图片在训练过程出的模型会受到敌对样本的干扰&#xff0c;这种问题虽然通过对抗训练增加了抵抗敌对样本的鲁棒性&#xff0c;但也损失了一部分自然泛化的能力。为了解决这个问题&#xff0c;我们将自然泛化和鲁棒泛化与联合训练解耦&#xff0c;并为每个训练制定不同的…

如何有效地跟踪项目进展?

项目失败的代价很高。通过进度跟踪&#xff0c;你可以预见问题&#xff0c;并采取必要的措施引导项目回到正轨。 根据最近的一项研究&#xff0c;由于项目表现不佳&#xff0c;组织平均浪费了其总投资的11.4%。此外&#xff0c;在那些低估了健全项目管理的重要性的企业中&…

高频面试:如何解决MySQL主从复制延时问题

MySQL 主从一直是面试常客&#xff0c;里面的知识点虽然基础&#xff0c;但是能回答全的同学不多。 比如我之前面试小米&#xff0c;就被问到过主从复制的原理&#xff0c;以及主从延迟的解决方案&#xff0c;你之前面试&#xff0c;有遇到过哪些 MySQL 主从的问题呢&#xff…

Goby漏洞更新 | SolarView Compact downloader.php 任意命令执行漏洞(CVE-2023-23333)

漏洞名称&#xff1a;SolarView Compact downloader.php 任意命令执行漏洞&#xff08;CVE-2023-23333 English Name&#xff1a;SolarView Compact downloader.php RCE (CVE-2023-23333) CVSS core: 10.0 影响资产数&#xff1a;5585 漏洞描述&#xff1a; Contec SolarV…

Java题目训练——统计每个月兔子的总数和字符串通配符

目录 一、统计每个月兔子的总数 二、字符串通配符 一、统计每个月兔子的总数 题目描述&#xff1a; 有一种兔子&#xff0c;从出生后第3个月起每个月都生一只兔子&#xff0c;小兔子长到第三个月后每个月又生一只兔子。 例子&#xff1a;假设一只兔子第3个月出生&#xff0c…

天气Weather

前言 加油 原文 天气常用会话 ❶ It looks as though it might clear up. 看起来天好像要转晴。 ❷ The forecast is not accurate. 预报不准确。 ❸ The weatherman says we’ll have a cold spell before the end of this week. 天气预报员说,在这个周末之前会有一股寒…

【数据结构与算法分析】0基础带你学数据结构与算法分析12--红黑树

红黑树 (red-black tree) 是一种自平衡二叉树&#xff0c;于 1972 年由 Rudolf Bayer 发明&#xff0c;发明时被称为 对称二叉 B 树&#xff0c;现代名称红黑树来自 Knuth 的博士生 Robert Sedgewick 于 1978 年发表的论文。红黑树的结构复杂&#xff0c;但操作有着良好的最坏情…