两种架构
CS Client/Server
应用程序的开发
BC Browser/Server 目前最火
网页,应用系统
客户端和服务器通信的协议
协议概述
1.网络协议:网络中计算机进行通信遵循的规范
2.在JAVAWEB中遵循的协议是HTTP协议
1.HTTP协议:是建立在TCP协议基础之上 (传输双方需要建立连接),集与请求 相应模式的 无状态的应用层协议
2.无状态:两次请求之间不会保存任何关联的信息,由于现实生活中需要报纸多次请求的关联 所以需要研究 保持会话的技术 :cookie和session
3:请求request:从客户端(浏览器) 发送到服务器的报文[有格式的字符串]
❤️ 1格式:
请求行 请求方法GET/POST /资源 协议版本HTTP/1.1 请求头 Host Accept Accept-language Cookie.. 消息体 key=value&key1=value
❤️ 2请求案例
4:响应response:从服务器回给客户端的报文
❤️ 1.格式:
状态行
响应头
相应正文 html
❤️ 2.案例:
5.浏览器:能够发出标准的HTTP请求报文,接收并解析标准的HTTP相应报文的软件
6.WEB服务器:能够接收并解析标准的HTTP请求,返回标准的HTTP请求的
三.Tomcat
概述
Tomcat就是一款免费的、开源的、纯JAVA实现的WEB服务器。官网:tomcat.apache.org,自己下载解压到本地,注意解压路径不要有中文
目录
解释一下各个包都是干啥的:
bin:开关的工具目录
conf:Tomcat的配置文件目录
lib:tomcat的jar包
logs:日志
temp:临时目录 文件上传临时存放
work:工作时自动生成和管理的目录
webapps: 存放我们写的WEB工程的目录
开猫
配置环境变量JAVA_HOME,路径放你的jdk路径
进入bin目录下找到startup.bat双击运行
几里哇啦写一堆,不用管他,最小化打开浏览器,地址栏输入localhost:8080 回车
呐!tomcat就装上了
四.Servlet技术?
什么是Servlet
打个比方吧,我们的tomcat就像是酒店门口的迎宾,他把客人领进来就交给serverlet(大堂经理)来分析需求,然后把需求扔给dao层(厨师)用CF和apache(刀和锅)去和数据库(菜品)打交道,做完饭之后厨师拿到菜(resultSet),交给servlet,servlet用io流写进response再通过tomcat交给客户
必要性:
WEB服务器(tomcat)可以接受请求,也可以返回给客户端相应,但是具体如何处理请求需要程序开发人员处理需要后端开发者写servelet和Dao
写个案例
idea建一个javaEE的项目,注意把tomcat的路径给导进去! 项目目录如下
打包路径设成classes文件
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<a href="hello">测试</a>
</body>
</html>
helloServlet.java
生命周期
init()初始化阶段
service()处理客户端请求阶段
destroy()终止阶段
package com.etoak.student.controller;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
@WebServlet("/hello")
public class HelloServlet implements Servlet {
public HelloServlet(){
System.out.println("HelloServlet执行了");
}
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("init..");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("service..");
HttpServletRequest request =(HttpServletRequest)servletRequest;
HttpServletResponse response =(HttpServletResponse)servletResponse;
String method =request.getMethod();//请求的方法
String protocol =request.getProtocol();//请求的协议
String url = request.getRequestURL().toString();
String contextpath =request.getContextPath();
String uri = request.getRequestURI();
Enumeration<String> headers =request.getHeaderNames();
while(headers.hasMoreElements()){
String header =headers.nextElement();
String value = request.getHeader(header);
}
//请求的参数
response.setContentType("text/html;charset =UTF-8");
String username =request.getParameter("username");
PrintWriter out =response.getWriter();
out.write("大家好");
out.flush();
out.close();
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
调试运行,点击测试
呐,servlet getWriter写下的"大家好"就有了,response的响应头和响应报文tomcat自己封装不需要我们写.
总结
tomcat+servlet就这么多内容了,原理搞懂了吗,有错误希望指正,纯手写,勿商用