文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java web实现简单注册功能

2024-04-02 19:55

关注

今天写了一个注册功能,没有用任何框架!发现不会写了,中间查了好几次百度。不过还是顺利的写完并且跑起来了。在这里记录一下。我认为有时候写这些代码还是对我们理解框架很有帮助的,因为框架也是按照这些,对基础进行封装后得到的。

首先是环境的搭建

1、环境的搭建:我用的jdk1.8 tomcat 7.0 eclipse neno 数据库用的是mysql。

2、创建一个动态的web工程(这个应该都会的,这里就不再截图说明了)

3、数据库的创建

我这里创了一个名为t_t_user 的表,里面的字段也很简单,就name password age 三个。

4、数据库创建好之后就开始写前端代码

前端写的很简单

<%@ 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 http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>首页</title>
</head>
<body>
 <p style="color:red;">${message}</p>

 <form action="${pageContext.request.contextPath }/login" method="post">
   姓名 <input  type="text" name="name"/><br>
    年龄 <input type="text" name="age"/><br>
    密码<input  type="password" name="password"/><br>
    <input type="submit" value="提交">
 </form>
</body>
</html>

5、前端代码写好后就可以写对应的,上传的请求的servlet,在这里我只判断了姓名不能为空,其他的就一样的写就好了。还有这里有个问题,就是我没有进行编码处理。在这里可能出现中文乱码的问题,可以直接在servlet中加入处理中文乱码的语句,或者是写个过滤器,这里我就不再赘述了。

package com.proven.controller;

import java.io.IOException;
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 com.proven.service.UserService;
import com.proven.service.impl.UserServiceImpl;


@WebServlet("/login")
public class login extends HttpServlet {
    private static final long serialVersionUID = 1L;
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       String name=request.getParameter("name");
       String password = request.getParameter("password");
       String ages = request.getParameter("age");
       int age = Integer.parseInt(ages);
       String message="";

       if(name.equals("")){
           message="用户名不能为空";
           request.setAttribute("message", message);
           request.getRequestDispatcher("/index.jsp").forward(request, response);
       }else{
           UserService userService = new UserServiceImpl();
           int info = userService.register(name,password,age);
           if(info==1){
               message="注册成功";
           }else if(info ==0){
               message="注册失败";
           }else if(info==-2){
               message="sql错误";

           }

           request.setAttribute("message", message);
           request.getRequestDispatcher("/index.jsp").forward(request, response);
       }

    }


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

}

6、service 层,处理逻辑,在我们写代码的时候,尽量的把逻辑处理写到service,最大的好处就是安全,毕竟写程序不只是实现功能那么简单。

接口:

package com.proven.service;

public interface UserService {

    int register(String name, String password, int age);

}

实现类:这里我忘记判断数据库中是否已经存在账号,判断的话很简单,就是通过账号去查数据库中是否有相同的数据,如果有了就返回给servlet:该账号已存在,如果没有的话就继续注册。

package com.proven.service.impl;

import com.proven.dao.UserDao;
import com.proven.dao.impl.UserDaoImpl;
import com.proven.model.User;
import com.proven.service.UserService;


public class UserServiceImpl implements UserService{

    @Override
    public int register(String name, String password, int age) {
        UserDao userDao = new UserDaoImpl();

        User user = new User();

        user.setName(name);
        user.setPassword(password);
        user.setAge(age);
        int info= userDao.register(user);

        return info;
    }

}

持久层:dao
接口:

package com.proven.dao;

import com.proven.model.User;

public interface UserDao {

    int register(User user);

    
    //int findUserByName(String username);

    
    //int register(User user);

    


}

实现类:

package com.proven.dao.impl;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import com.proven.dao.UserDao;
import com.proven.model.User;


public class UserDaoImpl implements UserDao {

    @Override
    public int register(User user) {
        PreparedStatement pstmt=null;
        Connection conn =null;
          try{   
                //加载MySql的驱动类   
                Class.forName("com.mysql.jdbc.Driver") ;   
                }catch(ClassNotFoundException e){   
                System.out.println("找不到驱动程序类 ,加载驱动失败!");   
                e.printStackTrace() ;   
                }   

          String url = "jdbc:mysql://localhost:3306/nokuangjia" ;    
             String username = "root" ;   
             String password = "" ; 

             String sql = "insert into t_t_user values(null,?,?,?)";
             try {
                 conn = DriverManager.getConnection(url,username,password);
                  pstmt = conn.prepareStatement(sql) ;  
                 pstmt.setString(1,user.getName() );
                 pstmt.setString(2, user.getPassword());
                 pstmt.setInt(3, user.getAge());
                 int info = pstmt.executeUpdate();
                 return info;
            } catch (SQLException e) {
                 System.out.println("数据库连接失败!");  
                e.printStackTrace();
                return -2;
            }finally {
                try {
                    pstmt.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                try {
                    conn.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

    }




}

在这里代码就全部写好。经过测试,运行良好!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯