首先,我们先来了解一下注册,注册便是申请账户。也就是对数据库的账号库进行新增数据,同时进行验证,验证可以通过js或serlvet来进行实现,下面是我们的以及一个简单注册实例,没有对账号密码格式进行限制作为学习了解

jsp文件

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="GB18030">
<title>Insert title here</title>
</head>
<body>
<body background="image\td.jpg">
<audio src="image\若把你.mp3" controls>
</body>
</audio>

    <form action="login1" method="get" >

     <font size="5"  align="center">注册界面</font><br>

     用户名:<input type="text" name="username" ><br>

     密    码:<input type="text" name="password"><br>

    <input type="submit" value="注册"> 

     <input type="reset"value="重置">   

    </form>

</body>
</html>

serlvet

package Servlet;

import java.io.IOException;
import java.sql.SQLException;

import org.apache.catalina.tribes.ChannelSender;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import com.Dao.zhuce;
import com.Bean.deng;
/**
 * Servlet implementation class dengji
 */
@WebServlet("/login1")//对应html中的action表单
public class login1 extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public login1() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doPost(request, response);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        request.setCharacterEncoding("utf-8");
        //设置相应的文本类型
        response.setContentType("text/html;charset=utf-8");//设置响应类型,并防止中文乱码
        
        zhuce A =new zhuce();
        int i = 0;
        String username=request.getParameter("username");
        String password = request.getParameter("password");
        
        deng B = new deng();
        B.setUsername(username);
        B.setPassword(password);
        System.out.println(username);
        System.out.println(password);
        try {
             i=A.dl(B);
              
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
       
      
        if(i==1)
        {  response.getWriter().append("注册成功!2s后返回登录页面");
        response.setHeader("refresh","2;URL=denglu.html");}
              
        else
             response.getWriter().append("注册失败!");
    }
}

bean文件

package com.Bean;

public class deng {
    private String username;
    private String password;
    
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    
}
package com.Dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import com.Bean.deng;
import com.Util.utils;
public class zhuce{
      // TODO Auto-generated method stub
    public int dl(deng A) throws Exception {
        
         Connection connection = utils.getConnection();
        String sql = "insert into login  values(?,?)";

//修改你的表格名称
    
         int i=0;
        try {
             //创建语句传输对象
            PreparedStatement  preparedStatement = connection.prepareStatement(sql);
             
             preparedStatement.setString(1, A.getUsername());
             preparedStatement.setString(2, A.getPassword());
            
            preparedStatement.executeUpdate();
            i=1;
             } catch (SQLException e) {
                // TODO Auto-generated catch block
               e.printStackTrace();
            }finally {

            }
         return i;
    }

}

dao文件下的zhuce.java

Util下的工具包

package com.Util;


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



/**
 * JDBC快速入门
 */
public class utils {
    public static Connection getConnection() throws Exception {
    
           Connection connection = null;//连接数据库
           PreparedStatement ps = null;//Statement 对象用于将 SQL 语句发送到数据库中。
           ResultSet rs = null;
        //1. 导入驱动jar包
        //2.注册驱动
       // Class.forName("com.mysql.cj.jdbc.Driver");
         connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/zjr?serverTimezone=UTC","root", "Zhaowenzhe1007");//修改你的数据库名称以及密码
       return connection;
    }
    
    public static void close(Connection connection ) {
         try {
           if (connection != null) {
                connection.close();
             }
           
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
       }
     }
     public static void close(PreparedStatement preparedStatement ) {
         try {
            if (preparedStatement != null) {
                 preparedStatement.close();
             }            
        } catch (SQLException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
         }
     }
     public static void close(ResultSet resultSet ) {
        try {
            if (resultSet != null) {
                 resultSet.close();
             }
             
         } catch (SQLException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
         }
     }

    
     
 }

注册就是一个简单的添加sql语句的执行,同理我们可以想得到登录就是一个查询的sql语句,本次我们先学习单用户登录,通过查询用户名,如果存在便返回密码参数与输入的密码值进行匹配,如果一致输出登录成功并返回登陆后页面

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
<title>登录</title>
</head>

<body background="image\td.jpg">
<audio src="image\若把你.mp3" controls>
</body>
</audio>
<h1>登录界面</h1>
<form action="login" method="post">
    <input type="hidden" name="action" value="regist">
    <input type="text" name="username" placeholder="请输入您的用户名"><br>
    <input type="password" name="password" placeholder="密码"><br>
    <input type="submit" value="登录">
    <input type="text" id="vcode" placeholder="验证码" value="验证码" onfocus="this.value=''" onblur="if(this.value=='')this.value='验证码'" /><span id="code" title="看不清,换一张"></span>
    <div id="search_pass_link">
    </div>
</form>
    <a style="color:blue" href='zc.jsp?' onclick="del()">没有账号?注册一个!</a>
    <center>
        <p>${message}</p>
    </center>
    
</body>
</html>

login的serlvet文件

package Servlet;
import java.io.IOException;
import java.sql.SQLException;

import com.Bean.deng;
import com.Dao.UserDB;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;

@WebServlet("/login")
public class login extends HttpServlet{
private static final long serialVersionUID=1L;
String message="";

public login() {
    super();
}
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       request.setCharacterEncoding("utf-8");
        String url="denglu.jsp";

        try {
            url=LoginUser(request,response);
        } catch (ClassNotFoundException | SQLException e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        request.setAttribute("message", message);
        //forward函数把原页面的req和res传入新界面 这时新旧页面拥有相同的req和res,request.getParameter可得相应值
       getServletContext().getRequestDispatcher(url).forward(request,response);
       
  }
  private String LoginUser(HttpServletRequest request, HttpServletResponse response) throws Exception {
      String username=request.getParameter("username");
      String password=request.getParameter("password");
     
      deng user=new deng();
      user.setUsername(username);
      user.setPassword(password);
      
      String url="/denglu.jsp";
     
      if(!UserDB.UserExists(username)){//判断用户名是否存在
          message="用户名不存在!";
          return url;
      }
      
     deng user2=UserDB.Password(username);//从数据库中获取该用户名的密码
      if(user2.getPassword().equals(password)) {//判断密码是否正确
          url="/zhu.jsp";
          return url;
      }
      else {
          message="密码错误!";
          return url;
      }
  }
}

bean文件数据库连接工具包和注册一致,下面是dao文件userdb

package com.Dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.Util.utils;

import com.Bean.deng;
public class UserDB {
    public static boolean UserExists(String username) throws Exception{
        Connection connection = utils.getConnection();
        PreparedStatement ps=null;
        ResultSet rs=null;
        String xm="select username from login"+" where username=?";
        try {
            ps=connection.prepareStatement(xm);
            ps.setString(1,username);
            rs=ps.executeQuery();
            return rs.next();
        }catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return false;
        } finally {
            utils.close(rs);
            utils.close(ps);
            utils.close(connection);
        }
    }
    public static deng Password(String username) throws Exception{
        Connection conn=utils.getConnection();
        PreparedStatement ps=null;
        ResultSet rs=null;
        String xm="select * from login"+" where username=?";
        try {
            ps=conn.prepareStatement(xm);
            ps.setString(1,username);
            rs=ps.executeQuery();
            deng user=new deng();
            if(rs.next()) {
            user.setUsername(rs.getString("username"));
            user.setPassword(rs.getString("password"));
            }
            return user;
        }catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        } finally {
            utils.close(rs);
            utils.close(ps);
            utils.close(conn);
        }
        
    }}

我们这里用到了message来传递具体错误信息,如账号不存在密码错误

 deng user=new deng();
            if(rs.next()) {
            user.setUsername(rs.getString("username"));
            user.setPassword(rs.getString("password"));
            }
            return user;
dao文件下获取账号密码信息来传递给serlvet进行匹配

try {
url=LoginUser(request,response);
}

serlvet将接收的数据传入LoginUser类中

deng user=new deng();
user.setUsername(username);
user.setPassword(password);接收数据库值

String username=request.getParameter(“username”);
String password=request.getParameter(“password”);接收jsp中输入值

if(!UserDB.UserExists(username)){//判断用户名是否存在
message=”用户名不存在!”;
return url;
}

deng user2=UserDB.Password(username);//从数据库中获取该用户名的密码
if(user2.getPassword().equals(password)) {//判断密码是否正确
url=”/zhu.jsp”;
return url;
}
else {
message=”密码错误!”;
return url;
}进行匹配密码是否相同同时选择登录成功后的返回页面

原文地址:http://www.cnblogs.com/azwz/p/16907058.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性