第二十六天 jsp+servlet+mysql写的一个登录验证

本文是初学者的学习记录,尝试用jsp、servlet和mysql完成登录验证功能。在实现过程中遇到验证码生成的问题,希望得到帮助。总结了注册验证的逻辑,包括检查用户名是否为空、是否已注册、密码是否为空。登录验证则对比数据库和表单数据,显示相应的错误信息。同时介绍了User实体类的作用。
摘要由CSDN通过智能技术生成

初学者,记录学习的点点滴滴;

验证码没搞出来,有点累,头疼! 希望有大神指导,帮我搞一下这验证码。

总结一下吧:

注册:其实就是在servle中t,验证从jsp获取的数据

    1.用户输入是否为空,为空则显示用户名不能为空,

    2.如果已经被注册过了,就显示已经注册过,请重新填写用户名。

    3.密码是否为空,为空则显示不能为空。

登录:

验证从数据库获取的数据是否与表单获取的数据相同;

     不同则显示,用户名或者密码错误;


其实都很简单。第一次写比较麻烦而已,我就是练练手而已。



1.User实体类

package com.entity;
//映射数据库中表的字段名
public class User {
    private int id;
    private String userName;
    private String name;
    private String sex;
    private String pwd;
    
    public User() {
        super();
        // TODO Auto-generated constructor stub
    }
    public User( String name,String userName,   String pwd,String sex) {
        super();
        this.userName = userName;
        this.name = name;
        this.sex = sex;
        this.pwd = pwd;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + id;
        result = prime * result + ((name == null) ? 0 : name.hashCode());
        result = prime * result + ((sex == null) ? 0 : sex.hashCode());
        result = prime * result + ((userName == null) ? 0 : userName.hashCode());
        return result;
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        User other = (User) obj;
        if (id != other.id)
            return false;
        if (name == null) {
            if (other.name != null)
                return false;
        } else if (!name.equals(other.name))
            return false;
        if (sex == null) {
            if (other.sex != null)
                return false;
        } else if (!sex.equals(other.sex))
            return false;
        if (userName == null) {
            if (other.userName != null)
                return false;
        } else if (!userName.equals(other.userName))
            return false;
        return true;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", userName=" + userName + ", name=" + name + ", sex=" + sex + "]";
    }
    public String getPwd() {
        return pwd;
    }
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }   
}
2.数据库操作的接口和实现类

package com.dao;

import java.sql.SQLException;

import com.entity.User;

//与数据库有关的操作的接口

public interface UserDao {
    //注册用户
    public void add(User user) throws ClassNotFoundException, SQLException;
    //用户登录
    public User findByUser(String userName) throws SQLException, ClassNotFoundException;
}
package com.dao;

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

import com.entity.User;
import com.mysql.jdbc.PreparedStatement;
import com.util.DBUtils;

public class UserDaoImpl implements UserDao {
    //用户增加
    @Override
    public void add(User user) throws ClassNotFoundException, SQLException {
        // TODO Auto-generated method stub
        Connection conn=DBUtils.getConn();
        Statement st=conn.createStatement();
        String sql="insert into t_user (name,userName,pwd,sex) values('"+user.getName()+"','"+user.getUserName()+"','"+user.getPwd()+"','"+user.getSex()+"')";
        st.executeUpdate(sql);
        DBUtils.CloseConn(conn);
    }
    @Override
    public User findByUser(String userName) throws SQLException, ClassNotFoundException {
        // TODO Auto-generated method stub
        Connection conn=DBUtils.getConn();
        String sql="select * from t_user where userName=?";
        PreparedStatement ps=(PreparedStatement) conn.prepareStatement(sql);
        ps.setString(1, userName);
        ResultSet rs=ps.executeQuery();
        User u = null;
        while(rs.next()){
            int id=rs.getInt(1);
            String name=rs.getString(2);
            String pwd=rs.getString(3);
            String sex=rs.getString(4);
               u=new User();
               u.setId(id);
               u.setName(name);
               u.setPwd(pwd);
               u.equals(sex);
        }
        return u;
    }
}

3.业务逻辑service接口和实现类
package com.service;

import com.entity.User;

public interface UserService {
    public User findByUser(String userName);
    public void add(User user);
}
package com.service;

import java.sql.SQLException;

import com.dao.UserDao;
import com.entity.User;

public class UserServiceImpl implements UserDao {
     private UserDao dao ;
     
     public UserServiceImpl(UserDao dao) {
        super();
        this.dao = dao;
    }
    //增加用户的service
     @Override
    public void add(User user) throws ClassNotFoundException, SQLException {
        // TODO Auto-generated method stub
        dao.add(user);
    }
     public UserDao getDao() {
        return dao;
    }
    public void setDao(UserDao dao) {
        this.dao = dao;
    }
    //查找用户的额service
    @Override
    public User findByUser(String userName) throws SQLException, ClassNotFoundException {
        // TODO Auto-generated method stub
        return dao.findByUser(userName);
    }

}
4.util工具类

package com.util;

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

public class DBUtils {
    //获取链接
    public static Connection getConn() throws ClassNotFoundException{
       Class.forName("com.mysql.jdbc.Driver");
       Connection conn = null;
    try {
        conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test03?useUnicode=true&charactEncoding=gbk","root","1234");
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
       return conn;
    }
    //关闭数据库
    public static void CloseConn(Connection conn){
        if(conn!=null){
            try {
                conn.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}

5.servletweb层,负责转发给jsp

package com.web;

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

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

import com.dao.UserDaoImpl;
import com.entity.User;
import com.service.UserServiceImpl;

@SuppressWarnings("serial")
public class UserServlet extends HttpServlet {
    protected void service(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException{
        //编码设置
        request.setCharacterEncoding("GBK");
        response.setContentType("text/html;charset=gbk");
        String uri=request.getRequestURI();
        String path=uri.substring(uri.lastIndexOf("/"),uri.lastIndexOf("."));
        UserServiceImpl service= new UserServiceImpl(new UserDaoImpl());
       //根据叠取的请求名转发到对用的页面
    if(path.equals("/regist")){
        String userName=request.getParameter("userName").trim();
        String name=request.getParameter("name");
        String pwd=request.getParameter("pwd").trim();
        String sex=request.getParameter("sex");
        //根据用户名查找用户是否存在,如果存在给一个提示,继续留在注册界面
        if(userName.isEmpty()){
            request.setAttribute("regist_err","用户名不能为空");
            request.getRequestDispatcher("regist.jsp").forward(request, response);
        }else if(pwd.isEmpty()){
                request.setAttribute("regist_err1", "密码不能为空");
                request.getRequestDispatcher("regist.jsp").forward(request, response);
        }else{
            User user = null;
            try {
                user = service.findByUser(userName);
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            if(user==null){
                User u=new User(userName,name,pwd,sex);
                try {
                    service.add(u);
                } catch (ClassNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                response.sendRedirect(request.getContextPath()+"/login.jsp");
            }else{
                request.setAttribute("regist_err", "用户名已经存在,请重新注册!");
                request.getRequestDispatcher("regist.jsp").forward(request, response);
            }
        }
    }else if(path.equals("/login")){
            String userName=request.getParameter("userName");
            String pwd=request.getParameter("pwd");
            User user = null;
            try {
                user = service.findByUser(userName);
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            if(user!=null&&user.getPwd().equals(pwd)){
                HttpSession session=request.getSession();
                session.setAttribute("login_success",user);
                response.sendRedirect(request.getContextPath()+"/index.jsp");
             }else{
                 request.setAttribute("login_err","用户名或者密码错误");
                 request.getRequestDispatcher("/login.jsp").forward(request,response);
             }
    }
    }
}

6.注册+登录页面+登录成功会跳的页面

<%@ page language="java" import="java.util.*" pageEncoding="GBK" contentType="text/html; charset=GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>用户注册</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
  		<h1>欢迎来到澳门博彩用户注册页面</h1>
		<form action="regist.do" method="post">
			<table>
				<tr><td>姓名:</td><td><input type="text" name="userName"/></td>
					<%
					String str=(String)request.getAttribute("regist_err");
					String str1=(String)request.getAttribute("regist_err1");
					
					 %>
					<td><%=str==null?"":str%><td>
				</tr>
				<tr><td>邀请码:</td><td><input type="text" name="name"/></td></tr>
				<tr><td>密码:</td><td><input type="text" name="pwd"/></td><td><%=str1==null?"":str1%><td></tr>
				<tr><td>性别: </td><td>男:<input type="radio"  name="sex" value="M" checked="checked"/>女:<input type="radio" name="sex" value="W"/></td></tr>
				 
				<tr><td> <input type="submit" value="提交"/></td></tr>
			</table>
		</form>			
  </body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
    <title>My JSP 'login.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
		<h1>欢迎来到澳门博彩用户登录页面</h1>
		<form action="login.do" method="post">
			<table>
				<tr><td>用户名:</td><td><input type="text" name="userName"/></td>
				<td> <%=request.getAttribute("login_err")==null?"":request.getAttribute("login_err") %></td>
				</tr>
				<tr><td>密码:</td><td><input type="text" name="pwd"/></td></tr>
				<tr><td> <input type="submit" value="提交"/></td></tr>
			</table>
		</form>			
  </body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
    This is my JSP page. <br>
    <h1>  来玩呀,充100送100!、、、、、、</h1>
  </body>
</html>
7.web,xml和sql
<?xml version="1.0" encoding="GBK"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   version="2.5"> 
    <servlet>
   		<servlet-name>myCode</servlet-name>
   		<servlet-class>com.web.CheckCodeServlet</servlet-class>
    </servlet>
	<servlet>
			<servlet-name>userServlet</servlet-name>
			<servlet-class>com.web.UserServlet</servlet-class>
	</servlet>
	<servlet-mapping>
			<servlet-name>userServlet</servlet-name>
			<url-pattern>*.do</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>myCode</servlet-name>
		<url-pattern>/checkCode</url-pattern>
	</servlet-mapping>
</web-app>

create database test03;
create table t_user(
	id int primary key auto_increment,
	name varchar(20),
	userName varchar(20),
	pwd varchar(20),
	sex varchar(2)
);

select * from t_user;






评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值