精华内容
下载资源
问答
  • Java实现登录与注册页面

    万次阅读 多人点赞 2019-05-22 09:48:25
    java实现登录与注册页面,实现了客户端(浏览器)到服务器(Tomcat)再到后端(servlet程序)数据的交互。 注册的html代码,页面非常丑!!请见谅。。 <body> <fieldset id=""> <legend>注册...

    用java实现的登录与注册页面,实现了客户端(浏览器)到服务器(Tomcat)再到后端(servlet程序)数据的交互。这里在注册页面加入了验证码验证。

    注册的html代码,页面非常丑!!请见谅。。

    <body>
    <fieldset id="">
      <legend>注册页面</legend>
      <form action="/day02/register2" method="post" id="form" ">
        <table>
          <tr>
            <td>用户名:</td>
            <td><input type="text" name="userName" /><span id="span1"></span></td>
          </tr>
          <tr>
            <td>
              密码:
            </td>
            <td>
              <input type="password" name="password" />
            </td>
          </tr>
          <tr>
            <td>
              确认密码:
            </td>
            <td>
              <input type="password" name="repassword" />
              <span id="span2"></span>
            </td>
    
          </tr>
          <tr id="tr4">
            <td>
              性别:
            </td>
            <td>
              <input type="radio" name="sex" value="男" />男
              <input type="radio" name="sex" value="女" />女
              <span id="span3"></span>
            </td>
          </tr>
          <tr>
            <td>爱好:</td>
            <td>
              <input type="checkbox" name="hobby" value="唱" />唱
              <input type="checkbox" name="hobby" value="跳" />跳
              <input type="checkbox" name="hobby" value="rap" />rap
              <input type="checkbox" name="hobby" value="篮球" />篮球
              <span id="span4"></span>
            </td>
          </tr>
          <tr>
            <td>国籍:</td>
            <td>
              <select name="country" id="country">
                <option value="none">--请选择国籍--</option>
                <option value="中国">中国</option>
                <option value="韩国">韩国</option>
                <option value="日本">日本</option>
                <option value="美国">美国</option>
              </select>
              <span id="span5"></span>
            </td>
          </tr>
          <tr>
            <td>自我评价:</td>
            <td>
              <textarea rows="10px" cols="20px" id="textarea" name="describe" ></textarea>
            </td>
          </tr>
        <tr>
            <td>
              验证码:
            </td>
            <td>
              <input type="text" name="check"/>
              <img src="/day02/demo" id="img" onclick="checkImg()" style = "cursor: pointer">
              <a href="javascript:void(0);" onclick="checkImg()">换一张</a>
            </td>
          </tr>
        </table>
        <input type="submit" id="btn2" value="提交" />
        <input type="button" id="btn1" value="验证" />
      </form>
    
    </fieldset>
    </body>
    <script type="text/javascript">
      function checkImg() {
        var img = document.getElementById("img");
        img.src ="/day02/demo?"+new Date().getTime()
    
      }
    </script>
    

    注册页面截图
    注册页面截图

    这里需要注意的是我用的是Tomcat服务器,因为它其中没有mysql驱动,所以需要手动添加到Tomcat的lib目录下。

    还有在web.xml中添加了全局配置主要是为了项目中需要改编码的方便

    <context-param>
            <param-name>encode</param-name>
            <param-value>UTF-8</param-value>
        </context-param>
    

    这里是生成验证码的程序,在我的上篇文章有详细讲解

    @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("所有的数据都不能为空,请重新<a href = '/day02'>填写</a>");
                return;
            }
            //判断两次密码是否一致
            if(!password.equals(repassword)){
                resp.getWriter().write("两次密码输入不一致,请重新<a href = '/day02'>填写</a>");
                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("注册成功,请<a href = '/day02/login.html'>登录</a>");
                }else{
                    resp.getWriter().write("注册失败,请返回重新<a href = '/day02/'></a>");
                }
                stmt.close();
                connection.close();
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
    

    登录页面,同样非常丑。就是简单的三个input标签
    登录页面
    登录页面的html代码

    <body>
    <form action="login">
        用户名:<input type="text" name="user"><br/>
        密码:<input type="password" name="password"><br/>
        <input type="submit" name="提交">
        <a href="/register2">注册</a>
    </form>
    </body>
    

    登录页面的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("对不起你帐号名有误,请<a href='/day02'>注册</a>");
                }
                //通过了帐号的判断,就对密码进行判断,同样是判断密码是否与数据库中的密码匹配
                if(rs2.next()){
                    resp.getWriter().write("登录成功,点击跳转<a href='http://www.baidu.com'>首页</a>");
                    System.out.print("密码:" + rs.getString("password") + "\t");
                }else{
                    resp.getWriter().write("对不起你密码有误,请<a href='/day02'>注册</a>");
                }
    
    
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
    
    展开全文
  • 在页面上填好注册信息,点击注册,调用了后台Controller类的这个方法,注册成功了,我的返回值要怎么写才能让它返回登录页面? ``` @RequestMapping(value = "/regist.action", method = RequestMethod.POST) ...
  • 下面小编就为大家分享一篇java后台判断客户端是手机/PC并返回不同页面的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 该压缩包实现了利用过滤器或者拦截器对登录信息进行验证跳转登陆页的功能,利用的是SpringBoot和thymeleaf,使用请先看使用说明
  • java实现后台页面登录

    千次阅读 2019-06-17 23:19:53
    java实现后台页面登录 1. 在安装了tomcat,myeclipse的环境下,创建java项目; 2. 将项目部署到tomcat下,确保tomcat搭建环境没有问题; 3. 设计Java代码,在项目的WebRoot目录下下代码,实现该功能: (1...

    java实现后台页面的登录

    1.  在安装了tomcat,myeclipse的环境下,创建java项目;

    2.  将项目部署到tomcat下,确保tomcat搭建环境没有问题;

    3.  设计Java代码,在项目的WebRoot目录下下代码,实现该功能:

    (1)login.jsp页面:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE html>
    <head>
    <base href="<%=basePath%>">
    <meta http-equiv="Content-Type" content="text/html;" charset="utf-8" />
    <link rel="stylesheet" type="text/css" href="css/login.css">
    
    <title>登录页面</title>
    </head>
    
    <body class="custom-background">
        <div class="all"><form action="dologin.jsp" method="post">
            <p>登&nbsp;&nbsp;录</p>
            <div>
                <input type="text" name="username" id="input" placeholder="账号">
            </div>
            <div>
                <input type="password" name="password" id="input" placeholder="登陆密码">
            </div>
            <div>
                <input type="submit" value="登录" class="btn">
            </div>
        </form></div>
    </body>
    </html>

    在login.jsp主要是登陆的表单设计,其中form标签下的action是标识了逻辑处理的servlet的位置,但是此处指定的是dologin.jsp页面,即指定提交时处理登录功能的页面。

    (2)dologin.jsp页面的设计

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%  //接收用户提交的用户名和密码
    	String path = request.getContextPath();
    	String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    	String username = "";
    	String password = "";
    	request.setCharacterEncoding("utf-8");  //防止中文乱码
    	
    	username = request.getParameter("username");  //获取用户输入的username的值
    	password = request.getParameter("password");  //获取用户输入的password的值
    	
    	//如果用户名和密码都等于admin,则登录成功
    	if("kang".equals(username)&&"123456".equals(password))
    	{
    		//登陆成功,则转发到login_success.jsp页面
    		session.setAttribute("loginuser", username);  //保存username为loginuser
    		request.getRequestDispatcher("login_success.jsp").forward(request,response);	
    	}
    	else
    	{
    		//登陆失败,则请求重定向到login_failure.jsp页面
    		response.sendRedirect("login_failure.jsp");
    	}
    %>
    

    在该页面中,首先定义了两个变量,分别用来存放用户提交的username和password;其次是获取用户输入的用户名和密码,并且保存在username和password中;最后是判断是否登录成功,在这里如果用户名和密码都等于admin,则登录成功,并且转发到login_success.jsp页面;如果登录失败,则请求重定向到login_failure.jsp页面。

    (3)login_success.jsp和login_failure页面的设计

    login_success.jsp:

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE html>
    <head>
    <base href="<%=basePath%>">
    <meta http-equiv="Content-Type" content="text/html;" charset="utf-8" />
    <link rel="stylesheet" type="text/css" href="css/login.css">
    
    <title>登录页面</title>
    </head>
    
    <body class="custom-background">
    	<div class="all">
    	<%
    		String loginUser ="";
    		if(session.getAttribute("loginUser")!=null)
    		{
    			loginUser = session.getAttribute("loginUser").toString();
    		}
    	 %>
    		欢迎您<font color="red"> <%=loginUser%> </font>,登陆成功! 
    	</div>
    </body>
    </html>
    

    在login_success.jsp的页面中,其中

    <%
    		String loginUser ="";
    		if(session.getAttribute("loginUser")!=null)
    		{
    			loginUser = session.getAttribute("loginUser").toString();
    		}
    	 %>

    是用来获取获取用户输入的用户名的,前提是在都login.jsp中保存了用户名:

    session.setAttribute("loginuser", username);  //保存username为loginuser

    而刚刚保存的用户名用于显示用户登陆成功后的信息:
     

    欢迎您<font color="red"> <%=loginUser%> </font>,登陆成功! 

    login_failure.jsp页面的设计:
     

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE html>
    <head>
    <base href="<%=basePath%>">
    <meta http-equiv="Content-Type" content="text/html;" charset="utf-8" />
    <link rel="stylesheet" type="text/css" href="css/login.css">
    
    <title>登录页面</title>
    </head>
    
    <body class="custom-background">
    	<div class="all">
    		登陆失败,请检查用户名或密码!
    		<a href="login.jsp">返回登陆</a>
    	</div>
    </body>
    </html>
    

    登录失败,则返回登陆页面。

    4.  演示(Chrome浏览器):

    (1)登录到login.jsp页面

    (2)输入用户名和密码(对的密码:kang  123456):

    显示登录成功。

    (3)登陆失败(不对的用户名或密码):

    点击返回登陆,则返回到登陆界面。

    到此,后台登录设计完成。

    展开全文
  • jsp返回登陆前页面的几种实现,之前在学习和使用sendRedirect 的时候出现的一些疑惑,整理下来了此文档,大家一起学习。
  • 实现网页登录注销功能需要在登录jsp页面还是提交注销的jsp添加代码,如果要添加代码,该添加什么样的代码。
  • JAVA实现简单的登录界面

    万次阅读 多人点赞 2018-10-26 16:42:56
    我本来是学C++的,然后课程上老师要求做一个登陆界面,用C++实现不限时,然后就选择了JAVA,从零开始自学JAVA。好在网上很多大佬都写了如何用JAVA编写登陆界面的博客,写得很详细,使得我第一次接触JAVA也能看懂一二...

    我本来是学C++的,然后课程上老师要求做一个登陆界面,用C++实现不限时,然后就选择了JAVA,从零开始自学JAVA。好在网上很多大佬都写了如何用JAVA编写登陆界面的博客,写得很详细,使得我第一次接触JAVA也能看懂一二。

    比较推荐这篇,博主真的很细心,我主要也是参考的这篇文章(分为一、二两篇):

    https://blog.csdn.net/Alexwym/article/details/80711015?utm_source=blogxgwz3

    参考了众多文章之后,我终于达到了自己的目标,实现了一个简单的登录界面,功能包括:正常登录(只能登录设定好的账号和密码)、账号密码错误提示、错误三次提示锁定(仅仅是提示,锁定没做)。下面讲讲怎么实现吧。

    程序分为两个部分,登录界面和登录后转跳的界面。

    首先是登录界面:

    首先是awt:

    import java.awt.Dimension;  //封装了一个构件的高度和宽度
    import java.awt.FlowLayout;  //流式布局,解决组件相互覆盖问题
    import java.awt.Font;  //字体

    然后是swing,也就是我们做窗口需要的组件:

    import javax.swing.JFrame;  //窗体容器组件类(属于顶级容器)
    import javax.swing.JLabel;  //标签
    import javax.swing.JTextField;  //文本输入框元素组件类
    import javax.swing.JPasswordField;  //密码输入框组件类
    import javax.swing.JButton;  //按键组件类

    我们的思路是,定义一个初始化界面函数,在main函数中调用。这里初始化函数我命名为initUI。在函数中我们需要对窗体和各部分组件进行定义。

    首先是窗体,需要定义的属性有:窗体的标题、窗体的大小、窗体的关闭方式、窗体的显示位置、字体、流式布局、是否能够修改窗体大小以及窗体是否可见。

    然后是各组件,各组件的设置都大同小异,主要是显示内容、大小、字体,最重要的一步是要把组件添加到窗体上去。详情请看代码和注释。

    package test;
    
    import java.awt.Dimension;  //封装了一个构件的高度和宽度
    import java.awt.FlowLayout;
    import java.awt.Font;
    
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
    import javax.swing.JPasswordField;
    import javax.swing.JButton;
    
    public class Login {
    
    	//在类中定义主函数
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		//在主函数中,实例化Login类的对象,调用初始化界面的方法
    		Login login = new Login();
    		login.initUI();
    
    	}
    	
    	//在类中定义初始化界面的方法
    	public void initUI() {
    		//在initUI中实例化JFrame类的对象
    		JFrame frame = new JFrame();
    		//设置窗体对象的属性值
    		frame.setTitle("Login");//设置窗体标题
    		frame.setSize(400, 250);//设置窗体大小,只对顶层容器生效
    		frame.setDefaultCloseOperation(3);//设置窗体关闭操作,3表示关闭窗体退出程序
    		frame.setLocationRelativeTo(null);//设置窗体相对于另一组间的居中位置,参数null表示窗体相对于屏幕的中央位置
    		frame.setResizable(false);//禁止调整窗体大小
    		frame.setFont(new Font("宋体",Font.PLAIN,14));//设置字体,显示格式正常,大小
    		
    		//实例化FlowLayout流式布局类的对象,指定对齐方式为居中对齐组件之间的间隔为10个像素
    		FlowLayout fl = new FlowLayout(FlowLayout.CENTER,10,10);
    		//实例化流式布局类的对象
    		frame.setLayout(fl);
    		
    		//实例化JLabel标签对象,该对象显示“账号”
    		JLabel labname = new JLabel("账号:");
    		labname.setFont(new Font("宋体",Font.PLAIN,14));
    		//将labname标签添加到窗体上
    		frame.add(labname);
    		
    		//实例化JTextField标签对象化
    		JTextField text_name = new JTextField();
    		Dimension dim1 = new Dimension(300,30);
    		text_name.setPreferredSize(dim1);//设置除顶级容器组件以外其他组件的大小
    		//将textName标签添加到窗体上
    		frame.add(text_name);
    		
    		//实例化JLabel标签对象,该对象显示“密码”
    		JLabel labpass = new JLabel("密码:");
    		labpass.setFont(new Font("宋体",Font.PLAIN,14));
    		//将labpass添加到窗体上
    		frame.add(labpass);
    		
    		//实例化JPasswordField
    		JPasswordField text_password = new JPasswordField();
    		//设置大小
    		text_password.setPreferredSize(dim1);
    		//添加到窗体
    		frame.add(text_password);
    		
    		//实例化JButton组件
    		JButton button1 = new JButton();
    		//设置按键的显示内容
    		Dimension dim2 = new Dimension(100,30);
    		button1.setText("登录");
    		button1.setFont(new Font("宋体",Font.PLAIN,14));
    		//设置按键大小
    		button1.setSize(dim2);
    		frame.add(button1);
    		
    		frame.setVisible(true);//窗体可见,一定要放在所有组件加入窗体后
    		
    		LoginListener ll = new LoginListener(frame,text_name,text_password);
    		button1.addActionListener(ll);
    	}
    }
    

    界面实现的结果如下:


    接下来是第二部分,也就是按键监听。

    我们在输入账号密码后,如果账号密码匹配,则显示登录成功的界面,否则显示账号或密码错误,并提示剩余次数。当剩余次数用尽后,会显示账号已锁定(但是并没有实现锁定功能),同时关闭窗口。

    整体思路如下:

    1.首先对登录按键设置监听,判断是否被按下。

    2.若被按下,则获取账号和密码输入框内的内容,并用if语句进行判断,同时新建一个窗体备用。

    3.若账号密码匹配,则在新建窗体上建立标签显示登录成功;如果不匹配,则判断剩余次数,剩余次数大于0的时候显示还可输入的次数,并有返回登录界面的按键(这里注意,我们的登录界面不能先关闭);剩余次数为0,则显示账号锁定,以及关闭窗体的按键。

    还是按顺序来,首先是awt:

    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.Font;

    跟登录界面的大同小异,主要增加了监听的软件包。

    import javax.swing.JButton;
    import javax.swing.JLabel;
    import javax.swing.JPanel;

    接下来是组件,增加了JPanel,这是一个容器,把其他组件加入到它里面然后再对它进行排版。为什么要增加这个组件呢?因为我在做这个部分的时候遇到了一个问题,就是我在一个窗口里同时添加了一个标签和一个按键,但是展示结果却是按键填充了整个窗口界面,标签被按键覆盖,调整了按键大小也没有作用,最后查得可以使用JPanel这个组件来解决组件之间相互覆盖的问题。

    下面是代码,窗体创建部分跟上个部分大同小异,关键在于文本框内容的获取、账号密码的匹配、监听的设置和监听后的操作。

    package test;
    
    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.Font;
    
    import javax.swing.JButton;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    
    public class LoginListener implements ActionListener{
    	private javax.swing.JTextField text_name;
    	private javax.swing.JPasswordField text_password;
    	private javax.swing.JFrame login;
    	
    	public LoginListener(javax.swing.JFrame login,javax.swing.JTextField text_name,javax.swing.JPasswordField text_password)
    	{//获取登录界面、账号密码输入框对象
    		this.login=login;
    		this.text_name=text_name;
    		this.text_password=text_password;
    	}
    	
    	int i=3;//3次登录机会
    	
    	public void actionPerformed(ActionEvent e)
    	{
    		Dimension dim2 = new Dimension(100,30);
    		Dimension dim3 = new Dimension(300,30);
    		
    		//生成新界面
    		javax.swing.JFrame login2 = new javax.swing.JFrame();
    		login2.setSize(400,200);
    		login2.setDefaultCloseOperation(3);
    		login2.setLocationRelativeTo(null);
    		login2.setFont(new Font("宋体",Font.PLAIN,14));  //宋体,正常风格,14号字体
    		//创建组件
    		javax.swing.JPanel jp1 = new JPanel();
    		javax.swing.JPanel jp2 = new JPanel();
    
    			if(text_name.getText().equals("vv") && text_password.getText().equals("123456"))
    			{	
    				JLabel message = new JLabel("登陆成功!");
    				message.setFont(new Font("宋体",Font.PLAIN,14));  //宋体,正常风格,14号字体
    				message.setPreferredSize(dim3);
    				jp1.add(message);
    				login2.add(jp1,BorderLayout.CENTER);
    				
    				login2.setResizable(false);
    				login2.setVisible(true);
    				
    				//通过我们获取的登录界面对象,用dispose方法关闭它
    				login.dispose();
    			}
    			
    			else if(i>=2)
    			{
    				JLabel message = new JLabel("账号或密码错误,您今天还有"+(i-1)+"次机会");
    				message.setFont(new Font("宋体",Font.PLAIN,14));  //宋体,正常风格,14号字体
    				message.setPreferredSize(dim3);
    				//将textName标签添加到窗体上
    				jp1.add(message);
    				login2.add(jp1,BorderLayout.CENTER);
    				
    				JButton close = new JButton("确定");
    				close.setFont(new Font("宋体",Font.PLAIN,14));
    				//设置按键大小
    				close.setSize(dim3);
    				jp2.add(close);
    				login2.add(jp2,BorderLayout.SOUTH);
    				
    				i--;//次数减少
    				close.addActionListener(new ActionListener()
    				{
    					public void actionPerformed(ActionEvent e)
    					{
    						login2.dispose();
    					}
    				});
    				
    				login2.setResizable(false);
    				login2.setVisible(true);
    			}
    			
    			else if(i == 1)
    			{
    				JLabel message = new JLabel("账号已锁定,请明天再试");
    				message.setFont(new Font("宋体",Font.PLAIN,14));  //宋体,正常风格,14号字体
    				message.setPreferredSize(dim3);
    				//将textName标签添加到窗体上
    				jp1.add(message);
    				login2.add(jp1,BorderLayout.CENTER);
    				
    				JButton close = new JButton("确定");
    				close.setFont(new Font("宋体",Font.PLAIN,14));
    				//设置按键大小
    				close.setSize(dim3);
    				jp2.add(close);
    				login2.add(jp2,BorderLayout.SOUTH);
    				
    				close.addActionListener(new ActionListener()
    				{
    					public void actionPerformed(ActionEvent e)
    					{
    						login2.dispose();
    					}
    				});
    				
    				login2.setResizable(false);
    				login2.setVisible(true);
    				
    				//通过我们获取的登录界面对象,用dispose方法关闭它
    				login.dispose();
    			}
    	}
    }
    

    运行结果如下:

    首先是登录成功(这里还有个问题我没解决,就是标签不知道如何才能让它居中。。。)

    然后是错误一次,点击确定后返回登录界面:

    最后是错误三次,点击确定后关闭所有界面:

    大致上就是这样,程序还不是很完善,还有很多待提高的地方。新人第一次写,如果有错误,请大佬们指出,谢谢各位大佬了。

    展开全文
  • Java gui 页面 跳转页面的示例代码,也包含了Java gui 界面 的基本写法
  • Java简单登陆界面实现

    万次阅读 多人点赞 2018-12-29 14:52:55
    利用Java连接MySQL做登陆界面 1、首先需要建立一个类,在这里,我命名为newLogin newLogin类的代码如下 package p4; import java.awt.Dimension; import java.awt.Font; import java.awt.Toolkit; import java.awt....

    利用Java连接MySQL做登陆界面
    1、首先需要建立一个类,在这里,我命名为newLogin
    newLogin类的代码如下

    package p4;
    import java.awt.Dimension;
    import java.awt.Font;
    import java.awt.Toolkit;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import javax.swing.ButtonGroup;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JPasswordField;
    import javax.swing.JRadioButton;
    import javax.swing.JTextField;
    public class newLogin extends JFrame implements ActionListener{
    	private static final long serialVersionUID = 1L;
    	private Connection con = null;
    	private Statement statement = null;
    	private ResultSet res = null;
    	private ButtonGroup buttongroup = new ButtonGroup();
    	private MyPanel jp = new MyPanel();
    	private JLabel ul = new JLabel("用户名:");
    	private JLabel pl = new JLabel("密    码:");
    	private JLabel ts = new JLabel("");
    	private JTextField uname = new JTextField();
    	private JPasswordField pword = new JPasswordField();
    	private JRadioButton[] butArray = {
    			new JRadioButton("学生",true),
    			new JRadioButton("教师")
    	};
    	private JButton login = new JButton("登陆");
    	private JButton reset = new JButton("重置");
    	public newLogin() {
    		addListener();
    		initialFrame();
    	}
    	private void initialFrame() {
    		Font font = new Font("宋体",Font.BOLD,12);
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setTitle("登陆");
    		jp.setLayout(null);
    		ul.setBounds(100, 30, 60, 30);
    		jp.add(ul);
    		uname.setBounds(170, 30, 140, 30);
    		jp.add(uname);
    		pl.setBounds(100, 80, 60, 30);
    		pword.setBounds(170, 80, 140, 30);
    		jp.add(pl);
    		jp.add(pword);
    		ts.setBounds(100, 160, 200, 50);
    		jp.add(ts);
    		ts.setFont(font);
    		login.setBounds(100, 220, 70, 30);
    		jp.add(login);
    		login.setFont(font);
    		reset.setBounds(220, 220, 70, 30);
    		jp.add(reset);
    		reset.setFont(font);
    		add(jp);
    		setResizable(false);
    		buttongroup.add(butArray[0]);
    		buttongroup.add(butArray[1]);
    		butArray[0].setBounds(120, 130, 100, 50);
    		jp.add(butArray[0]);
    		butArray[1].setBounds(220, 130, 100, 50);
    		jp.add(butArray[1]);
    		butArray[0].setContentAreaFilled(false);
    		butArray[1].setContentAreaFilled(false);
    		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    		int centerX = screenSize.width/2;
    		int centerY = screenSize.height/2;
    		int w = 427;
    		int h = 331;
    		setBounds(centerX-w/2, centerY-h/2, w, h);
    		setVisible(true);
    		uname.requestFocus(true);
    		getContentPane().add(jp);
    		jp.getRootPane().setDefaultButton(login);
    	}
    	private void addListener() {
    		this.login.addActionListener(this);
    		this.uname.addActionListener(this);
    		this.pword.addActionListener(this);
    	}
    	@Override
    	public void actionPerformed(ActionEvent e) {
    		if(e.getSource() == uname) {
    			pword.requestFocus();
    		}
    		if(e.getSource() == pword) {
    			butArray[0].requestFocus();
    		}
    		if(e.getSource() == butArray[0]||e.getSource() == butArray[1]||e.getSource() == login) {
    //			this.ts.setText("正在为您努力加载,请稍等......");
    			
    			int type = this.butArray[0].isSelected()?0:1;
    			String username = this.uname.getText().trim();
    			char[] p = this.pword.getPassword();
    			String password = String.valueOf(p).trim();
    			if(username.equals("")) {
    				JOptionPane.showMessageDialog(this, "请输入用户名!","错误",JOptionPane.ERROR_MESSAGE);
    				ts.setText("");
    				return ;
    			}
    			if(password.equals("")) {
    				JOptionPane.showMessageDialog(this, "请输入密码!","错误",JOptionPane.ERROR_MESSAGE);
    				ts.setText("");
    				return ;
    			}
    			try {
    				con = new connection().getConnection();  //调用自己写的一个数据库连接类
    				statement = con.createStatement();
    				if(type == 0) {
    					String sql = "select * from stuuser where "+
    						"username_stu='"+username+"'and password_stu='"+password+"'";
    					res = statement.executeQuery(sql);
    					if(res.next()) {
    						JOptionPane.showMessageDialog(this, "登录成功!","提示",JOptionPane.INFORMATION_MESSAGE);
    						this.dispose();
    					}
    					else {
    						JOptionPane.showMessageDialog(this, "用户名或密码错误!","错误",JOptionPane.ERROR_MESSAGE);
    						ts.setText("");
    						uname.setText("");
    						pword.setText("");
    					}
    					//关闭数据库连接
    					if(res != null) {
    						res.close();
    					}
    					if(statement != null) {
    						statement.close();
    					}
    					if(con != null) {
    						con.close();
    					}
    				}
    				else {
    					String sql = "select * from teauser where "+
    							"username_tea='"+username+"'and password_tea='"+password+"'";
    						res = statement.executeQuery(sql);
    						if(res.next()) {
    							String spec_name = res.getString(1);
    							JOptionPane.showMessageDialog(this, "登录成功!","提示",JOptionPane.INFORMATION_MESSAGE);
    							this.dispose();
    						}
    						else {
    							JOptionPane.showMessageDialog(this, "用户名或密码错误!","错误",JOptionPane.ERROR_MESSAGE);
    							ts.setText("");
    							uname.setText("");
    							pword.setText("");
    						}
    						//关闭数据库连接
    						if(res != null) {
    							res.close();
    						}
    						if(statement != null) {
    							statement.close();
    						}
    						if(con != null) {
    							con.close();
    						}
    				}
    			}catch(SQLException ea) {
    				ea.printStackTrace();
    			}
    		}
    		else if(e.getSource() == reset) {
    			uname.setText("");
    			pword.setText("");
    		}
    	}
    }
    
    

    2、编写数据库连接类,在这里命名为connection,然后在类里写一个获取连接的放回,并返回一个连接。
    connection类的代码如下:

    package p4;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    //import java.sql.ResultSet;
    import java.sql.SQLException;
    //import java.sql.Statement;
    
    public class connection {
    	private Connection con = null;
    //	private Statement statement = null;
    //	private ResultSet res = null;
    	String driver = "com.mysql.cj.jdbc.Driver";
    	String url  = "jdbc:mysql://localhost:3306/Stu_manager?serverTimezone=Asia/Shanghai";
    	String name = "root";
    	String passwd = "123456";
    	public connection() {
    		
    	}
    	public Connection getConnection() {
    		try{
    			Class.forName(driver).newInstance();
    			con = DriverManager.getConnection(url,name,passwd);
    			}catch(ClassNotFoundException e){
    				System.out.println("对不起,找不到这个Driver");
    				e.printStackTrace();
    			}catch(SQLException e){
    				
    				e.printStackTrace();
    			}catch(Exception e){
    				e.printStackTrace();
    			}
    		return con;
    	}
    }
    
    

    3、在MySQL数据库中需建立两个用户表,分别用来存储不同用户的登陆账号和密码,这里学生用户表为stuuser,教师用户表为teauser,建表的SQL语句如下:
    stuuser表:

    create table stuuser(
    	username_stu varchar(20) primary key,
    	password_stu char(20) not null,
    )ENGINE=InnoDB DEFAULT CHARSET=utf8;
    

    teauser表:

    create table teauser(
    	username_tea varchar(20) primary key,
    	password_tea char(20) not null,
    )ENGINE=InnoDB DEFAULT CHARSET=utf8;
    

    在这里插入图片描述

    我也是初学不久,分享一下!

    展开全文
  • ajax重写方法搭配后台filter返回status实现ajax请求跳转登录页面
  • java实现登录注册界面

    万次阅读 多人点赞 2019-12-13 20:42:32
    文章目录数据库设计Admin.javaLogin_Register.javaLogin.javaAdminRegister.javaRegister.java代码Admin.javaLogin_Register.javaLogin.javaAdminRegister.javaRegister.java 数据库设计 既然只是一个登录和注册的...
  • 微信登陆四步骤 从获取code到拉趣用户信息都是一气呵成的,怎么将获取到的用户信息返回给前台 因为开始是 打开的url地址获取code>重定向到获取access_token的方法>然后获取信息 怎么传给前端
  • Java AD域登录实现正常本地登录操作

    千次阅读 2019-06-11 11:37:35
    Java登录 实现前言新建一个测试类,见下图AD域的userName和passWord身份验证成功之后返回身份验证失败之后返回验证成功将之代入项目登录的位置,根据自己的登录接口和登陆逻辑来修改,我这里是SysLoginService ...
  • java cookie实现自动登录

    千次阅读 2019-05-06 17:07:03
    登录界面:login.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE ...
  • java实现单一登录(类似QQ登录)一、业务需求二、具体实现实现思路具体代码 一、业务需求 账号已在web端登录后,再次登录相同账号将踢掉一次的登录信息。 二、具体实现 实现思路 1.通过定义一个全局map变量...
  • java实现完全跨域SSO单点登录

    万次阅读 多人点赞 2018-08-16 16:33:01
    java实现SSO 什么是SSO SSO(Single Sign On)单点登录是实现多个系统之间统一登录的验证系统,简单来说就是:有A,B,C三个系统,在A处登录过后,再访问B系统,B系统就已经处于了登录状态,C系统也是一样。举个...
  • 主要基于Servlet+JSP+JavaBean开发模式实现JavaWeb用户登录注册功能实例代码,非常实用,本文介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起看看吧
  • java登录超时回到登录页面 有没有实现此功能的思想呢? 或者有demo 代码最好了 ,谢谢~
  • Java实现QQ登录

    千次阅读 2020-05-20 21:45:08
    Java实现QQ登录 写了一个个人网站,增加一个登录的地方,自己写登录太麻烦,而且用户一般也不愿意去登录,接入QQ互联,实现QQ一键登录。所有前提是你得有一个IP地址和域名。 ==ps:==用处不大,主要是写着玩 1 进入...
  • 包含后台的SpringBoot工程,前端的页面,和nginx-1.13.8的资源包,运行请先阅读readme.txt。
  • Java GUI 连接数据库完成登录注册页面

    万次阅读 多人点赞 2019-06-11 22:36:29
    登录页面 详细代码 package com.itheima.denglu; import java.awt.Container; import java.awt.EventQueue; import java.awt.LayoutManager; import javax.swing.ImageIcon; import javax.swing.JFrame;...
  • 例如,admin/b.htm需要权限才可以访问,未登录的无权限用户直接访问改页面,会被跳转到登录页login.htm,登陆成功,应自动跳转到admin/b.htm页。 借用其他人画的流程图  当在ExceptionTranslationFilter...
  • 小程序官方文档有说明,用户授权登录后,通过小程序给出的接口 wx.login 可以获得临时登录凭证code,再通过后端将code作为参数,请求小程序服务器地址得到openid,传入客户端进行有效期限的本地存储(注:小程序...
  • java web jsp实现登录功能

    千次阅读 2020-05-12 22:35:01
    1.jsp实现登录 思维过程: 1.index.jsp登录界面 2.提交跳转到a.jsp密码匹配检查 3.密码正确就跳转到登陆后界面 Index.jsp代码: <%-- Created by IntelliJ IDEA. User: 张川 Date: 2020/4/30 Time: 14:10 To...
  • JAVA实现WEB端实现app扫码登录

    万次阅读 2020-05-19 19:57:46
    首先,大概说一下原理:用户打开网站的登录页面的时候,向浏览器的服务器发送获取登录二维码的请求。服务器收到请求,随机生成一个uuid,将这个id作为key值存入redis服务器,同时设置一个过期时...
  • java实现QQ登录

    万次阅读 多人点赞 2019-05-19 18:29:38
    准备工作 1.云服务器 2.备案的域名 3.本地调试需要修改hosts文件,...登录后,点击头像,进入认证页面,填写信息,等待审核。 审核通过,点击创建应用 审核通过,就可以使用APP ID 和 APP Key ...
  • 简单的SpringMVC小程序,用Intelli IDEA 编写的,实现拦截器功能,实现了简单的登录、退出功能,是入门的好程序
  • java实现完全跨域SSO单点登录-JWT

    千次阅读 2019-05-16 19:40:39
    java实现SSO 什么是SSO SSO(Single Sign On)单点登录是实现多个系统之间统一登录的验证系统,简单来说就是:有A,B,C三个系统,在A处登录过后,再访问B系统,B系统就已经处于了登录状态,C系统也是一样。举个生活...
  • SSO单点登录Java实现实例

    千次阅读 多人点赞 2021-02-05 14:43:44
    本文主要讲解,基于令牌token方式实现,SpringBoot工程下的SSO单点登录整合代码实例Demo,文末附源码地址。 1.环境准备 SSO认证中心服务( www.mysso.com) 客户端1(www.myclient1.com) 客户端2...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 111,050
精华内容 44,420
关键字:

java实现登陆后返回登录前页面

java 订阅