简单用户登录功能数据在网页和服务器之间的传输,处理

本文详细介绍了如何使用HTML表单实现用户登录功能,包括GET和POST请求的区别,以及服务器接收到数据后的处理过程。在实际业务中,服务器会验证用户输入,与数据库交互,若登录成功则返回相应响应,否则提示错误信息。此外,还探讨了真实业务操作中可能涉及的数据库操作和日志记录。
摘要由CSDN通过智能技术生成

目录

一、用什么来实现用户登录功能

二、数据怎么传到服务器?

三、服务器收到数据以后会进行怎么的处理?

四、如果是真实的业务操作,在收到数据以后,服务器可能会有哪些操作?


一、用什么来实现用户登录功能

        用户的登录功能,界面使用html的form表单即可完成一个简单的账号密码输入,和数据传输到服务器,然后我们可以在数据库中寻找是否有响应的数据,有就登录成功,否则,可以重新引导回页面,当然,这里我们只是在服务器servlet内部内置了一个账号密码进行判断。

        关于form表单,我简单举一个例子,下面这段代码是在网页创建一个账号密码输入的表单

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
	建议用f12看一下整个请求到响应的过程<br>
	<form action="login" method="get"> 
	用户名:<input type="text" name="username"> <br> 
	密 码:<input type="password" name="password"> <br> 
	<input type="submit" value="登录"> 
	</form>
</body>
</html>

 <input> 就是我们要输入的数据,type=“***”就是定义我们输入数据的类型,password就是表明这是一个密码字段,随后会对该段数据进行掩盖,不会以明文的形式展现,name则是定义这个字段的属性名。方便我们提取从请求中提取数据。

在网页上的显示则是下图:

 

二、数据怎么传到服务器?

        我们在网页上输入了数据,那么数据又是怎样从网页进入到服务器的呢?这里就要先说一下web浏览器和web服务器之间的工作了。

        这里先看一张图

         

        我们可以看见,客户端是通过请求将数据送入到服务器的,那么这个请求又是怎么一回儿事呢?

        我们在第一个点已经提到了,我们可以用form表单来代替浏览器发送请求,form表单中,action="login",这里就是数据要交给服务器的login来进行处理。method就是请求的方式,一般来说就是get请求和post请求。那么get请求和post请求又有什么区别呢?

        如果我们使用post请求,那么参数就会以form data的形式传递,如果是用get请求,那么参数就会以url string 的形式进行传递,不会显示在请求url中,如图所示

这是post请求

 这是get请求

如上述,我们可以清晰的看到,get请求在传入参数时,也会将参数在url中显示出来 

我们在浏览器网址部分也可以发现。

既然如此,那我们是用get请求进行参数传入呢,还是用post请求进行参数传入呢?

这里看场景需求吧,我们可以列举一下get请求和post请求的区别,来进行参考(此处区别参考get请求和post请求区别 - 简书 (jianshu.com)

1)GET请求一般用去请求获取数据,POST一般作为发送数据到后台时使用

2)GET请求也可传参到后台,但是其参数在浏览器的地址栏的url中可见,所以隐私性安全性较差,且参数长度也是有限制的, POST请求传递参数放在Request body中,不会在url中显示,比GET要安全,且参数长度无限制

3)GET请求刷新浏览器或回退时没有影响,POST回退时会重新提交数据请求

4)GET 请求可被缓存,POST 请求不会被缓存

5)GET 请求保留在浏览器历史记录, POST 请求不会保留在浏览器历史记录中

6)GET 请求可被收藏为书签,POST 不能被收藏为书签

7)GET请求只能进行url编码(application/x-www-form-urlencoded), POST支持多种编码方式(application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。)

8)GET请求比较常见的方式是通过url地址栏请求,POST最常见是通过form表单发送数据请求

        小结一下,就是web浏览器通过form表单发送get请求或者post请求到web服务器,web服务器将请求送到web容器里面进行解析,然后调用servlet,最后返回响应到web浏览器。

 

三、服务器收到数据以后会进行怎么的处理?

        服务器收到数据以后会进行怎么的处理呢?这里我们先看一张图片

        客户端在发送请求到服务器之后,服务器就会把请求丢到web容器里面去,这个容器里面呢就是我们写的servlet之类的服务,然后servlet服务就会解析请求,根据我们的代码,创建servlet服务,然后进行初始化,调用service(),,最后将响应返回web服务器,销毁servlet,再由web服务器返回到客户端。

        这是服务器收到数据以后的通用操作,那么具体到我们这个简单的用户登录功能,又是怎样的情况呢,这里先给大家看一下代码

package servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.omg.CORBA.PRIVATE_MEMBER;

public class LoginServlet extends HttpServlet {

	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		//从请求中获取相应的参数
		//得到网页打印权限
		PrintWriter out = response.getWriter();
		String name = "majie";//内置用户
		String pass = "mj666666";//内置密码
        String username = request.getParameter("username"); 
        String password = request.getParameter("password"); 
        
        // 思考,在真实的项目中,接收到参数后要做什么动作?
        // 真实的业务操作可能会有哪些动作呢?
        if(username.equals(name)&&password.equals(pass)) {
        	
            //在控制台输出相应的参数
            System.out.println("username = " + username ); 
            System.out.println("password = " + password ); 
            
            //给出响应 
            response.getWriter().println("Login Success!"); 
        }
        else {
        	if(!username.equals(name)) {
        		System.out.println("账号输入不正确");
        		response.getWriter().println("账号输入不正确");
        	}
        	else {
        		System.out.println("密码输入不正确");
        		response.getWriter().println("密码输入不正确");
        	}
        }
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		doGet(request, response);
	}
}

        之所以说这个是简单的用户登录,是因为我们这里没有涉及数据库之类的操作,只是在服务器内部设置了一个账号密码。

        通过代码,我们可以看见,我们调用了request.getParameter(“属性名”)的方法,拿到了我们设置的form表单中的账号和密码,然后就是将账号密码与我们内置的账号密码进行比对,根据结果,有不同的响应。

 

 

 

四、如果是真实的业务操作,在收到数据以后,服务器可能会有哪些操作?

        这里我们深入思考一下,如果是真实业务操作,那么服务器在收到数据之后,一个是要操作数据库,看看数据库里面是否有对应的账号和密码,如果有那么我们进行登录,如果没有,要么显示账号错误或密码错误,然后重新导回到登录页面,要么引导用户进入注册页面,同时,我们还要生成对应的日志,记录下我们操作数据库的时间和步骤,以便数据的恢复。

这次分享就到这里了,学习路上,诸君共勉,我们下次见。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值