JavaWeb实现登录注册与验证码。

写JavaWeb的准备工作:
首先准备好数据库和Myeclipse,这里以mysql为例,再下载好SQL的图形化操作界面SQLyog,在数据库中建张表 这里写图片描述
详细步骤:
在Myeclipse 中新建一个Web工程:
这里写图片描述
在src下建三个包ServletPackge,ModelPackage,TestPackage.
分别存放即将要创建的Servlet,和通过java连接数据库对数据库进行基本操作的java程序和测试程序。
导jar包:
将mysql-connector-java-5.0.3-bin .jar包导入到 WEN-INF下的lib文件夹,右击build path将包添加到Referenced Libraries下呈奶瓶状。这里写图片描述
在ModelPackage中写入:

代码:add.java主要是向是数据库中添加数据
package Mod;

import java.sql.DriverManager;
import java.sql.SQLException;




public class add {
    public static void main(String[] args) {

        final String driver ="com.mysql.jdbc.Driver";
        final String url ="jdbc:mysql://localhost:3306/students";


            try {
                Class.forName(driver);
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                java.sql.Connection conn = DriverManager.getConnection(url,"root","1234");
                String sql ="insert into student(name) value=(?)";
                java.sql.PreparedStatement pst =conn.prepareStatement(sql);
                pst.setString(1, "benben");
                System.out.println("完成");

            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

    }

}
DBOperator.java主要是对数据库的连接操作:
package Mod;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DBOperator {
    private static final String driver ="com.mysql.jdbc.Driver";
    private static final String url ="jdbc:mysql://localhost:3306/students";
    static{
        try {
            Class.forName(driver);
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    public static Connection getConnection() {
        Connection conn =null;
        try {
            conn =(Connection) DriverManager.getConnection(url,"root","1234");
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return conn;

    }
    public static void close(ResultSet rs, Statement st, Connection conn)
    {
        try
        {
            if(rs != null)
            {
                rs.close();
            }
            if(st != null)
            {
                st.close();
            }
            if(conn != null)
            {
                conn.close();
            }

        }catch(Exception ex)
        {
            ex.printStackTrace();
        }

    }

    public static void close(Statement st, Connection conn)
    {
        close(null,st,conn);
    }
}
 student.java存储学生的id,name,tel信息与数据库中相对应:
 package Mod;

public class student {

    private  int id;
    private String name;
    private int tel;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getTel() {
        return tel;
    }
    public void setTel(int tel) {
        this.tel = tel;
    }

}
StudentManger.java这是一个接口 写入两个方法分别对应登录时使用的checkLogin和注册时用的add方法。
public interface StudentManger {
    public boolean add(student S);

    public boolean checkLogin(int tel, String name);
}
StudentMangerImpl 是上面接口的实现方法:
package Mod;


import java.sql.SQLException;


//import com.mysql.jdbc.ResultSet;

public class StudentMangerImpl implements StudentManger  {


    public boolean add(student S) {
        boolean flag = false;

        java.sql.Connection conn = null;
        java.sql.PreparedStatement pst = null;
        conn =  DBOperator.getConnection();
        String sql = "insert into student(name,tel) value(?,?) ";
        try {
            pst = conn.prepareStatement(sql);
            pst.setString(1, S.getName());
            pst.setInt(2, S.getTel());
            int rows=pst.executeUpdate();
            if(rows>0){
                flag=true;
            }

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return flag;
    }

    @Override
    public boolean checkLogin(int tel, String name) {
        boolean flag=false;

        //student S = new student();

        java.sql.Connection conn = null;
        java.sql.Statement st =null;
        java.sql.ResultSet rs = null;



        try {
            conn=DBOperator.getConnection();
            String sql = "select * from student where tel="+tel;
            st=conn.createStatement();
            rs = st.executeQuery(sql);


            while(rs.next()){
                if(rs.getString("name").equals(name));

                    flag =true;

            }




        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally {
            DBOperator.close(rs, st, conn);

        }



        return flag;
    }

}

在TestPackage中写:

ConnectionTest.java对是否成功连接数据库进行测试:
import Mod.DBOperator;

public class ConnectionTest {
    public static void main(String[] args) {
        java.sql.Connection conn = DBOperator.getConnection();
        if (conn != null) {
            System.out.println("连接成功!");
        }

    }

}
在testStudent:
package Test;

import java.sql.DriverManager;
import java.sql.SQLException;

import Mod.DBOperator;
import Mod.StudentMangerImpl;
import Mod.student;



public class testStudent {
    public static void main(String[] args) {
        final String driver ="com.mysql.jdbc.Driver";
        final String url ="jdbc:mysql://localhost:3306/students";

        try {
            Class.forName(driver);
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        DBOperator d= new DBOperator();
        try {
            java.sql.Connection conn = DriverManager.getConnection(url,"root","1234");
            if(conn!=null){
                System.out.println("链接成功");
            }
            else{
                System.out.println("链接失败");
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


        StudentMangerImpl N = new StudentMangerImpl();
        student B =new student();
        B.setId(6);
        B.setName("yang");
        B.setTel(5);

        if(N.add(B)){
            System.out.println("添加成功");
        }
        else{
            System.out.println("添加失败");
        }
        StudentMangerImpl S = new StudentMangerImpl() ;
        if(S.checkLogin(5, "yang")){
            System.out.println("成功");
        }
        else{
            System.out.println("失败");
        }
    }

}

JSP的创建:
在WebRoot下创建index.jsp,load.jsp,zhuce.jsp分别是一个跳转,一个登录界面和注册成功界面
index.jsp代码:
点击跳转
load.jsp代码:
在中添加
function reLoadCode(){
var t =new Date().getTime();
document.getElementById("imagecode").src="ImageServlet?t"+t;
}

在中写:

<h1>用户管理系统</h1>
    <form action="denglu" method="post">
      学&nbsp;号:<input name="id" type="text"><br/>
    <p></p>
    姓&nbsp;名: <input name="name" type="text"><br/>
      <p></p>
    电&nbsp;话:  <input name="tel" type="text"><br/>  
    <p></p>
     验证码:<input name="checkcode" type="text">
     <p></p> 
 <img alt="验证码" src="ImageServlet" id = "imagecode">
 <a href="javaScript:reLoadCode()">看不清</a><br/>

  <input type="submit" value="登录">&nbsp;&nbsp;&nbsp;&nbsp;<a href ="Main.jsp">新用户</a>
    </form>
    </center>

在注册页面写:

<form action="zhuce" method="post">
    学&nbsp;号:<input name="id" type="text"><br/>
    <p></p>
    姓&nbsp;名: <input name="name" type="text"><br/>
      <p></p>
    电&nbsp;话:  <input name="tel" type="text"><br/>  <p></p>
  <input type="submit" value="注册">
    </form>
    </center>

其中action=”??”要与创建的servlet的URL地址相匹配:
这里写图片描述

每一个action 的值都要匹配一个一个servlet。
写Servlet:
load.java:

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import Mod.StudentManger;
import Mod.StudentMangerImpl;



public class denglu extends HttpServlet {

    /**
     * Constructor of the object.
     */
    public denglu() {
        super();
    }

    /**
     * Destruction of the servlet. <br>
     */
    public void destroy() {
        super.destroy(); // Just puts "destroy" string in log
        // Put your code here
    }

    /**
     * The doGet method of the servlet. <br>
     *
     * This method is called when a form has its tag value method equals to get.
     * 
     * @param request the request send by the client to the server
     * @param response the response send by the server to the client
     * @throws ServletException if an error occurred
     * @throws IOException if an error occurred
     */
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request,response);

    }

    /**
     * The doPost method of the servlet. <br>
     *
     * This method is called when a form has its tag value method equals to post.
     * 
     * @param request the request send by the client to the server
     * @param response the response send by the server to the client
     * @throws ServletException if an error occurred
     * @throws IOException if an error occurred
     */
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {


        request.setCharacterEncoding("GB18030");
        response.setCharacterEncoding("GB18030");

        int tel = Integer.parseInt(request.getParameter("tel"));
        String name = request.getParameter("name");
        String checkcode = request.getParameter("checkcode");
        String piccode = (String) request.getSession().getAttribute("piccode");


        Mod.student S = new Mod.student();
        StudentManger M = new StudentMangerImpl();
         boolean flag ;
        flag=M.checkLogin(tel, name);

        if(flag==true&&checkcode.equalsIgnoreCase(piccode)){
            response.sendRedirect("index.jsp");

        }
        else{
            response.setContentType("textml");
            PrintWriter out = response.getWriter();
            out.print("失败!");
        }
    }


    /**
     * Initialization of the servlet. <br>
     *
     * @throws ServletException if an error occurs
     */
    public void init() throws ServletException {
        // Put your code here
    }

zhuce.java

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import Mod.StudentManger;
import Mod.StudentMangerImpl;
import Mod.student;


public class zhuce extends HttpServlet {

    /**
     * Constructor of the object.
     */
    public zhuce() {
        super();
    }

    /**
     * Destruction of the servlet. <br>
     */
    public void destroy() {
        super.destroy(); // Just puts "destroy" string in log
        // Put your code here
    }

    /**
     * The doGet method of the servlet. <br>
     *
     * This method is called when a form has its tag value method equals to get.
     * 
     * @param request the request send by the client to the server
     * @param response the response send by the server to the client
     * @throws ServletException if an error occurred
     * @throws IOException if an error occurred
     */
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request,response);

    }

    /**
     * The doPost method of the servlet. <br>
     *
     * This method is called when a form has its tag value method equals to post.
     * 
     * @param request the request send by the client to the server
     * @param response the response send by the server to the client
     * @throws ServletException if an error occurred
     * @throws IOException if an error occurred
     */
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {




        request.setCharacterEncoding("GB18030");
        response.setCharacterEncoding("GB18030");

        StudentManger S = new StudentMangerImpl();
        student M = new student();

        int id = Integer.parseInt(request.getParameter("id"));
        String name = request.getParameter("name");
        int tel =Integer.parseInt(request.getParameter("tel"));


        M.setId(id);
        M.setName(name);
        M.setTel(tel);
        boolean flag = S.add(M);
        if(flag ==true){
            response.sendRedirect("load.jsp");
        }
        else{
            response.setContentType("textml");
            PrintWriter out = response.getWriter();
            out.print("失败!");
        }
    }

    /**
     * Initialization of the servlet. <br>
     *
     * @throws ServletException if an error occurs
     */
    public void init() throws ServletException {
        // Put your code here
    }

}

ImageServlet.java

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import Mod.StudentManger;
import Mod.StudentMangerImpl;
import Mod.student;


public class zhuce extends HttpServlet {

    /**
     * Constructor of the object.
     */
    public zhuce() {
        super();
    }

    /**
     * Destruction of the servlet. <br>
     */
    public void destroy() {
        super.destroy(); // Just puts "destroy" string in log
        // Put your code here
    }

    /**
     * The doGet method of the servlet. <br>
     *
     * This method is called when a form has its tag value method equals to get.
     * 
     * @param request the request send by the client to the server
     * @param response the response send by the server to the client
     * @throws ServletException if an error occurred
     * @throws IOException if an error occurred
     */
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request,response);

    }

    /**
     * The doPost method of the servlet. <br>
     *
     * This method is called when a form has its tag value method equals to post.
     * 
     * @param request the request send by the client to the server
     * @param response the response send by the server to the client
     * @throws ServletException if an error occurred
     * @throws IOException if an error occurred
     */
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {




        request.setCharacterEncoding("GB18030");
        response.setCharacterEncoding("GB18030");

        StudentManger S = new StudentMangerImpl();
        student M = new student();

        int id = Integer.parseInt(request.getParameter("id"));
        String name = request.getParameter("name");
        int tel =Integer.parseInt(request.getParameter("tel"));


        M.setId(id);
        M.setName(name);
        M.setTel(tel);
        boolean flag = S.add(M);
        if(flag ==true){
            response.sendRedirect("load.jsp");
        }
        else{
            response.setContentType("textml");
            PrintWriter out = response.getWriter();
            out.print("失败!");
        }
    }

    /**
     * Initialization of the servlet. <br>
     *
     * @throws ServletException if an error occurs
     */
    public void init() throws ServletException {
        // Put your code here
    }

}

工作已经全部完成。

  • 3
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值