栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JavaEnterprise原始企业开发servlet+jsp实现系统用户注册

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaEnterprise原始企业开发servlet+jsp实现系统用户注册

文章目录
  • 项目搭建
  • 导入lib依赖
    • 下载对应jar
    • 下载 项目完整 lib
    • 导入jar包
  • 项目分层
  • code-实践
    • 配置文件
    • 代码
      • pojo
      • dao
      • service
      • Servlet
      • utils
      • jsp
        • 登录
        • 注册用户
        • home
  • 效果
  • 问题
    • mysql驱动无效
        • home
  • 效果
  • 问题
    • mysql驱动无效

项目搭建

file->project

新建web目录

指定保存位置

项目初步搭建完成

导入lib依赖

创建完JavaEE 基础项目框架之后,还的把需要 依赖的jar包都添加到 web/WeB-InF /lib 目录里。

lib :(作用)

​ 存放需要的jar包 依赖的文件目录,就是这个目录里导入的是项目需要的jar包。

可以看到图中我的lib 目录下已经导入了jar 依赖

下载对应jar

​ Maven Central Repository Search 可以使用这个网站搜索 上面图片中的jar 名字进行下载

以 commons-beanutils 工具类演示如何搜索和下载jar包

打开上述的网站-在search 里 输入 commons-beanutils 得到如下图内容,然后回车 出现第二张图里的内容。

我下载的是第二个jar ,选择download 开始下载了

下载成功

剩下的jar 包重复这个过程即可下载完成。

下载 项目完整 lib

如果不想一个一个下载的,可以直接点击下面这个链接直接把此项目的lib 目录和里面的jar包全部下载下来。

https://download.csdn.net/download/kangshihang1998/85318173

导入jar包

经过上面的步骤,已经把对应的jar包下载下来了。下面让我们一起把jar包导入到项目中

新建lib目录(如果是直接下载的lib目录可以跳过这步,直接把lib目录复制到WEB-NF目录下即可)

在web/WeB-InF 目录下新建lib 子目录用于存放jar包

点击WEB-INF目录右击,选择Directory 如下图

因为我这已经创建过了,所以提示lib 目录已存在。如果没有存在lib目录可以直接点击ok就新建完了

新建完毕lib目录后可以把刚才下载的jar包都复制到这个目录下了,如上图我的是已经把jar 复制到了lib目录了。

添加依赖

完成以上步骤以后可以按照下面的步骤把依赖添加至项目中了

  1. 右击lib目录

  2. 选择弹出框里的 Add as Library

  3. 选择依赖级别

  4. 如下图所示 可以选择把依赖添加到整个项目里或者指定模块,添加到整个项目相当于全局依赖,添加到指定模块相当局部依赖。根据项目选择合适的依赖范围。

    1. global libray 全局
    2. project libray 项目
    3. module libray 模块

点击ok 完成依赖导入!

项目分层

code-实践 配置文件

druid.properties 数据库配置文件

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true 
username=root
password=123456

代码 pojo
package com.kang.pojo;


public class UserInfoPojo {
    private String userName;
    private String userPwd;
    private int age;
    private String sex;
    private String image;



    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getUserPwd() {
        return userPwd;
    }

    public void setUserPwd(String userPwd) {
        this.userPwd = userPwd;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
    @Override
    public String toString() {
        return "UserInfoPojo{" +
                "userName='" + userName + ''' +
                ", userPwd='" + userPwd + ''' +
                ", age=" + age +
                ", sex='" + sex + ''' +
                ", image='" + image + ''' +
                '}';
    }
}

dao
package com.kang.dao;

import com.kang.pojo.UserInfoPojo;
import com.kang.utils.Druidutils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;

import java.sql.SQLException;



public class UserInfoDao {


    
    public UserInfoPojo getUserInfo(String username,String userPwd){
        //显示指定用户名信息
        QueryRunner runner=new QueryRunner(Druidutils.getDataSource());
        UserInfoPojo query=null;
        try {
             query = runner.query("select * from user_info where userName=? and userPwd=?", new BeanHandler<>(UserInfoPojo.class), username,userPwd);
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return query;
    }

    
    public UserInfoPojo getUserInfo(String username){
        //显示指定用户名信息
        QueryRunner runner=new QueryRunner(Druidutils.getDataSource());
        UserInfoPojo query=null;
        try {
            query = runner.query("select * from user_info where userName=?", new BeanHandler<>(UserInfoPojo.class), username);
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return query;
    }
    
    public int InsertUserInfo(UserInfoPojo userInfoPojo){
        QueryRunner runner=new QueryRunner(Druidutils.getDataSource());
        int update=0;
        try {
             update = runner.update("insert into user_info values(?,?,?,?,?)", userInfoPojo.getUserName(),
                    userInfoPojo.getUserPwd(),
                    userInfoPojo.getAge(),
                    userInfoPojo.getSex(),
                    userInfoPojo.getImage());
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return update;
    }
}

service

接口

package com.kang.service;

import com.kang.pojo.UserInfoPojo;


public interface UserInfoService {

    
    UserInfoPojo getUserInfo(String username);

    
    UserInfoPojo getUserInfo(String username,String userPwd);
    
    int insertUserInfo(UserInfoPojo userInfoPojo);
}

实现类

package com.kang.service.impl;

import com.alibaba.druid.util.StringUtils;
import com.kang.dao.UserInfoDao;
import com.kang.pojo.UserInfoPojo;
import com.kang.service.UserInfoService;

import javax.annotation.Resource;


public class UserInfoImpl implements UserInfoService {


    private UserInfoDao userInfoDao;

    public UserInfoImpl(UserInfoDao userInfoDao) {
        this.userInfoDao = userInfoDao;
    }

    @Override
    public UserInfoPojo getUserInfo(String username) {
        if(StringUtils.isEmpty(username)){
            return null;
        }
        UserInfoPojo userInfo = userInfoDao.getUserInfo(username);
        return userInfo;
    }

    @Override
    public UserInfoPojo getUserInfo(String username,String userPwd) {
        if(StringUtils.isEmpty(username) &&StringUtils.isEmpty(userPwd) ){
            return null;
        }
        UserInfoPojo userInfo = userInfoDao.getUserInfo(username,userPwd);
        return userInfo;
    }

    @Override
    public int insertUserInfo(UserInfoPojo userInfoPojo) {
        return userInfoDao.InsertUserInfo(userInfoPojo);
    }
}

Servlet

注意:注册用户用到了文件上传的功能,所以使用了一个工具类,在新建这层的注册用户类的时候可以先添加底下的工具类。

注册用户

package com.kang.Servlet;

import com.kang.dao.UserInfoDao;
import com.kang.pojo.UserInfoPojo;
import com.kang.service.UserInfoService;
import com.kang.service.impl.UserInfoImpl;
import com.kang.utils.FileUploadUtils;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


@WebServlet("/AddUserInfoServlet")
public class AddUserInfoServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String uploadPath = getServletContext().getRealPath("upload");
        Map userMap = new HashMap<>();
        String contextPath = getServletContext().getContextPath();
        userMap= FileUploadUtils.fileUpload(request,response,uploadPath);
        int flag=0;
        try {
            //使用beanUtils 把map 转成 userInfoPojo 类型
            UserInfoPojo userInfoPojo=new UserInfoPojo();
            BeanUtils.populate(userInfoPojo,userMap);
            //持久化到数据库
            UserInfoDao userInfoDao=new UserInfoDao();
            UserInfoService userInfoService=new UserInfoImpl(userInfoDao);
            //查询是否已经被注册
            UserInfoPojo userInfo = userInfoService.getUserInfo(userInfoPojo.getUserName());
            if (userInfo!=null){
                 //跳转到添加用户页面
                response.sendRedirect(contextPath+"/addUserInfo.jsp");
            }else {
                flag = userInfoService.insertUserInfo(userInfoPojo);
                if (flag>0){
                    //跳转添加成功页面
                    response.sendRedirect(contextPath+"/login.jsp");
                }else {
                    //跳转到添加用户信息
                    response.sendRedirect(contextPath+"/addUserInfo.jsp");
                }
            }



        } catch (IllegalAccessException e) {
            e.printStackTrace();
            //跳转到添加用户信息
            response.sendRedirect(contextPath+"/addUserInfo.jsp");
        } catch (InvocationTargetException e) {
            e.printStackTrace();
            //跳转到添加用户信息
            response.sendRedirect(contextPath+"/addUserInfo.jsp");
        }

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

登录

package com.kang.Servlet;

import com.kang.dao.UserInfoDao;
import com.kang.pojo.UserInfoPojo;
import com.kang.service.UserInfoService;
import com.kang.service.impl.UserInfoImpl;
import org.apache.commons.beanutils.BeanUtils;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;


@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
           //获取用户登录账号密码
        Map parameterMap = request.getParameterMap();
        UserInfoPojo userInfoPojo=new UserInfoPojo();
        try {
            BeanUtils.populate(userInfoPojo,parameterMap);

            //查询用户是否存在
            UserInfoDao userInfoDao=new UserInfoDao();
            UserInfoService userInfoService=new UserInfoImpl(userInfoDao);
            UserInfoPojo userInfo = userInfoService.getUserInfo(userInfoPojo.getUserName(), userInfoPojo.getUserPwd());
            String contextPath = getServletContext().getContextPath();
            if (userInfo==null){
                //重定向到登录页面
                response.sendRedirect(contextPath+"/login.jsp");
            }else {
                //重定向到主页
                response.sendRedirect(contextPath+"/home.jsp");
            }


        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

utils

Druidutils数据库链接

package com.kang.utils;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.InputStream;
import java.util.Properties;


public class Druidutils{
    // 加载配置文件,初始链接池,使用静态代码块(整个程序只运行一次)
    private static DruidDataSource dataSource;
    static {
        // 加载配置文件 properties 类型配置文件
        Properties properties=new Properties();
        //加载 properties 文件的输入流
        InputStream resourceAsStream = Druidutils.class.getResourceAsStream("/druid.properties");
        try {
            //使用 properties 加载 德鲁伊配置文件
            properties.load(resourceAsStream);
            resourceAsStream.close();
            //1.2 初始化连接池
            dataSource=(DruidDataSource) DruidDataSourceFactory.createDataSource(properties);
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    
    public static DataSource getDataSource(){
        return dataSource;
    }
}

FileUploadUtils 文件上传工具类

package com.kang.utils;

import com.kang.dao.UserInfoDao;
import com.kang.pojo.UserInfoPojo;
import com.kang.service.UserInfoService;
import com.kang.service.impl.UserInfoImpl;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class FileUploadUtils {

    
    public static Map fileUpload(HttpServletRequest request, HttpServletResponse response,String path){
        //创建一个“硬盘文件条目工厂”对象
        DiskFileItemFactory factory = new DiskFileItemFactory();
        //设置阈值,设置JVM一次能够处理的文件大小(默认吞吐量是10KB)
        factory.setSizeThreshold(DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD);
        //设置临时文件的存储位置(文件大小大于吞吐量的话就必须设置这个值,比如文件大小:1GB ,一次吞吐量:1MB)
        File file = new File(path);
        if(!file.getParentFile().exists()){
            file.getParentFile().mkdirs();
        }
        factory.setRepository(file);
        //创建核心对象
        ServletFileUpload fileUpload = new ServletFileUpload(factory);
        //设置最大可支持的文件大小(10MB)
        fileUpload.setFileSizeMax(1024*1024*10);
        //设置转换时使用的字符集
        fileUpload.setHeaderEncoding("UTF-8");
        //存储用户表单提交的内容
        Map userMap = new HashMap<>();
        if(ServletFileUpload.isMultipartContent(request)){
            try {
                List fileItems = fileUpload.parseRequest(request);
                for ( FileItem fileItem : fileItems) {
                    if(fileItem.isFormField()){//判断该FileItem为一个普通的form元素
                        //获取字段名
                        String fieldName = fileItem.getFieldName();
                        //获取字段值,并解决乱码
                        String fieldValue = fileItem.getString("UTF-8");
                        userMap.put(fieldName,fieldValue);

                    }else{
                        //判断该FileItem为一个文件
                        //获取字段名
                        String fieldName = fileItem.getFieldName();
                        //获取文件名
                        String fileName = fileItem.getName();
                        //用户上传的文件名
                        String fileUserName=System.currentTimeMillis()+fileName;
                        File file1 = new File(path+fileUserName);
                        fileItem.write(file1);
                        userMap.put(fieldName,fileUserName);
                    }
                }
            } catch (FileUploadException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return userMap;
    }
}

jsp 登录
<%--
  Created by IntelliJ IDEA.
  User: 康世行
  Date: 2022/5/7
  Time: 9:37
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    登录


  
账号:
密码:
注册用户
<%--
  Created by IntelliJ IDEA.
  User: 康世行
  Date: 2022/5/6
  Time: 16:21
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    添加用户信息


    请添加用户信息
    
用户名:
用户名:
年龄:
男: 女:
头像:
home
<%--
  Created by IntelliJ IDEA.
  User: 康世行
  Date: 2022/5/8
  Time: 9:47
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    主页面


  登录成功!



效果

注册用户

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eIJSDZfr-1651993292384)(…/typora-user-images/image-20220508113020847.png)]

用户注册成功,数据库会多出一条你刚才添加的账号

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JQBuH71I-1651993292385)(…/typora-user-images/image-20220508113111166.png)]

使用刚才注册的用户登录检验是否,添加成功!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-af0W1Ig6-1651993292386)(…/typora-user-images/image-20220508145915344.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oHdYEadK-1651993292387)(…/typora-user-images/image-20220508113055735.png)]

问题 mysql驱动无效

因为导错了依赖,所以导致无法找到mysql 驱动

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3DuouxzZ-1651993292388)(…/typora-user-images/image-20220508111622766.png)]

解决方案

下载截图里的对应版本的jar包

type=“file” name=“image”>


``` home
<%--
  Created by IntelliJ IDEA.
  User: 康世行
  Date: 2022/5/8
  Time: 9:47
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    主页面


  登录成功!



效果

注册用户

用户注册成功,数据库会多出一条你刚才添加的账号

使用刚才注册的用户登录检验是否,添加成功!

问题 mysql驱动无效

因为导错了依赖,所以导致无法找到mysql 驱动

解决方案

下载截图里的对应版本的jar包

** 感谢阅读 如果感兴趣~可以给小编个一键三连 多谢
**

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/872526.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号