JavaWeb(学习篇)——用Servlet(制作简单的用户登录)

Sevlet用户登录项目分析:
在这里插入图片描述

  1. 首先创建表:
CREATE TABLE User(
	id INT primary key,
	name VARCHAR(50),
	pwd VARCHAR(50)
);
  1. 其次创建ORM的关系映射
package com.it4.domain;


public class User {
	Integer id;
	String name;
	String pwd;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
}

  1. 再次创建一个静态页面
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<h3>用户登录</h3>

<form action="http://localhost:8080/Mypro17-Servlet/LoginServlet" method="get">
	<h5>用户名:</h5>
	<input type="text" placeholder="请输入用户名" name="username"><br/>
	<h5>密	码:</h5>
	<input type="text" placeholder="请输入密码" name="pwd"><br/>
			<!-- submit提交 -->
	<br/><input type="submit" value="登录">
</form>
</body>
</html>
  1. 最后在服务器里创建相应的操作
    1. 编写一个web.xml的文件

       <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                            http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"              
        version="4.0"
        metadata-complete="false">
        <absolute-ordering/>
         
        <welcome-file-list>
          <welcome-file>index.html</welcome-file>
          <welcome-file>index.htm</welcome-file>
          <welcome-file>index.jsp</welcome-file>
          <welcome-file>default.html</welcome-file>
          <welcome-file>default.htm</welcome-file>
          <welcome-file>default.jsp</welcome-file>
        </welcome-file-list>
      </web-app>
      
    2. 获取请求参数

      package com.it4.login;
      
      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;
      @WebServlet("/LoginServlet")
      public class LoginServlet extends HttpServlet {
      	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      		//1.获取请求参数
      			String name = request.getParameter("username");
      			String pwd = request.getParameter("pwd");
      			System.out.println("name"+name+" pwd"+pwd);
      
    3. 使用dbutils链接到数据库当中

      1. 导入三个jar包分别是:
        在这里插入图片描述

      2. 编写一个配置文件db.properties,用于与数据进行链接:

         url=jdbc:mysql://localhost:3306/servlet_db?serverTimezone=UTC
         username=root
         password=1234
         driverClassName=com.mysql.cj.jdbc.Driver
        
      3. 创建一个JDBCUitl类。
        这个类主要是:
        1.加载配置文件
        2.获取数据源
        3.链接数据库
        4.释放资源

      package com.it4.util;
      
      import java.io.FileInputStream;
      import java.sql.Connection;
      import java.sql.ResultSet;
      import java.sql.Statement;
      import java.util.Properties;
      
      import javax.sql.DataSource;
      
      import com.alibaba.druid.pool.DruidDataSourceFactory;
      
      
      
      public class JDBCUtil {	
      	//使用配置文件进行链接
      	public static  DataSource ds = null;
      	static {
      		try {
      			//1.加载配置文件
      			Properties p = new Properties();
      			//获取字节码的目录
      			String path = JDBCUtil.class.getClassLoader().getResource("db.properties").getPath();
      			System.out.println(path);
      			FileInputStream in = new FileInputStream(path);
      			p.load(in);
      			ds = DruidDataSourceFactory.createDataSource(p);
      		} catch (Exception e) {
      			e.printStackTrace();
      		}
      	}
      	//2.获取数据源
      	public static DataSource getDataSource() {
      		return ds;
      	}
      	public static Connection getConn() {
      		try {
      			//3.链接数据库
      			return ds.getConnection();
      		} catch (Exception e) {
      			e.printStackTrace();
      		}
      		return null;
      	}
      	public static void close(Connection conn,Statement st,ResultSet rs) {
      		//4.释放资源
      		if (rs !=null) {
      			try {
      				rs.close();
      			} catch (Exception e) {					
      				e.printStackTrace();
      			}
      		}
      		if (st!=null) {
      			try {
      				st.close();
      			} catch (Exception e) {
      				e.printStackTrace();
      			}
      		}
      		if (conn!=null) {
      			try {
      				conn.close();
      			} catch (Exception e) {
      				e.printStackTrace();
      			}
      		}
      	}
      	
      }
      
      1. 使用dbutils链接到数据库当中
      package com.it4.login;
      
      import java.io.IOException;
      import java.sql.SQLException;
      
      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 org.apache.commons.dbutils.QueryRunner;
      import org.apache.commons.dbutils.handlers.BeanHandler;
      
      import com.it4.domain.User;
      import com.it4.util.JDBCUtil;
      
      
      
      @WebServlet("/LoginServlet")
      public class LoginServlet extends HttpServlet {
      	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      		//1.获取请求参数
      			String name = request.getParameter("username");
      			String pwd = request.getParameter("pwd");
      			System.out.println("name"+name+" pwd"+pwd);
      		//2.使用dbutils链接到数据库当中
      			//获取数据源getDataSource				
      			QueryRunner qr = new QueryRunner(JDBCUtil.getDataSource());
      			String sql="select * from user where name=? and pwd=?"; 
      				//sql语句与结果集处理器
      			User user=null;
      			try {
      				user = qr.query(sql, new BeanHandler<User>(User.class),name,pwd);
      			} catch (SQLException e) {
      				e.printStackTrace();
      			}
      
      1. 检查用户名与密码是否正确以及登录成功与登录失败
      package com.it4.login;
      
      import java.io.IOException;
      import java.sql.SQLException;
      
      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 org.apache.commons.dbutils.QueryRunner;
      import org.apache.commons.dbutils.handlers.BeanHandler;
      
      import com.it4.domain.User;
      import com.it4.util.JDBCUtil;
      
      
      
      @WebServlet("/LoginServlet")
      public class LoginServlet extends HttpServlet {
      	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      		//1.获取请求参数
      			String name = request.getParameter("username");
      			String pwd = request.getParameter("pwd");
      			System.out.println("name"+name+" pwd"+pwd);
      		//2.使用dbutils链接到数据库当中
      			//获取数据源getDataSource				
      			QueryRunner qr = new QueryRunner(JDBCUtil.getDataSource());
      			String sql="select * from user where name=? and pwd=?"; 
      				//sql语句与结果集处理器
      			User user=null;
      			try {
      				user = qr.query(sql, new BeanHandler<User>(User.class),name,pwd);
      			} catch (SQLException e) {
      				// TODO Auto-generated catch block
      				e.printStackTrace();
      			}
      		//3.检查用户名与密码是否正确
      			if (user!=null) {
      		//4.登录成功,显示用户信息
      				response.getWriter().write("login success ="+ user.getName());
      			}else {
      		//5.登录失败给一个错误提示
      				response.getWriter().write("login fail");
      			}
      	}
      
      }
      
      

三个jar包的下载地址:
DbUtils-1.7.jar包:
https://blog.csdn.net/Falling_stars_/article/details/107774630
mysql-connector-java-8.0.20.jar包:
https://blog.csdn.net/Falling_stars_/article/details/107774702
druid-1.1.23.jar包:
https://blog.csdn.net/Falling_stars_/article/details/107774717

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值