登录页面Java,java编写注册登录界面

  登录页面Java,java编写注册登录界面

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

  注册的超文本标记语言代码,页面非常丑!请见谅。

  bodyfieldset id= 图例注册页面/legend form action=/day 02/register 2 method= post id= form table tr TD用户名:/TD TD input type= text name= userName /span id= span 1 /span/TD/tr tr TD密码:/td td输入type= password name= password //TD/tr tr TD确认密码:/TD TD input type= password name= repassword /span id= span 2 /span/TD/tr tr id= tr4 TD性别:/TD TD input type= radio name= sex value=男 /男输入类型=单选名称=性别值=女 /女span id=span3/span /td /tr tr td爱好:/TD TD input type= checkbox name= hobby value=唱 /唱输入类型=复选框名称=爱好值=跳 /跳输入类型=复选框名称=爱好值=说唱/说唱输入类型=复选框 name= hobby value=篮球 /篮球span id=span4/span /td /tr tr td国籍:/TD TD select name= country id= country 选项值=无-请选择国籍-/选项选项值=中国中国/选项选项值=韩国韩国/选项选项值=日本日本/选项选项值=美国美国/option/select span id= span 5 /span/TD/tr tr TD自我评价:/TD TD textarea rows= 10px cols= 20px id= textarea name= describe /textarea/tdg

  t;      </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==nullpassword==nullrepassword==nullsex==nullhobby==nullcountry==nulldescribe==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" rel="external nofollow" >注册</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>");           &a      

	  
	  
	  
	  
	  
	  
        

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: