用eclipse以MVC 2 形式写一个简单的登录注册功能的Javaweb程序

本教程详细介绍了如何在Eclipse中使用MVC 2架构创建一个简单的登录注册功能。首先在MySQL中创建数据库和user表,接着在Eclipse中建立项目,包括UserDAO、User、LoginServlet、RegisterServlet和LogoutServlet等类。同时,还添加了监听器来显示在线用户数量,并实现了过滤器以统一编码并控制访问权限。所有配置完成后,通过web.xml文件进行部署,最后创建login.jsp、register.jsp和index.jsp页面。
摘要由CSDN通过智能技术生成

在使用前要注意版本的问题,我的tomcat是9.0版本的,里面的注释比较少对新手来说看的话可能会比较费力点。
在这里插入图片描述
在这里插入图片描述

先在Mysql里面先建立一个demo数据库,再建立一个user表,创建的代码如下

create database Demo default charset=utf8;
use Demo;

create table user (
username varchar(30) not null unique,
password varchar(30) not null,
phone varchar(20),
addr varchar(30))engine=innodb default charset=utf8; 

使用的方法,在开始里面找到MySQL点击这个,然后它会让你输入你的数据库的密码,输入后再把代码复制粘贴进去按回车键就行了。
在这里插入图片描述
然后在eclipse里面建立一个项目,
在这里插入图片描述

创建的各个类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这个登录注册项目,我只是随手的写了下,里面加了个监听器,用于监听session的一旦有用户登录就会显示在线的人数,
还有加入了一个过滤器用来,将各个类下的编码进行转换,还有就是没经过登录访问该项目下的其他类会强制跳转到login.jsp下。
虽然jstl标签我没用到,但还是需要导入进去的。

先连接数据库

package mysql;

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

public class DBGet {
   
	public static String url  = "jdbc:mysql://localhost:3306/Demo?serverTimezone=GMT%2B8";
	//我的数据库连接需要这样的输入形式,如果不适合你的话可以试用下这个
//“?useSSL = false&useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC”
	public static String username  = "root";//你数据库的用户名
	public static String password  = "?";//这是你数据库的密码   
    private static Connection con =null;
    public void getConn(){
     //连接数据库  ,cj的加入是要看你数据库的版本的问题的,版本低点都不用加”cj“的	
        try{
   
            Class.forName("com.mysql.cj.jdbc.Driver");
            con=DriverManager.getConnection(url,username,password);
            System.out.println("连接数据库成功");                     
        }
        catch(ClassNotFoundException ex){
   
            System.out.println("连接数据库失败");
            ex.printStackTrace();
        }
        catch(SQLException ex){
   
            System.out.println(ex.getMessage()+"dbget");
            ex.printStackTrace();
        }     
    }
    public ResultSet getData(String sql) {
   	//用来获得参数
    	Statement stm=null;
    	try {
   
    		stm= con.createStatement();
    		ResultSet result =stm.executeQuery(sql);
    		System.out.println("获取数据库内容");
    		return result;
    	}catch(SQLException e){
   
    		System.out.println("SQLException!!!");
    		e.printStackTrace();
    		return null;
    	}
    }
    public void setData(String sql) {
    	//用来保存参数
    	Statement stm = null;
		try{
   
			stm = con.createStatement();
			stm.executeUpdate(sql);
			System.out.println(" 保存数据内容到数据库!");			
		}catch(SQLException e){
   
			System.out.println("SQLException!!!");
			e.printStackTrace();		
		}finally {
   
			if(stm!=null) {
   
				try {
   
					stm.close();
				} catch (SQLException e) {
   
					e.printStackTrace();
				}
			}
		}
    }
    public  void close(){
   
        try{
             
               con.close();
         System.out.print("关闭!");
        }
        catch(SQLException e){
   
        	e.printStackTrace();
        }
    }
}

建立UserDAO

package sDAO;

import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

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

import mysql.DBGet;
import sDO.User;

public class UserDAO {
   
	public static  boolean register(String username,String password,String phone,String address) {
   //注册
		DBGet db=new DBGet();
		db.getConn();
		try {
   						
			ResultSet rs=db.getData("select * from user where username='"+username+"'");
			System.out.print(password);
			if(rs.next()) {
   								
				rs.close();
				db.close();
				return false;//说明数据库中含有这个用户名
			}else {
   
				String sql="insert into user(username,password,phone,addr) values('"+username+"','"+password+"','"+phone+"','"+address+"')";
				//String sql="insert into user(username,password,phone,addr) values('7','7','7','7')";
				db.setData(sql);		
				db.close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值