考古Servlet+JDBC实现简约的登录注册界面

简介: 考古Servlet+JDBC实现简约的登录注册界面

效果展示

登录

注册

登陆成功

查询登陆成功

注册成功

Servlet接口

接口包括五个方法

  • void init(ServletConfig config)
  • ServletConfig getServletConfig()
  • void service(ServletRequest request, ServletResponse response)
  • String getServletInfo()
  • void destroy()
GenericServlet抽象类

实现Servlet、ServletConfig、Serializable接口,需重写service方法。

HttpServlet类

继承GenericServlet基础上的扩展,子类必须重写一个方法。

一般只需重写doGet和doPost方法。

  • doGet
  • doPost
  • doPut
  • doDelete

Servlet创建方式

实现Servlet接口

直接继承原生的Servlet,较为麻烦

package com.yma16;
import javax.servlet.*;
import java.io.IOException;
public class MyServlet implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
    }
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("测试1");
    }
    @Override
    public String getServletInfo() {
        return null;
    }
    @Override
    public void destroy() {
    }
}
继承HttpServlet

大部分开发人员推荐的创建方式,重写doGet和doPost方法

@WebServlet("/hello")//value urlpattern
public class HelloServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        response.getWriter().print("测试!");
    }
    protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException
    {
        doGet( request,response);
    }
}

实现登录注册

功能逻辑

传统的分为三层

  • Entity(写数据库实体类)
  • Dao(数据库表的增删改查)
  • Service(调用Dao实现登陆注册)

细化的话还可以多一层requestmaping

cookie传递参数给前端界面

QreryRunner类的方法实现增删改查

query(connection conn,String sql,Object[] params,ResultSetHandler rsh)

执行查询




update(connection conn,String sql,Object[] params,ResultSetHandler rsh)

执行插入、更新、删除



BeanHandler

将结果的第一行数据封装到对应的JavaBean实例中

配置mysql连接
package com.yma16.batabase;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import org.apache.commons.dbutils.DbUtils;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class Dbutils {
    private static DruidDataSource ds;
    private static final ThreadLocal<Connection> THREAD_LOCAL=new ThreadLocal<>();
    static{
        Properties properties=new Properties();
        InputStream inputStream= DbUtils.class.getResourceAsStream("/mysqldatabase.properties");//mysql连接
        try{
            properties.load(inputStream);
            ds=(DruidDataSource) DruidDataSourceFactory.createDataSource(properties);
        }catch (IOException e)
        {
            e.printStackTrace();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    public static Connection getConnection(){
        Connection connection=THREAD_LOCAL.get();
        try{
            if(connection==null)
            {
                connection=ds.getConnection();
                THREAD_LOCAL.set(connection);
            }
        }catch (SQLException e)
        {
            e.printStackTrace();
        }
        return connection;
    }
    public static void begin(){
        Connection connection=null;
        try{
            connection=getConnection();
            connection.setAutoCommit(true);
        }catch (SQLException e){
            e.printStackTrace();
        }
    }
    public static void commit(){
        Connection connection=null;
        try{
            connection=getConnection();
            connection.commit();
        }catch (SQLException e)
        {
            e.printStackTrace();
        }
        finally {
            closeAll(connection,null,null);
        }
    }
    public static void rollback()
    {
        Connection connection=null;
        try
        {
            connection=getConnection();
            connection.rollback();//回滚
        }catch (SQLException e)
        {
            e.printStackTrace();
        }finally {
            closeAll(connection,null,null);
        }
    }
    public static void closeAll(Connection connection, Statement statement, ResultSet resultset)
    {
        try{
            if(resultset!=null){
                resultset.close();
            }
            if(statement!=null)
            {
                statement.close();
            }
            if(connection!=null)
            {
                connection.close();
                THREAD_LOCAL.remove();
            }
        }catch (SQLException e)
        {
            e.printStackTrace();
        }
    }
}
Entity

实体对应数据库表user

package com.yma16.entity;
public class User {
    private String username,password;//对应数据库user
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                "password='" + password + '\'' +
                '}';
    }
}
Dao

数据增删改查接口

package com.yma16.dao;
import com.yma16.entity.User;
import java.util.List;
public interface UserDao {//功能接口
    public User insert(String username,String password);//添加数据
    public User select(String username);//查询
    public int delete(String username);//删除数据
    public int update(User user);//
    public List<User> selectAll();//查找
}

接口实现类

package com.yma16.dao;
import com.yma16.batabase.Dbutils;
import com.yma16.entity.User;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import java.sql.SQLException;
import java.util.List;
public class UserDaoImpl implements UserDao{//接口实现类
    private QueryRunner queryRunner=new QueryRunner();
    @Override
    public User insert(String username,String password) {
        System.out.println("sql插入数据");
        try{
//            String sql="select username,password from user where username=? and password=?;";
            String insertsql="insert into user values(?,?)";
            String selectsql="select username,password from user where username=? and password=?";
            queryRunner.update(Dbutils.getConnection(),insertsql,username,password);//插入语句实现
            System.out.println("loading 插入数据");
            User user=queryRunner.query(Dbutils.getConnection(),selectsql,new BeanHandler<User>(User.class),username,password);//查询是否存在
            return user;//user
        }catch (SQLException e)
        {
            System.out.println("error");
            e.printStackTrace();
        }
        return null;
    }
    @Override
    public User select(String username) {
        System.out.println("sql根据username查询");
        try{
            String sql="select username,password from user where username=?";
            User user=queryRunner.query(Dbutils.getConnection(),sql,new BeanHandler<User>(User.class),username);
            return user;//user
        }catch (SQLException e)
        {
            System.out.println("error");
            e.printStackTrace();
        }
        return null;
    }
    @Override
    public int delete(String username) {
        System.out.println("sql根据username删除");
        try{
            User user=queryRunner.query(Dbutils.getConnection(),"delete from user where username=?;",new BeanHandler<User>(User.class),username);
            return 1;//删除成功
        }catch (SQLException e)
        {
            e.printStackTrace();
        }
        return 0;
    }
    @Override
    public int update(User user) {
//      更新数据
        return 0;
    }
    @Override
    public List<User> selectAll() {
        try{
            List<User> users=queryRunner.query(Dbutils.getConnection(),"select * from user",new BeanListHandler<User>(User.class));
            return users;
        }catch (SQLException e)
        {
            e.printStackTrace();
        }
        return null;
    }
}
Service

登陆注册接口

package com.yma16.service;
import com.yma16.entity.User;
import java.util.List;
public interface UserService {
    public User register(String name,String password);//注册
    public User login(String name, String password);//登陆
    public List<User> showAllAdmin();//查询
}

接口实现

package com.yma16.service;
import com.yma16.batabase.Dbutils;
import com.yma16.dao.UserDao;
import com.yma16.dao.UserDaoImpl;
import com.yma16.entity.User;
import java.util.List;
public class UserServiceImpl implements UserService{//实现service接口
    private UserDao userdao=new UserDaoImpl();//user接口功能
    @Override
    public User register(String username, String password) {
        User result=null;
        try{
            Dbutils.begin();
            User user=userdao.insert(username,password);//插入用户名和密码
            if(user!=null){
                if(user.getPassword().equals(password))
                {
                    result=user;//查询存在则给result
                }
            }
            Dbutils.commit();
        }catch (Exception e)
        {
            e.printStackTrace();
        }
        return result;
    }
    @Override
    public User login(String username, String password) {
        User result=null;
        System.out.println("loading login");
        try{
            Dbutils.begin();
            User user=userdao.select(username);//名字查询
            System.out.println(user);//查询的结果
            if(user!=null){
                if(user.getPassword().equals(password))
                {
                    result=user;//查询存在则给result(对比)
                }
            }
            Dbutils.commit();
        }catch (Exception e)
        {
            e.printStackTrace();
        }
        return result;
    }
    @Override
    public List<User> showAllAdmin() {
        List<User> users=null;
        try{
            Dbutils.begin();
            users=userdao.selectAll();//查询所用user
            Dbutils.commit();
        }catch (Exception e)
        {
            Dbutils.rollback();
            e.printStackTrace();
        }
        return users;
    }
}
servlet调用service

登陆调用service的login

User user=userService.login(username,password);//调用sql查询

注册调用service的register

User user=userService.register(username,password);//注册

github仓库

代码:我的仓库


目录
相关文章
|
1月前
|
前端开发 Java Maven
Eclipse里使用Servlet实现简单的登录功能
Maven是一款非常方便的Java开发插件,它可以自动管理好开发过程中需要的jar包,提升开发者们的开发效率。在这里,我手把手教给大家如何新建一个Maven项目,并实现简单的用户登录功能。
96 0
|
1月前
|
安全 Java
javaweb实训第四天下午——员工管理系统-JSP&Servlet&JDBC综合练习-CRUD
1.课程介绍 Servlet细节; (掌握) 员工信息相关的CRUD; (掌握) 部门信息相关的CRUD; (掌握) 2.Servlet细节 2.1.多种匹配方式
53 0
|
1月前
|
前端开发 Java BI
Servlet+Jsp+JDBC实现房屋租赁管理系统(源码+数据库+论文+系统详细配置指导+ppt)
Servlet+Jsp+JDBC实现房屋租赁管理系统(源码+数据库+论文+系统详细配置指导+ppt)
|
1月前
|
Java 数据库连接 数据库
通过JSP、JavaBean、JDBC、Servlet技术,实现用户登录功能
通过JSP、JavaBean、JDBC、Servlet技术,实现用户登录功能
|
1月前
|
前端开发 Java Maven
Spring-Spring MVC + Spring JDBC + Spring Transaction + Maven 构建web登录模块
Spring-Spring MVC + Spring JDBC + Spring Transaction + Maven 构建web登录模块
63 0
|
1月前
|
前端开发 Java 容器
SpringBoot中注册Servlet、Filter和Listener(代码和注解两种方式)
SpringBoot中注册Servlet、Filter和Listener(代码和注解两种方式)
75 0
|
1月前
Servlet3.0+环境下使用注解注册Servlet、Filter和Listener组件
Servlet3.0+环境下使用注解注册Servlet、Filter和Listener组件
44 2
|
9月前
|
Java 数据库连接 应用服务中间件
java-初识Servlet,Tomcat,JDBC
我们在此文章知道了servlet 是基于Java语言编写的服务器端程序,可以处理Web容器(如Tomcat)发送过来的HTTP请求,也写了实例代码,另外servlet的过滤器,可以用来处理请求前与请求后的一些逻辑。;接着简单了介绍了tomcat,知道Tomcat 作为一个 Web 服务器,可以通过 Servlet 容器来管理和运行 Servlet;最后介绍jdbc,以及jdbc连接数据库的实例代码。
58 0
|
1月前
|
Java
学院管理系统【JSP+Servlet+JavaBean】(Java课设)
学院管理系统【JSP+Servlet+JavaBean】(Java课设)
44 3
学院管理系统【JSP+Servlet+JavaBean】(Java课设)
|
1月前
|
Java
排课系统【JSP+Servlet+JavaBean】(Java课设)
排课系统【JSP+Servlet+JavaBean】(Java课设)
36 5