网页用户登录v1.0

  • 项目简介

1)在MySQL数据库中创建一个member数据表,添加三个字段id,username,password,并录入几条数据

2)定义一个login.html,里面定义两个请求字段username,password,发送请求到LoginServlet,创建一个LoginServlet类并继承HttpServlet,并重写doPost方法,在其中获取请求的username,password

3)利用JDBC查询有没有页面输入的username与password的记录,若有在网页打印Hello: XXX,若没有在网页打印Sorry: XXX,其中XXX为用户输入的用户名

  • 创建数据库并插入记录

#创建数据库
DROP DATABASE IF EXISTS myWebProject;
CREATE DATABASE myWebProject;
#使用数据库
USE myWebProject;
#创建会员表
CREATE TABLE member(
	id INT PRIMARY KEY AUTO_INCREMENT,
	username VARCHAR(20) NOT NULL UNIQUE,
	`password` VARCHAR(20) NOT NULL
);
#插入数据
INSERT INTO member(username,`password`) VALUES('jack','jack@123');
INSERT INTO member(username,`password`) VALUES('tom','rom@123');
INSERT INTO member(username,`password`) VALUES('json','json@123');
#查询
SELECT * FROM member;
  • 创建JavaWeb项目并在WebContent目录下新建login.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
	<form action="LoginServlet" method="post">
		用户名:<input type="text" name="username"/>
		密码:<input type="password" name="password"/>
		<input type="submit" value="提交"/>
	</form>
</body>
</html>
  • 创建LoginServlet类并继承HttpServlet

在/src目录下新建一个包"com.njupt.javaweb",创建LoginServlet类

package com.njupt.javaweb;

import java.io.IOException;

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

public class LoginServlet extends HttpServlet {
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println("请求。。。。。");
	}	
}

在web.xml中进行映射

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	id="WebApp_ID" version="3.0">
	<servlet>
		<servlet-name>LoginServlet</servlet-name>
		<servlet-class>com.njupt.javaweb.LoginServlet</servlet-class>
		<load-on-startup>2</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>LoginServlet</servlet-name>
		<url-pattern>/LoginServlet</url-pattern>
	</servlet-mapping>
</web-app>

此时我们开启tomcat服务器,运行我们的项目,控制台会打印 “请求。。。。。”,这表示连接建立

  • 解析用户输入的用户名与密码

		//解析用户输入的用户名与密码
		String httpUserName = req.getParameter("username");
		String httpPassWord = req.getParameter("password");
		System.out.println("httpUserName=" + httpUserName + " , httpPassWord="+httpPassWord);
  • 利用JDBC查询数据库

		//1准备连接数据库的基本信息
		String driverClass = "com.mysql.jdbc.Driver";
		String jdbcUrl = "jdbc:mysql://localhost:3306/myWebProject";
		String mysqlUser="root";
		String mysqlPassword = "root";
		//2加载数据库驱动程序
		try {
			Class.forName(driverClass);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		//3通过DriverManager的getConnection()方法获取数据库连接
		Connection conn=null;
		PreparedStatement preparedStatement = null;
		ResultSet resultSet=null;
		int memberCount=0;
		PrintWriter out=resp.getWriter();
		String sql="SELECT COUNT(id) FROM member WHERE username = ? AND password = ?";
		try {
			conn = DriverManager.getConnection(jdbcUrl, mysqlUser, mysqlPassword);
			preparedStatement=conn.prepareStatement(sql);
			preparedStatement.setString(1, httpUserName);
			preparedStatement.setString(2, httpPassWord);
			resultSet=preparedStatement.executeQuery();
			if(resultSet.next()) {
				memberCount = resultSet.getInt(1);
				if( memberCount > 0) {
					out.print("Hello: " + httpUserName);
				}else {
					out.print("sorry: " + httpUserName);
				}
			}		
			System.out.println("memberCount=" + memberCount);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			if(resultSet!=null) {
				try {
					resultSet.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if(preparedStatement!=null) {
				try {
					preparedStatement.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if(conn!=null) {
				try {
					conn.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}

如果顺利项目就能成功运行出结果

附上LoginServlet.java的代码

package com.njupt.javaweb;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

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

public class LoginServlet extends HttpServlet {
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//super.doPost(req, resp);
		//解析用户输入的用户名与密码
		String httpUserName = req.getParameter("username");
		String httpPassWord = req.getParameter("password");
		System.out.println("httpUserName=" + httpUserName + " , httpPassWord="+httpPassWord);
		//连接数据库并查询有没有该用户以及密码是否正确
		//1准备连接数据库的基本信息
		String driverClass = "com.mysql.jdbc.Driver";
		String jdbcUrl = "jdbc:mysql://localhost:3306/myWebProject";
		String mysqlUser="root";
		String mysqlPassword = "root";
		//2加载数据库驱动程序
		try {
			Class.forName(driverClass);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		//3通过DriverManager的getConnection()方法获取数据库连接
		Connection conn=null;
		PreparedStatement preparedStatement = null;
		ResultSet resultSet=null;
		int memberCount=0;
		PrintWriter out=resp.getWriter();
		String sql="SELECT COUNT(id) FROM member WHERE username = ? AND password = ?";
		try {
			conn = DriverManager.getConnection(jdbcUrl, mysqlUser, mysqlPassword);
			preparedStatement=conn.prepareStatement(sql);
			preparedStatement.setString(1, httpUserName);
			preparedStatement.setString(2, httpPassWord);
			resultSet=preparedStatement.executeQuery();
			if(resultSet.next()) {
				memberCount = resultSet.getInt(1);
				if( memberCount > 0) {
					out.print("Hello: " + httpUserName);
				}else {
					out.print("sorry: " + httpUserName);
				}
			}		
			System.out.println("memberCount=" + memberCount);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			if(resultSet!=null) {
				try {
					resultSet.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if(preparedStatement!=null) {
				try {
					preparedStatement.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if(conn!=null) {
				try {
					conn.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		System.out.println(conn);
		
		
	}
}

上述代码有超级无敌多的不足,改进见V2.0

猜你喜欢

转载自blog.csdn.net/qq_23937341/article/details/81406757