Servlet 案例(模拟登陆功能)

一.新建一个数据库

Servlet 案例(模拟登陆功能)

在数据库中存入一个数据

Servlet 案例(模拟登陆功能)

 

二.编写一个简单的用户登陆的界面

Servlet 案例(模拟登陆功能)

源代码:

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2019/2/27
  Time: 14:29
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>登陆</title>
    <style type="text/css">
      *{
        padding: 0px;
        margin: 0px;
      }
      .text{
        width: 246px;
        height: 34px;
        border: none;
        margin-top: 5px;
      }
      #box{
        width: 400px;
        height: 285px;
        margin: 0px auto ;
        background-color: aliceblue;
        border: 1px solid #333;
        text-align: center;
        padding-top: 20px;
      }
    </style>
  </head>
  <body>
        <div id="box">
          <h1>Servlet案例</h1>
          <form action="/untitled/log_in_verification" method="post">
          <input type="text" name="user" class="text"/>
          <input type="text" name="password" class="text"/>
            <input type="submit" value="登陆" class="text"/>
          </form>
        </div>
  </body>
</html>

三.编写java代码,连接数据库(此处使用DBUtils),验证用户登陆。

      3.1 编写连接池封装类用于连接数据库

注意此处需要导入jar包,并且需要将c3p0-config.xml 配置文件,放在web项目的src目录下

https://pan.baidu.com/s/1eev43QR5TAFKi_ZRqIn_PQ   提取码:ebcw(此处是jar包和xml配置文件)

package servlet;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;

public class DataSourceUtils {

   private static DataSource dataSource = new ComboPooledDataSource();

   private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();

   // 直接可以获取一个连接池
   public static DataSource getDataSource() {
      return dataSource;
   }

   // 获取连接对象
   public static Connection getConnection() throws SQLException {

      Connection con = tl.get();
      if (con == null) {
         con = dataSource.getConnection();
         tl.set(con);
      }
      return con;
   }

   // 开启事务
   public static void startTransaction() throws SQLException {
      Connection con = getConnection();
      if (con != null) {
         con.setAutoCommit(false);
      }
   }

   // 事务回滚
   public static void rollback() throws SQLException {
      Connection con = getConnection();
      if (con != null) {
         con.rollback();
      }
   }

   // 提交并且 关闭资源及从ThreadLocall中释放
   public static void commitAndRelease() throws SQLException {
      Connection con = getConnection();
      if (con != null) {
         con.commit(); // 事务提交
         con.close();// 关闭资源
         tl.remove();// 从线程绑定中移除
      }
   }

   // 关闭资源方法
   public static void closeConnection() throws SQLException {
      Connection con = getConnection();
      if (con != null) {
         con.close();
      }
   }

   public static void closeStatement(Statement st) throws SQLException {
      if (st != null) {
         st.close();
      }
   }

   public static void closeResultSet(ResultSet rs) throws SQLException {
      if (rs != null) {
         rs.close();
      }
   }

}

3.2 编写JavaBean类用于存储从数据库获取到的信息

 

package servlet;

public class User {

    private String user;
    private String password;
    private String email;


    public String getUser() {
        return user;
    }

    public void setUser(String user) {
        this.user = user;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

3.3 编写log_in_verification类用于,获取用户信息,并在数据库中进行验证,同时将结果响应在浏览器。

 

package servlet;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class log_in_verification  extends HttpServlet {

    public void doGet(HttpServletRequest req, HttpServletResponse resp){
        this.doPost(req,resp);
    }
    public void doPost(HttpServletRequest req,HttpServletResponse resp){

        //获取用户提交的用户名和密码
        String name=req.getParameter("user");
        String password=req.getParameter("password");


        //从数据库中验证密码是否正确
        QueryRunner runner=new QueryRunner(DataSourceUtils.getDataSource());
        String sql="select * from user where username=? and password=?";
        User user=null;
        try{
            user=runner.query(sql,new BeanHandler<User>(User.class),name,password);
            if(user!=null){
                user.setUser(name);
                resp.getWriter().write("greet"+user.getUser());
            }else{
                resp.getWriter().write("login failure");
            }
        }catch (Exception e){
            e.printStackTrace();
        }



    }

}

四.展示效果

http://39.108.158.0:8080/mp4/123.mp4

目录

一.新建一个数据库

二.编写一个简单的用户登陆的界面

源代码:

三.编写java代码,连接数据库(此处使用DBUtils),验证用户登陆。

四.展示效果