Java怎么实现登录与注册页面
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,本文小编为大家详细介绍"Java怎么实现登录与注册页面",内容详细,步骤清晰,细节处理妥当,希望这篇"Java怎么实现登录与注册页面"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知
千家信息网最后更新 2025年01月19日Java怎么实现登录与注册页面
本文小编为大家详细介绍"Java怎么实现登录与注册页面",内容详细,步骤清晰,细节处理妥当,希望这篇"Java怎么实现登录与注册页面"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
用java实现的登录与注册页面,实现了客户端(浏览器)到服务器(Tomcat)再到后端(servlet程序)数据的交互。这里在注册页面加入了验证码验证。
注册的html代码
注册页面截图
这里需要注意的是我用的是Tomcat服务器,因为它其中没有mysql驱动,所以需要手动添加到Tomcat的lib目录下。
还有在web.xml中添加了全局配置主要是为了项目中需要改编码的方便
encode UTF-8
这里是生成验证码的程序,在我的上篇文章有详细讲解
@WebServlet(urlPatterns = "/demo")public class CheckImg extends HttpServlet { //复写HttpServlet中的doGet方法 public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{ //准备一张画纸,将验证码中的数字字母写到这张画纸中 int width = 120; int height = 30; BufferedImage bufi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); //这里面的width、height、就是这张画纸的长宽。BufferedImage.TYPE_INT_RGB就是这张画纸基于 //RGB三原色来进行画 //获取一个画笔对象,给图片上画画 Graphics2D g = (Graphics2D) bufi.getGraphics(); //设置画笔颜色 g.setColor(Color.WHITE); //将这个颜色填充到整个画纸 g.fillRect(0,0,width,height); //定义图片上可以写什么数据 String data = "QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890"; //定义书写在画纸上的起始位置 int x =15; int y =25; //定义一个随机数 Random r = new Random(); //创建一个字符串缓冲区 StringBuilder sb = new StringBuilder(); //定义一个循环给画纸上写四个数 for(int i = 0; i < 4; i++){ //从data中随机获取一个下标的数据 char c = data.charAt(r.nextInt(data.length())); sb.append(c+""); //随机生成画笔的颜色,RGB三原色随机在0-256中随机生成 g.setColor(new Color(r.nextInt(256),r.nextInt(256),r.nextInt(256))); //设置字体 g.setFont(new Font("黑体",Font.BOLD,26)); double theta =(30 - (r.nextInt(60)))*Math.PI/180; g.rotate(theta,x,24); //设置数据旋转 //g.rotate((20)*Math.PI/180,x,y); //将数据写到画纸上 g.drawString(c+"",x,y); g.rotate(-theta,x,24); //设置完旋转要调回,防止数据旋转的看不到 //g.rotate(-((20)*Math.PI/180),x,y); //每写完一个调整下一个数据写的位置 x += 25; } HttpSession session = req.getSession(); session.setAttribute("checkNum",sb.toString()); //添加线类型的干扰信息 for(int i = 0; i < 15 ; i++){ //同样设置线的颜色 g.setColor(new Color(r.nextInt(256),r.nextInt(256),r.nextInt(256))); //开始划线,这里需要的四个参数中前两个是线开头的左边,后边两个是线结束的坐标 g.drawLine(r.nextInt(width),r.nextInt(height),r.nextInt(width),r.nextInt(height)); } //添加点类型干扰信息 for (int i = 0 ; i < 150 ; i++){ //设置点的颜色 g.setColor(new Color(r.nextInt(256),r.nextInt(256),r.nextInt(256))); //开始画点,实质上这是画椭圆,将上半轴半径,左半轴半径设置为0就可以看成是一个点 g.drawOval(r.nextInt(width),r.nextInt(height),0,0); } //这个时候并没有在这张纸上书写任何内容,但是已经可以像客户端响应请求了 ImageIO.write(bufi, "jpg", resp.getOutputStream()); }}
这是注册页面的代码。
@WebServlet(urlPatterns = "/register2")public class Register extends HttpServlet { // @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req,resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //获取在web.xml中的配置的全局属性 String encode = req.getServletContext().getInitParameter("encode"); //为了防止乱码设置编码 req.setCharacterEncoding(encode); resp.setContentType("text/html;charset="+encode); //获得请求过来的资源 String userName = req.getParameter("userName"); String password = req.getParameter("password"); String repassword = req.getParameter("repassword"); String sex = req.getParameter("sex"); String[] hobby = req.getParameterValues("hobby"); String country = req.getParameter("country"); String describe = req.getParameter("describe"); //这里将获取到的请求数据都在控制台上打印了一遍 //看是否拿到了这些数据 System.out.println(userName); System.out.println(password); System.out.println(repassword); System.out.println(sex); System.out.println(hobby[0]); System.out.println(country); System.out.println(describe); //这里只加了简单的判断,判断帐号是否填写,以及两次密码是否一致 //判断信息是否填写 if(userName==null||password==null||repassword==null||sex==null||hobby==null||country==null||describe==null){ resp.getWriter().write("所有的数据都不能为空,请重新填写"); return; } //判断两次密码是否一致 if(!password.equals(repassword)){ resp.getWriter().write("两次密码输入不一致,请重新填写"); return; } //判断验证码输入是否正确 if(!checkImg.equalsIgnoreCase(check)){ resp.getWriter().write("验证码输入错误"); return; } try { //加载MySQL的数据库驱动 Class.forName("com.mysql.jdbc.Driver"); //这里我在数据库中添加了一个名为day02的数据库 String url = "jdbc:mysql:///day02"; //默认是系统管理员的账户 String user = "root"; //这里你自己设置的数据库密码 String passw = "xxxxxx"; //获取到数据库的连接 Connection connection = DriverManager.getConnection(url, user, passw); //获取到执行器 Statement stmt = connection.createStatement(); //需要执行的sql语句 String sql = "insert into users values (null,'"+userName+"','"+password+"','"+repassword+"','"+sex+"','"+ Arrays.toString(hobby)+"','"+country+"','"+describe+"')"; //建议打印一下sql语句,放在数据库中看是否能将数据添加到数据库中 System.out.println(sql); //执行sql语句 int i = stmt.executeUpdate(sql); //添加成功上边这个执行器就会返回1 if(i==1){ resp.getWriter().write("注册成功,请登录"); }else{ resp.getWriter().write("注册失败,请返回重新"); } stmt.close(); connection.close(); }catch (Exception e){ e.printStackTrace(); } }}
登录页面,同样非常丑。就是简单的三个input标签
登录页面的html代码
登录页面的java代码,因为只有帐号密码,就只和数据库中的帐号密码进行判断
@WebServlet(urlPatterns = "/login")public class login extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req,resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //先获取到全局配置中的设置的编码 String encode = req.getServletContext().getInitParameter("encode"); //设置请求和响应的编码 req.setCharacterEncoding(encode); resp.setContentType("text/html;charset="+encode); try { //从登录页面拿到用户输入的用户名 String name = req.getParameter("user"); //从登录页面拿到用户输入的密码 String pwd = req.getParameter("password"); //还是在控制台上输出看是否拿到的帐号密码 System.out.println("用户名:" +name); System.out.println("密码:"+ pwd); //下边就是加载数据库的过程 Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql:///day02"; String user = "root"; String password = "xxxxxxx"; String sql = "select * from users where userName = '"+name+"'"; String sql2 = "select * from users where password = '"+pwd+"'"; Connection conn = DriverManager.getConnection(url, user, password); //这里我选择是创建了两个执行器,如果一个执行器执行两个sql语句。就会出现异常 Statement stmt = conn.createStatement(); Statement stmt2 =conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); ResultSet rs2 = stmt2.executeQuery(sql2); //判断用户输入的帐号是否在数据库中 if (rs.next()){ System.out.print("用户名:" + rs.getString("userName") + "\t"); }else{ resp.getWriter().write("对不起你帐号名有误,请注册"); } //通过了帐号的判断,就对密码进行判断,同样是判断密码是否与数据库中的密码匹配 if(rs2.next()){ resp.getWriter().write("登录成功,点击跳转首页"); System.out.print("密码:" + rs.getString("password") + "\t"); }else{ resp.getWriter().write("对不起你密码有误,请注册"); } }catch (Exception e){ e.printStackTrace(); } }}
读到这里,这篇"Java怎么实现登录与注册页面"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
数据
密码
页面
登录
数据库
用户
画纸
帐号
验证
输入
用户名
颜色
两个
代码
就是
文章
编码
语句
执行器
一致
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全海报宣传语
网吧能架设服务器吗
红河服务器上门回收中心
服务器远程提示出现了内部错误
各国网络安全犯罪的规定
新的游戏软件开发小说
bae服务器
统一软件开发过程的原理
服务器不支持撤回怎么设置
网络安全指啥
ssci是什么类型的数据库
流放者柯南服务器生存全集
读写权限数据库设计
计算机二级数据库考试
手机管理服务器工具
gransaga日服服务器选择
无锡互联网智能科技产品是什么
重庆移动软件开发哪家好
百度网络安全员培训班
网络安全法实施时间高
微擎忘记密码修改数据库
数据库系统原理第五版知识点总结
2019无锡网络安全宣传
哪些网络技术可以实现在线学习
电脑mc如何开服务器不要钱
软件开发工程师步骤
csgo怎么经常连接服务器失败
人工智能网络安全软件开发
中兴最厉害的数据库
天域互联网科技中心在哪里