Java Web知识必备
web概念回顾
- 软件架构
- C/S : 客户端/服务端
- B/S : 浏览器/服务端
- 资源分类
- 静态资源:所有用户访问后,得到的结果都是一样的,称为静态资源。静态资源可以直接被浏览器解 析如:html,css,JavaScript
- 动态资源:每个用户访问相同资源后,得到的结果可能不样。称为动态资源。动态资源被访问后,需要转为静态资源如:servlet,jsp,php
- 网络通信三要素
- IP
- 端口号
- 传输协议
web服务器软件
- 服务器:安装了服务器软件的计算机
- 服务器软件:接收用户的请求,处理请求,做出响应
- web服务器软件:接收用户的请求,处理请求,做出响应
- web 服务器软件中,可以部署web项目,让用户通过浏览器来访问这些项目
- web容器
- 常见java相关的web服务器软件
- Tomcat:Apache基金组织
- Tomact文件
- Tomact启动:
- bin/startup.bat,双击运行该文件即可
- 访问:浏览器输入:http://127.0.0.1:8080 回车
- 配置:
- 直接将项目放到webapps下即可
- 简单部署:将项目打包成一个war包,再将war包放置webapps目录下,war包会自动解压
- Tomact文件
- Tomcat:Apache基金组织
Servlet:server applet
- 概念:运行在服务器的小程序
- Servlet就是一个接口,定义了JAVA类被浏览器访问到(tomact识别)的规则
- 将来我们自定义一个类,实现Servlet接口,复写方法
- 快速入门
- 创建JAVA EE项目
- 定义一个类,实现Servlet
- 实现接口中的抽象方法
- 配置Servlet(在web.xml)
HTTP:
概念:Hyper Text Transfer Protocol 超文本传输协议
* 传输协议:定义了,客户端和服务端通信时,发送数据的格式
* 特点:
1. 基于TCP/IP的高级协议
2. 默认端口号:80
3. 基于请求响应模型:一次请求一次响应
4. 无状态:每次请求之间相互独立,不能交互数据
请求消息数据格式
1. 请求行
请求方式 请求URL 请求协议/版本
GET /login.html HTTP/1.1
* 请求方式:
* HTTP协议有七种请求方式,常用有两种
* GET:
1. 请求参数在请求行中,在URL后
2. 请求的URL长度有限制
* POST:
1. 请求参数在请求体中
2. 请求的URL长度没限制的
2. 请求头:客户端浏览器告诉服务器,访问使用的浏览器的信息
3. 请求空行:用于分割POST请求的请求头和请求体的
4. 请求体:封装POST请求信息的请求参数
Request :
-
- Request对象和Reponse对象是由服务器创建的我们来使用它们
- Request对象是来获取请求消息,Response对象是来设置响应消息
- Request功能
1、获取请求行数据
2、获取请求头数据
3、获取请求体数据
请求行
String method = req.getMethod();//获取请求方式
System.out.println(method);
String contextPath = req.getContextPath();//获取虚拟路径
System.out.println(contextPath);
String servletPath = req.getServletPath();//获取Servlet路径
System.out.println(servletPath);
String queryString = req.getQueryString();//获取请求参数
System.out.println(queryString);
String requestURI = req.getRequestURI();//获取请求的URI
System.out.println(requestURI);
String protocol = req.getProtocol();//获取协议鸡版本
System.out.println(protocol);
String remoteAddr = req.getRemoteAddr();//获取客户机的ip地址
System.out.println(remoteAddr);
请求头
public class RequestDemo04 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取数据头
String header = req.getHeader("user-agent");
if(header.contains("Chrome"))
{
System.out.println("Chrome");
}
else if(header.contains("Firefox"))
{
System.out.println("Firefox");
}
}
请求体
- 只有POST方式才有请求体,在请求体中封装了POST的请求的请求参数
- 步骤
- 获取流对象
- 再从流对象中拿数据
BeanUtils工具类,简化数据封装
- JAVABean:标准的JAVA类
- 要求
- 类必须被public修饰
- 必须提供空参的构造器
- 成员变量必须使用private修饰
- 提供公共setter和getter
- 功能:封装数据
- 操作的是属性而不是成员变量
- 要求
ServletContext对象:
- 概念:代表整个web应用,可以和程序的容器(服务器)来通信
- 获取:
- 通过request对象获取
- request.getServletContext()
- 通过request对象获取
- 功能:
- 获取MIME类型
- 域对象:共享数据
- 获取文件的真实路径
持续更新~~~