Javaweb登录注册界面入门教程

这篇文章纯属抄袭,非常感谢博主的详细解说,是为了修改一些错误写的
https://blog.csdn.net/woniuxyy/article/details/97623596
前言:
博主是一个自学了点Java,只是连那本《Java从入门到精通》基础知识都没看完的人,由于实习的需要,需要用JavaEE(J2E)开发一个简单的登录注册界面,通过强大的搜索引擎和无数的推盘重来,博主终于实现了一个基本的登录注册界面,参考了大佬们的博客:JavaWeb入门登录注册系统,可以初步交差了,写这篇博客是为了给自己这段时间的工作内容做一个总结吧,也方便自己以后回顾起来方便,当然如果能帮助和我一样刚入门的新手也是一件乐事,如果碰巧和Java大佬们偶遇,还请多多海涵多多指教,毕竟我是一名java小菜鸟。

开发前提:
环境搭建:MySQL-8.0.16+MySQL-workbench-8.0+Eclipse JavaEE+Tomcat-7.0.94
Javaweb登录注册界面入门教程_第1张图片
Javaweb登录注册界面入门教程_第2张图片
Javaweb登录注册界面入门教程_第3张图片
Javaweb登录注册界面入门教程_第4张图片
Javaweb登录注册界面入门教程_第5张图片
Javaweb登录注册界面入门教程_第6张图片
Javaweb登录注册界面入门教程_第7张图片

Javaweb登录注册界面入门教程_第8张图片
Javaweb登录注册界面入门教程_第9张图片
Javaweb登录注册界面入门教程_第10张图片
Javaweb登录注册界面入门教程_第11张图片
Javaweb登录注册界面入门教程_第12张图片
Javaweb登录注册界面入门教程_第13张图片
Javaweb登录注册界面入门教程_第14张图片
Javaweb登录注册界面入门教程_第15张图片
Javaweb登录注册界面入门教程_第16张图片
Javaweb登录注册界面入门教程_第17张图片
Javaweb登录注册界面入门教程_第18张图片
Javaweb登录注册界面入门教程_第19张图片
Javaweb登录注册界面入门教程_第20张图片
Javaweb登录注册界面入门教程_第21张图片
从上图可看出数据库已经可以正常使用了,说明数据库已经成功创建了。到这里就已经完成了一部分内容了。
数据库创建好后,接下来利用Eclipse for JavaEE 建立一个Javaweb项目,我发现了一个大佬写的特别详细的一个教程,JavaEE开发测试,我从头照着博客的流程走了一遍,基本熟悉了如何使用Eclipse for JavaEE和开发登录界面的流程。下面开始具体介绍我的操作步骤。

1.打开Eclipse for JavaEE软件,添加Tomcat。
Javaweb登录注册界面入门教程_第22张图片
Javaweb登录注册界面入门教程_第23张图片
Javaweb登录注册界面入门教程_第24张图片
Javaweb登录注册界面入门教程_第25张图片
Javaweb登录注册界面入门教程_第26张图片
Javaweb登录注册界面入门教程_第27张图片
可以看到Eclipse界面左侧出现Servers。
Javaweb登录注册界面入门教程_第28张图片
2.建立一个Dynamic Web Project。

项目主要采用三层MVC思想,即M(Model)、V(view)、C(Controller),全称是模型视图控制器
Javaweb登录注册界面入门教程_第29张图片
Javaweb登录注册界面入门教程_第30张图片
Javaweb登录注册界面入门教程_第31张图片
Javaweb登录注册界面入门教程_第32张图片
Javaweb登录注册界面入门教程_第33张图片
项目主要使用Java Resources里的src和WebContent文件夹,其中 src里存放用于登录注册的java、javabean和Servlet代码;而WebContent里存放一些前端界面代码,比如登录注册界面,常用.html、.jsp格式,另外这个文件夹下可以放登陆注册界面的背景图片,后面还会提到。

3.建立DbUtil.java文件,用于Java连接MySQL。

在src文件夹上点击鼠标右键,New—>Class
Javaweb登录注册界面入门教程_第34张图片
Javaweb登录注册界面入门教程_第35张图片
Javaweb登录注册界面入门教程_第36张图片
具体代码如下:

package model;
 
import java.sql.Connection;
import java.sql.DriverManager;
 
public class DbUtil {
    
    /**
     *
     * @DbUtil类的作用 jdbc 的一些简单配置
     * dbUrl
     * dbusername
     * dbpassword
     * jdbcName
     */
 
    private String dbUrl="jdbc:mysql://localhost:3306/mydatabase?serverTimezone=UTC";
 
 
    private String dbUsername="root";
    private String dbPassword="111111";  /**你自己数据库的密码**/
 
 
 
 
    private String jdbcName="com.mysql.cj.jdbc.Driver"; /** 我用com.mysql.jdbc.Driver时出错,百度解决办法是:com.mysql.cj.jdbc.Driver **/
    
    /**
     * 获取数据库连接
     * @return
     * @throws Exception
     */
    public Connection getCon() throws Exception{
        Class.forName(jdbcName);
        Connection con=DriverManager.getConnection(dbUrl,dbUsername,dbPassword);
        return con;
    }
    
    /**
     * 关闭数据库连接
     * @param con
     * @throws Exception
     */
    public void closeCon(Connection con) throws Exception{
        if(con!=null){
            con.close();
        }
    }
    
    /**
     * 建立一个main方法测试是否可以连接数据库成功!
     */
    
    public static void main(String[] args) {
        DbUtil dbUtil=new DbUtil();
        try {
            dbUtil.getCon();
            System.out.println("数据库连接成功");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

注意!!!在使用这个文件之前,一定要添加JDBC驱动,将.jar包导入项目,将准备好的.jar驱动包复制到 WebContent---->WEB-INF里。
Javaweb登录注册界面入门教程_第37张图片
在.jar文件上,鼠标右键点击,进行如下操作:
Javaweb登录注册界面入门教程_第38张图片
4.创建用户类user,用于从数据库中读出用户名和密码,同时也可以从前端界面中获得用户名和密码。
Javaweb登录注册界面入门教程_第39张图片
具体代码如下:

package model;
 
public class User {
 
	 private String usersname;
	 private String password;
	 
	 public User() {}
	 
	 public User(String usersname, String password) {
		 this.usersname=usersname;
		 this.password=password;
		 
	 }
	 
	 public String getUsersname() {
		 return usersname;
	 }
	 public void setUsersname(String usersname) {
		 this.usersname = usersname;
	 }
	 public String getPassword() {
		 return password;
	 }
	 public void setPassword(String password) {
		 this.password = password;
	 }
}
 

5.建立DAO类,增加数据库增加查询用户的功能。
Javaweb登录注册界面入门教程_第40张图片
具体代码如下:

package model;
 
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
 
 
 
public class DAO {
    /**
     * login(Connection con,User user) 登录验证
     * (Connection con,User user)注册功能
  
     */
	public User login(Connection con,User user) throws Exception{
        User resultUser=null;
        String sql="select * from users where usersname=? and password=?";
        PreparedStatement pstmt=con.prepareStatement(sql);
        pstmt.setString(1, user.getUsersname());
        pstmt.setString(2, user.getPassword());
        ResultSet rs=pstmt.executeQuery();
        if(rs.next()){
            resultUser=new User();
            resultUser.setUsersname(rs.getString("usersname"));
            resultUser.setPassword(rs.getString("password"));
        }
        return resultUser;
    }
    
    //注册功能
	public boolean regist(Connection con,User user) throws Exception{
        boolean flag=false;
        PreparedStatement pstmt = null;
        String sql="INSERT INTO users(usersname,password)VALUES(?,?)";
        pstmt = con.prepareStatement(sql);
        pstmt.setString(1, user.getUsersname());
        pstmt.setString(2, user.getPassword());
        //System.out.printf(user.getUsersname(),user.getPassword());
        if (pstmt.executeUpdate() > 0) {
            flag = true;
        }
        return flag;
    }
 
}

6.分别建立用于登录(Login)和注册(Regist)的Servlet文件。

鼠标右键点击src文件夹,然后进行如下操作:
Javaweb登录注册界面入门教程_第41张图片
Javaweb登录注册界面入门教程_第42张图片
Javaweb登录注册界面入门教程_第43张图片
Javaweb登录注册界面入门教程_第44张图片
Javaweb登录注册界面入门教程_第45张图片
具体LoginServlet代码如下

package controller;
 
import java.io.IOException;
import java.sql.Connection;
 
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 model.DAO;
import model.DbUtil;
import model.User;
 
@WebServlet("/Login")
public class LoginServlet extends HttpServlet{
    /**
	 * 
	 */

	@Override
    protected void doGet(HttpServletRequest req, 
    		HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }
 
    @Override
    protected void doPost(HttpServletRequest req, 
    		HttpServletResponse resp) throws ServletException, IOException {
    
    
        /**
         * 接收前台传来的值 账号和密码
         */
        String usersname=req.getParameter("usersname");
        
        String password=req.getParameter("password");
        
        DbUtil db= new DbUtil();
        User user=new User(usersname,password);
        DAO dao=new DAO();
        try {
            //数据库连接
            Connection con=db.getCon();
            
            if(dao.login(con, user)!=null) {
                resp.sendRedirect("success.jsp");
            }else {
                resp.sendRedirect("false.jsp");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

RegistServlet同理,具体代码如下:

package controller;
 
import java.io.IOException;
import java.sql.Connection;
 

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 model.DAO;
import model.DbUtil;
import model.User;
@WebServlet("/Regist")
public class RegistServlet extends HttpServlet{

	@Override
    protected void doGet(HttpServletRequest req,
    		HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }
 
    @Override
    protected void doPost(HttpServletRequest req,
    		HttpServletResponse resp) throws ServletException, IOException {
    
    
        /**
         * 接收前台传来的值 账号和密码
         */
    	
    	//获取注册用户名
        String usersname=req.getParameter("usersname");
        //获取注册用户密码
        String password=req.getParameter("password");
        
        DbUtil db= new DbUtil();
        User user=new User(usersname,password);
        DAO dao=new DAO();
        try {
            //数据库链接
            Connection con=db.getCon();
            
            if(dao.regist(con,user)) {
                resp.sendRedirect("login.jsp");
            }else {
                resp.sendRedirect("regist.jsp");
       
            }
            
            
        } catch (Exception e) {
            e.printStackTrace();
        }
    
    }
}

--------------------------------------------------------------------至此,后台代码弄好了。--------------------------------------------------------------------

接下来编写前台html代码,主要包括四部分:index.jsp(主页面)、login.jsp(登录界面)、regist(注册界面)、success.jsp(登录成功界面)。

7.编写前台界面:.jsp界面

在WebContent鼠标右击,进行如下操作:
Javaweb登录注册界面入门教程_第46张图片
index.jsp具体代码如下:

<%@ 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">
        <link rel="stylesheet" type="text/css" href="./css/index.css" />
        <title>欢迎来到我的网站</title>
        <style type="text/css" media="screen">
                .center{
                        position:absolute;
                        width: 200px;
                        height: 120px;
                        left: 50%;
                        top: 50%;
                        margin: -60px 0px 0px -60px;
                       
                }
        </style>
    </head>
    
      <center>
    <body 
    	style="background:url(images/index.jpg);
        background-size:cover;">
  <div class="center">
    <h3 style="color:red">这是首页,欢迎光临!</h3>
 
        <tr>
            <a href="login.jsp"><li>用户登录</li></a>
            <a href="regist.jsp" class="right40"><li>新用户注册</li></a>
        </tr>
  </div>
    </body>
     </center>
</html>

其余几个.jsp文件具体代码分别如下所示:
login.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>登录界面</title>
 <style type="text/css" media="screen">
                .center{
                        position:absolute;
                        width: 250px;
                        height: 120px;
                        left: 50%;
                        top: 50%;
                        margin: -100px 0px 0px -100px;
                        
                }
        </style>
</head>
<body style="background:url(images/back.png);
                 background-size:cover;">
                  <div class="center">
 
<center>
<form action="/JavaEEDemo/Login" method="post">
<h3>欢迎登录!</h3>
账号:<input name="usersname" type="text" style="width:150px"><br>
密码:<input name="password" type="password" style="width:150px"><br>
<input type="submit" value="登录" >
<input type="reset" value="重置">
</form>
 
</center>
 
</body>
</html>

success.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>登录成功界面</title>
 
</head>
<body style="background:url(images/house.jpg);
                 background-size:cover;">
                 
 
 
 
登录成功,欢迎您
 
 
 
 
</body>
</html>

regist.jsp

<%@ 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">
        <link rel="stylesheet" type="text/css" href="../css/style.css" />
        <title>注册界面</title>
        <style type="text/css" media="screen">
                .center{
                        position:absolute;
                        width: 250px;
                        height: 120px;
                        left: 50%;
                        top: 50%;
                        margin: -100px 0px 0px -100px;
                        
                }
        </style>
</head>
<body style="background:url(images/background.png);
                 background-size:cover;">
 <div class="center">
<center>
 <h3 style="color:red">新用户注册!</h3>
        <form action="/JavaEEDemo/Regist" method="post">
     <table >
                <tr>
                    <td class="alignRight">
                                                                   账号: 
                    </td>
                    <td>
                        <input type="text" name="usersname" style="width:150px;height:20px"/>
                    </td>
                </tr>
                <tr>
                    <td class="alignRight">
                                                                    密码: 
                    </td>
                    <td>
                        <input type="password" name="password" style="width:150px;height:20px"/>
                    </td>
                </tr>
                             
            </table>
<input type="submit" value="提交" class="submit">
<input type="reset" value="重置" class="reset">
</form>
</center>
</div>
</body>
</html>

修改WebContent–>WEB-INF–>lib文件夹下的web.xml。如下:

默认情况下是这样的:
Javaweb登录注册界面入门教程_第47张图片
修改之后是这样的:
Javaweb登录注册界面入门教程_第48张图片
如果你想给你的登录注册添加好看的背景图片,在WebContent文件夹下建立一个文件夹存放图片。
Javaweb登录注册界面入门教程_第49张图片
dengdengdengdeng~

至此,登录注册项目的所有工作都完成了。

但是还有一个会出错的地方,当你运行整个项目的时候,会出现下图的错误:
Javaweb登录注册界面入门教程_第50张图片
下面是解决办法:

1.在Server上鼠标右击,点击stop:
Javaweb登录注册界面入门教程_第51张图片
2.点击Add and Remove
Javaweb登录注册界面入门教程_第52张图片
Javaweb登录注册界面入门教程_第53张图片
3.点击clean
Javaweb登录注册界面入门教程_第54张图片
4.点击open
Javaweb登录注册界面入门教程_第55张图片
默认是下面这样的:
Javaweb登录注册界面入门教程_第56张图片
改成下面这样的:
Javaweb登录注册界面入门教程_第57张图片
Ctrl+S保存。

再次运行整个项目。这次就可以成功了!!!
Javaweb登录注册界面入门教程_第58张图片

Javaweb登录注册界面入门教程_第59张图片
Javaweb登录注册界面入门教程_第60张图片
Javaweb登录注册界面入门教程_第61张图片
总结
1.各种必要软件的下载安装、环境配置是前提;

2.数据库数据表的创建;

3.JavaWeb项目的开发:理解MVC思想,自信编写代码,即使用别人的代码也要注意路径,字母大小写是否一致,要注意修改不一样的地方,一旦忽略一个小地方,可能就会产生一个需要你找好长时间的bug;

4.项目没有运行成功,有bug(404错误、500错误)也不要灰心丧气,学会借助强大的搜索引擎,问百度,努力自己解决问题,主要还是要耐心,不要着急。

你可能感兴趣的:(小实践)