SERVLET JSP篇-02 HTTP协议、Servlet原理

本文深入解析了HTTP与HTTPS协议的区别及HTTPS的安全机制,探讨了两者的工作原理、应用场景及实现方式,为开发者提供了实用的指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


.Http协议、HTTPS协议

1.什么是HTTPS

HTTPS基于安全套接字层的超文本传输协议,是一个Netscape开发的web协议。即HTTPS=HTTP+SSL,HTTPS在HTTP在HTTP应用层的基础上使用安全套接字层作为子层。

2.为什么需要HTTPS

超文本传输协议(HTTP)是一个用来通过互联网传输的和接受信息的协议,HTTP使用请求/相应的过程,因此信息可在服务器间快速、轻松而且精确的进行传输。当你访问Web页面的时候你就是在使用HTTP协议,但HTTP是不安全的,可以轻松对窃听你跟web服务器之间的数据传输,为了防止未经授权的访问,网景公司推出了HTTPS,也就是基于安全套接字层的HTTP协议。

3.HTTP和HTTPS的相同点

大多数情况下,HTTP和HTTPS是相同的,因为都是采用同一个基础的协议,作为HTTP或HTTPS客户端--游览器,设立一个连接到Web服务器指定的端口。当服务器接受到请求,它会返回一个状态码以及消息,这个回应可能是请求信息、或者指示某个错误发送的错误信息。系统使用同一资源定位器URI模式,因此资源可以被唯一指定。而HTTPS和HTTP唯一不同的只是一个协议头(https)的说明,其他都是一样的。

4.HTTP和HTTPS的不同之处

HTTP的URL以http://开头,而HTTPS的URL以https://开头

HTTP是不安全的,而HTTPS是安全的

HTTP标准端口是80,而HTTPS的标准端口是443

OSI网络模型中,HTTP工作于应用层,而HTTPS工作的传输层

HTTP无需加密,而HTTPS对传输的数据进行加密

HTTP无需证书,而HTTPS需要证书

5.如何通信

建立连接、发起请求、接受响应、断开连接;

一次请求一次连接,降低服务器的压力

6.数据格式

---请求数据

请求行:请求的基本信息

消息头:请求数据的描述

实体内容:具体的业务数据

---相应数据

状态行:相应的基本信息

消息头:相应数据的描述

实体内容:具体的返回数据

7.对开发者的要求

---不同开发者处理的地方

游览器自动打包请求数据

游览器自动发送请求数据

服务器自动打包响应数据

服务器自动发送响应数据

---需要开发者处理的地方

提供具体的请求中的业务数据

提供具体的响应中的返回数据

通过request处理请求数据,通过response处理响应

 

二、Servlet例子

在webapp下新建一个register.xml文件

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<!-- 
	1.完整路径
	http://localhost:8080/servlet2/reg
	2.绝对路径
	格式:/项目名/网名
	实例:/servlet2/reg
	3.相对路径(*)
	只需写出目标和当前页面的相对位置即可
	当前页面:/servelt2/regiser.html
	访问目标:/servlet2/reg
	二者是平级关系,相对路径是reg
	注意:相对路径不能以/开头
	 -->
	<form action="reg" method="post">
		<p>
			账号:<input type="text" name="userName">
		</p>
		<p>
			密码:<input type="password" name="pwd">
		</p>
		<p>
			<input type="radio" name="sex" value="M">男
			<input type="radio" name="sex" value="F">女 
		</p>
		<p>
			<input type="checkbox" name="interest" value="spots"/>运动
			<input type="checkbox" name="interest" value="music"/>音乐
			<input type="checkbox" name="interest" value="movie"/>电影
		</p>
		<p>
			<input type="submit" value="注册">
		</p>
	</form>
</body>
</html>

RegServlet.java

package web;

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;

public class RegServlet extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
		// TODO Auto-generated method stub
		req.setCharacterEncoding("utf-8");//只对post有效
		//处理请求的一般步骤
		//1.接受参数
		String user=req.getParameter("userName");
		String pwd=req.getParameter("pwd");
		String sex=req.getParameter("sex");
		String[] interests = req.getParameterValues("interest");
		
		//2.处理业务
		System.out.println(user);
		System.out.println(pwd);
		System.out.println(sex);
		if(interests!=null) {
			for(String i:interests) {
				System.out.println(i);
			}
		}
		//3.发送相应
		res.setContentType("text/html;charset=utf-8");//注意这里
		PrintWriter out = res.getWriter();
		out.println("<p>注册成功</p>");
		out.close();
	}
	
	

}

三、Servlet原理

 

三、请求方式

1.什么是请求方式?

就是游览器向服务器发送数据的方式:需要掌握众多方式中的两种:GET和POST.

2.GET

采用请求路径传参;参数在传递过程中可见,导致隐私性差

路径可以容纳的数据有限,只能传少量数据

所有的请求默认都是GET请求

3.POST

采用实体内容传参,参数在传递过程中不可见,隐私性好。

实体内容专门用来传数据,大小没有限制

form上加method=”post”

4.观察GET和POST请求

在游览器上按快捷键F12,看NetWork选项

四、乱码处理

1.get/post

将乱码后的字符串按照ISO还原成byte,再将byte按照UTF-8编码成字符串

byte[] bs = user.getBytes("ISO8859-1");

user = new String(bs,"utf-8");

2.get(只对)

修改tomcat配置文件,在server.xml第65行,加URIEncoding=“utf-8”

3.post(只对)

在接受参数前,加req.setCharacterEncoding(“utf-8”)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mind_programmonkey

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值