JavaWeb基础理论

基础理论

软件框架分类

        1.B/S:browser/server,瘦客户端

        2.C/S:client/server,胖客户端

Http协议(超文本传输协议)

        协议:通讯双方共同遵守的规则

        Hypertext transfer protocol:超文本传输协议

        为什么重要:B/S结构使用的协议:

特点:

  1. 基于TCP/IP协议的子协议,是应用层的传输协议;主要用于浏览器与客户端之间的通讯;ServerSocket,Socket

  2. 无状态,无连接的协议

  3. HTTP是基于请求-》响应的模式来进行通讯的;

Request(请求)的组成部分

三部分:

  1. 请求行(第一行)

  2. 若干消息头(多行,从第二行到空白行)

  3. 请求体(空白行后的所有内容,也可能没有请求体)

请求包括三部分,用空格隔开
Get /seedproject/first.html Http/1.1
Get:请求方式
/seedproject/first.html:url统一资源描述符
Http/1.1:协议版本号

Respone(响应)的组成部分

三部分:

  1. 状态行

  2. 消息头

  3. 实体内容

状态行分为三部分,用空格隔开
HTTP/1.1:协议版本
200:状态码
ok:状态的简单说明

GET与POST

  1. Get请求时使用请求行来传递数据,POST请求时使用请求体来传递数据;

  2. Get传递数据时,数据长度有限制,并且明文传递(不安全)

  3. Post传递数据时。数据长度无限制,安全,同时可以传递进制信息

编程来模拟Http协议的请求

Mycat

开发mycat的思路;
1.创建一个Serversocket,端口号是8080,accept;
2.获取到Socket,调用Scoket

public class MyCat {
	public static void main(String[] args) throws IOException{
		Map<String, String> params=new HashMap<>();
		
		//1.create sever Socket监听http 8080端口
		ServerSocket server=new ServerSocket(8080);
		System.out.println("开始监听");
		//2.get socket ; blocking method
		Socket socket=server.accept();
		//3.get InputStream and wrap
		//字节流转换成字符流转换成缓冲流
		BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
		//存入数组 readLine方法一次读一行
		String requestLine = br.readLine();
		//输出数组
		System.out.println(requestLine);
		//输出数组中空格前的值GET 请求行
		//split方法  将一个字符串分割为子字符串,然后将结果作为字符串数组返回
		String method=requestLine.split(" ")[0];
		System.out.println(method);
		
		
		//消息头
		Map<String, String> hearder= new HashMap<String,String>();
		String str=null;
		while(!(str=br.readLine()).equals("")) {
			System.out.println(str);
			hearder.put(str.split(":")[0], str.split(":")[1]);	
		}
		//获得请求体 equals IgnoreCase无视大小写
		if("post".equalsIgnoreCase(method)) {
			String sizeString=hearder.get("Content-Length");
			Integer length=Integer.valueOf(sizeString.trim());
			
			char[] body=new char[length];
			System.out.println(method);
			//将请求体的所有内容都读到body中;
			br.read(body);
			String values=new String(body);
			System.out.println("请求体内容"+ new String(body));
			String[] value =values.split("&");
			for(String v:value ) {
				params.put(v.split("=")[0],v.split("=")[1]);
			}
		}
		
		//响应 字节转成字符流
		BufferedWriter bwriter=new BufferedWriter (new OutputStreamWriter(socket.getOutputStream()));
		//写状态
		bwriter.write("HTTP/1.1 200 OK\r\n");
		//写消息头
		bwriter.write("Content-Type: text/html\r\n");
		//空白行
		bwriter.write("\r\n");
		bwriter.write("<html><head><title>first html</title></head>");
		
		bwriter.write("<body><p>hellow Word</p><a href='http://www.qq.com'>腾讯</a></body>");
		bwriter.write("</html>");
		
		bwriter.flush();
		bwriter.close();
		br.close();
		server.close();
	}
}

html 代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<form action="http://localhost:8080/first.html" method="post">
		id<input type="text" name="name" id="name"/>
		密码<input type="text" name="password" id="password"/>
		<input type="submit" value="添加"/>
		</form>
	</body>
</html>

JavaWeb环境搭建

  1. web:容器tomcat

  2. 开发环境:Eclipse

Tomcat容器介绍

  1. 免费开源的web容器

  2. Tomcat是Apache组织托管的一个绿色软件,直接解压即可

  3. Tomcat的目录结构

    • bin:tomcat的各种命令;

    • cofn:tomcat的配置文件

    • lib:tomcat的依赖jar包

    • webapps:存储用户部署的javaweb项目

    • works:jsp的工作目录

配置Eclipse

window->preferences->server->runtime environments->add->tomcat

创建servlet

 

protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
System.out.println("这是我的第一个网页!");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.print("这是我的第一个网页!!");
}·

启动服务器,运行:http://localhost:8080/javaweb630/First.do

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值