JavaEE:JSP+Servlet结合Mysql,实现用户登录系统

前言:

最近在做一个小说网站,开发了Java Web的用户登录系统,功能较为完善。
实现的方式是JSP+Servlet,用户数据存入了Mysql中。

一、需求分析:

我们首先分析,用户登录系统首先我们要求用户要有,昵称和密码,最好在用户注册时让用户填写邮箱,方便我们做网站时向用户发送一些信息。

当有用户登陆时,前端页面,将用户填写的用户名、密码,送入Servlet。Servlet通过调用封装好的Mysql操作接口,查询数据库中是否有信息,再进行相关操作。

当新用户注册时,将用户填写的昵称、密码、邮箱,存入Mysql数据库中。

二、技术思想:

MVC模式、三层架构:

JSP、Servlet、Javabean

三、数据库设计:

我们存入数据库中的用户信息有三类:用户昵称、密码、邮箱。
首先要在Mysq数据库中建立有三种表头的表,把昵称作为索引主键。

这里写图片描述

了解Mysql相关操作命令介绍,请点击:
http://blog.csdn.net/mmayanshuo/article/details/79337950

四、数据库封装:

Java对Mysql编程,需要将相关Jar包导入项目:
这里写图片描述
即是mysql-connector-java,网上有很多下载地址。

下载完成后,导入项目的方式,请参阅:

如何向Java项目中导入jar包(Eclipse)

JavaEE项目导入方式。

这是对Msql封装的包结构:

这里写图片描述

其中:
1、定义用户对象User;
2、封装对Mysql连接的相关操作;
3、定义对Mysql相关操作的接口;
4、实现(3)的接口,实现对Mysql相关操作;
5、定义Mysql外部操作接口;
6、实现(5)的接口,向外发布对Mysql的相关操作;

1、定义用户对象:
/*
 *      定义用户对象
 */

//存储用户信息的实体类
public class User {
    private String user_name;
    private String user_mailbox;
    private String user_password;
    //返回用户名
    public String get_user_name(){

        return this.user_name;
    }
    //设置用户名
    public void set_user_name(String user_name){

        this.user_name=user_name;

    }
    //返回用户邮箱
    public String get_user_mailbox(){

        return this.user_mailbox;

    }
    //设置用户邮箱
    public void set_user_mailbox(String user_mailbox){

        this.user_mailbox=user_mailbox;
    }
    //返回用户密码
    public String get_user_password(){

        return this.user_password;

    }
    //设置用户密码
    public void set_user_password(String user_password){

        this.user_password=user_password;
    }



}
2、连接Mysql数据库:

这里写图片描述

3、定义Mysql相关操作接口:
/*
 * 对Mysql数据库相关操作接口
 */

import java.util.*;

public interface Userutils_inter {
    //插入用户信息
    public void insert_user_information(User u);
    //更新用户信息
    public void update_user_information(User u);
    //删除用户信息
    public void delete_user_information(User u);

    //返回用户信息表
    public List<User> getusers();

    //查找用户
    public User getUser_Byusername(String user_name);

}
4、实现Mysql相关操作接口:

这里写图片描述

5、定义Mysql外部操作接口:
import java.util.List;
import pers.xiaoma.mysql.User;

public interface Mysql_service_interface {
    //插入用户信息
        public void insert_user_information(User u);
        //更新用户信息
        public void update_user_information(User u);
        //删除用户信息
        public void delete_user_information(User u);

        //返回用户信息表
        public List<User> getusers();

        //查找用户
        public User getUser_Byusername(String user_name);

}
6、实现(5)的接口,向外发布对Mysql的相关操作:
import java.util.List;
import pers.xiaoma.mysql.User;
import pers.xiaoma.mysql.Userutils_inter;
import pers.xiaoma.mysql.Userutils;

public class Mysql_service implements Mysql_service_interface{

    //插入用户信息
    public void insert_user_information(User u){

        Userutils_inter user = new Userutils();

        user.insert_user_information(u);
    }

    //更新用户信息

    public void update_user_information(User u){

        Userutils_inter user =new Userutils();
        user.update_user_information(u);
    }

    //删除用户信息
    public void delete_user_information(User u){

        Userutils_inter user =new Userutils();
        user.delete_user_information(u);

    }

    //返回全体用户信息
    public List<User> getusers(){

        Userutils_inter user =new Userutils();
        List<User> users=user.getusers();

        return users;

    }

    //根据用户昵称查找用户
    public User getUser_Byusername(String user_name){

        Userutils_inter user =new Userutils();
        User u  =user.getUser_Byusername(user_name);
        return u;

    }

}

四、编写JSP+Servlet:

登录系统的Web层是用Jsp编写:
这里写图片描述

登陆时,只需填写昵称和密码,点击登录。当填写错误,或者没有填写,点击登录时重新跳转登录界面,并给出相应的提示。
这里写图片描述
这里写图片描述

新用户点击注册:
这里写图片描述

填写正确昵称、密码后,将进入我写的小说网站的首页:
这里写图片描述

好,我们来看代码:

在登录页面中,通form向servlet传递用户填写的昵称、密码。以及登录、注册事件。

这里写图片描述
注意箭头所指的Service字段,在servlet中通过捕捉service属性,来作出相应动作。

在Servlet中捕捉sercice属性:
String service      =   request.getParameter("service");
如果是登录界面作出请求,作出相应动作。
//处理登录需求
        else if("login".equals(service))
        {
            Mysql_service_interface mysql_users = new Mysql_service();
            //获取用户填写的用户昵称
            String user_name=request.getParameter("user_name");
            //System.out.println(user_name);
            if(user_name=="")
            {
                //System.out.println("空");

                String information="请首先登录";
                request.setAttribute("information", information);
                request.getRequestDispatcher("test/login.jsp").forward(request, response);

            }

            User user=mysql_users.getUser_Byusername(user_name);

            String user_password=user.get_user_password();
            System.out.println(user_password);

            if(user_password==null)
            {
                String information="密码错误,请重新登录。新用户请先注册在使用";

                //向登录界面传值,并跳转到登录页面
                request.setAttribute("information", information);
                request.getRequestDispatcher("test/login.jsp").forward(request, response);
            }
            //如果用户填写的登录密码正确,允许进入网站
            else if(user_password.equals(request.getParameter("user_password")))
            {
                //从Mongodb数据库中取出所有小说的名称,传送到connectnovel.jsp页面

                //新建Mongodb服务对象
                Mongodb_service_interface mongo= new Mongodb_service();
                List<String> list =mongo.get_all_novelname();
                request.setAttribute("all_novelname", list);
                request.getRequestDispatcher("test/connectnovel.jsp").forward(request, response);

                    }



        }
        //处理登录页面点击的注册需求
        else if("register".equals(service))
        {
            request.getRequestDispatcher("test/register.jsp").forward(request, response);
        }
        //处理注册需求
        else if("userRegister".equals(service))
        {
            //获取用户填写的信息
            String user_name=request.getParameter("user_name");
            String user_mailbox=request.getParameter("user_mailbox");
            String user_password=request.getParameter("user_password");

            //新建用户对象,并设置用户对象
            User user =new User();
            user.set_user_name(user_name);
            user.set_user_mailbox(user_mailbox);
            user.set_user_password(user_password);

            //将新注册的用户插入数据库
            Mysql_service_interface mysql =new Mysql_service();
            mysql.insert_user_information(user);

            //用户注册成功,跳转到登录页面
            request.getRequestDispatcher("test/login.jsp").forward(request, response);
        }

五、总结:

由于篇幅原因具体代码没有全部贴上,但相应的逻辑,和设计,我已经说的比较明白。其中还有很多不健全的地方,比如说界面就比较丑,没办法,以前没有接触过前端的东西,这次也是赶鸭子上架,欢迎批评指正!

  • 22
    点赞
  • 143
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值