servlet+mysql实现简易的登录功能

本篇记录在idea中搭建web应用框架的过程,并用jsp+servlet+mysql实现简单的登录功能。

1、搭建web项目骨架

新建javaweb应用项目
在这里插入图片描述
新建lib文件夹,放入要用到的依赖包。分别是数据库的驱动包和web工具包,添加后右键添加到项目的依赖库中。
在这里插入图片描述
添加完毕之后,在项目设置中查看结构,确认依赖导入完毕。如果需要fix,直接点击fix进行修复。
在这里插入图片描述
建立项目骨架,在src中新建五个包。代表web项目的各个功能层次。

  • dao层负责对数据库的相关操作,比如插入查询删改等。
  • model包存放在程序中的实体形式,包括一系列属性,与数据库中的字段对应。
  • service包存放业务逻辑中的服务,它根据不同情况,对dao层进行调用
  • servlet包存放各种页面请求处理。直接根据页面信息作出各种相应,对service层进行调用。
  • util存放各种工具类
    在这里插入图片描述

2、编写数据库连接类和dao层:

此处参考上一篇数据库连接的博文,这里不再赘述:
https://editor.csdn.net/md/?articleId=107488124
这里的数据库结构比较简单,如下:
在这里插入图片描述
测试数据:

在这里插入图片描述

3、编写实体类:

这里的属性要和数据库中的字段对应。这里新建一个用户名和一个密码两个属性用于用户登录。

package com.kisstherain.model;

public class User {
    private int id;
    private String name;
    private String password;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

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


    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

4、编写Service

这里逻辑比较简单,因为只有登录这一个比较简单的操作

package com.kisstherain.service;

import com.kisstherain.dao.UserDao;
import com.kisstherain.model.User;

public class UserService {
    UserDao userDao=new UserDao();
    public User selectByName(String name){
        return userDao.selectByName(name);
    }
}

5、编写Servlet:

servlet层继承HttpServlet类,主要是重写doPost方法,对发送的请求根据用户发送的表单进行处理,并进行适当的返回。这里根据用户在登录界面提交的用户名和密码表单,调用dao层的数据库交互方法,对相应用户名的密码进行匹配判断。如果相同返回带有success的相应界面;如果不同或者是其他情况导致密码不匹配,返回fail。
主要有两种请求处理方法 doPost doGet

doGet:处理GET请求
doPost:处理POST请求
当发出客户端请求的时候,调用service 方法并传递一个请求和响应对象。Servlet首先判断该请求是GET 操作还是POST 操作。然后它调用下面的一个方法:doGet 或 doPost。如果请求是GET就调用doGet方法,如果请求是POST就调用doPost方法。doGet和doPost都接受请求(HttpServletRequest)和响应(HttpServletResponse)。get和post这是http协议的两种方法,另外还有head, delete等
这两种方法有本质的区别,get只有一个流,参数附加在url后,大小个数有严格限制且只能是字符串。post的参数是通过另外的流传递的,不通过url,所以可以很大,也可以传递二进制数据,如文件的上传。
在servlet开发中,以doGet()和doPost()分别处理get和post方法。

package com.kisstherain.servlet;

import com.kisstherain.model.User;
import com.kisstherain.service.UserService;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class LoginServlet extends HttpServlet {

    UserService userService=new UserService();
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String name=req.getParameter("name");
        String password=req.getParameter("password");

        User user=userService.selectByName(name);
        if(password.equals(user.getPassword())){
            resp.getWriter().write("success");
        }else{
            resp.getWriter().write("fail");
        }
    }
}

6、编写jsp界面:

主要是两个输入框,供用户输入密码和用户名。这里的action代表处理请求时用户所在的url

<%--
  Created by IntelliJ IDEA.
  User: 84265
  Date: 2020/7/21
  Time: 8:43
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <h1>登录页面</h1>
  <form action="login" method="post">
    name:<input name="name" type="text">
    password:<input name="password" type="password">
    <input type="submit" value="确认">
  </form>
  </body>
</html>

7、建立servlet映射

最后要告诉web应用有哪些servlet,以及这些servlet与项目中的哪些类对应:

   <servlet>
        <servlet-name>loginServlet</servlet-name>
        <servlet-class>com.kisstherain.servlet.LoginServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>loginServlet</servlet-name>
        <url-pattern>/login</url-pattern>
    </servlet-mapping>

8、测试

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42189888/article/details/107480350