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、测试
本文地址:https://blog.csdn.net/weixin_42189888/article/details/107480350