1JavaWeb简介
1.1JavaWeb的概念
(a)什么是javaWeb
javaWeb是指,所有通过java语言编写可以通过浏览器访问的程序的总称,叫javaWeb;javaWeb是基于请求和响应来开发
(b)什么是请求?
请求是指客户端给服务器端发送数据,叫请求 Request.
(c)什么是响应?
响应是指服务器给客户端回传数据,叫响应 Response.
(d)请求和响应的关系
请求和响应是成对出现的,有请求就有响应
1.2 Web资源分类
动态资源: jsp页面、Servlet程序
静态资源: html、css、js、txt、mp4、jpg图片等
1.3 常用服务器
Tomcat:
Jboss
GlassFish
Resin
WebLogic
1.4 Tomcat的停止
- 点击tomcat服务器窗口的x关闭按钮
- 把 Tomcat 服务器窗口置为当前窗口,然后按快捷键 Ctrl + C
- 找到 Tomcat 的 bin目录下的shutdown.bat双击,就可以停止Tomcat服务器
1.5 如何修改 Tomcat的端口号
mysql默认的端口号是:3306
Tomcat默认的端口号是:8080
找到Tomcat目录下的conf目录,找到Server.xml配置文件。
(修改完端口号,一定要重启Tomcat服务器才能生效)
1.5.1 如何部署web工程到Tomcat 中
- 只需要把web工程的目录拷贝到Tomcat的webapps目录下即可。
- 找到Tomcat下的conf目录\Catalina\localhost\下,创建如下的配置文件
1.5.2 ROOT 的工程的访问,以及 默认index.html 页面的访问
-
当我们在浏览器地址栏中输入访问地址如下:
http://ip:port/ ====>>> 没有工程名的时候,默认访问的是ROOT 工程。
-
当我们在浏览器地址栏中输入的访问地址如下:
http://ip:port/工程名/ ====>>>>> 没有资源名,默认访问 index.html页面
2 Servlet技术*
2.1 什么是servlet
- Servlet是java接口之一
- Servlet是运行在服务器端的一个java程序
作用:它可以接收客户端发送过来的请求,并响应数据给客户端。
- Servlet是JavaWeb组件之一。三大组件分别是:Servlet程序、Filter过滤器、Listener监听器。
2.2 手动实现Servlet程序
- 编写一个类去继承HttpServlet类,
- 根据业务需要去重写 doGet() 和 doPost() 方法(重写其中一个或两个)
- 配置Servlet 程序的访问地址:两种方法
①:在web.xml中配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<!-- servlet别名,一般与类名相同 -->
<servlet-name>name</servlet-name>
<!-- servlet全限定类名,即servlet位置路径 -->
<servlet-class>com.example.servlet.Servlet_life</servlet-class>
<!-- 启动优先级 -->
<load-on-startup>-1</load-on-startup>
</servlet>
<servlet-mapping>
<!-- 跟上面的别名一致 -->
<servlet-name>name</servlet-name>
<!-- 请求访问路径,“/”必须加上,相当于项目名称 -->
<url-pattern>/life</url-pattern>
</servlet-mapping>
</web-app>
②:用@WebServlet注解
@WebServlet(value = "/hello")
2.3 Servlet的生命周期
- 执行Servlet构造器方法
- 执行init 初始化方法
第一、二步是在第一次访问的时候创建Servlet程序会调用。
- 执行service方法
每次访问都会调用
- 执行destroy方法
在web工程停止的时候调用
2.4 ServletConfig类
Servlet程序的配置信息类
Servlet程序和ServletConfig 对象都是由Tomcat负责创建,我们只负责使用
Servlet程序默认是第一次访问的时候创建,ServletConfig是每个Servlet程序创建时,就创建一个对应的ServletConfig对象。
2.4.1 ServletConfig类的三大作用
- 可以获取Servlet程序的别名 Servlet-name的值
- 获取初始化参数 init-param
- 获取 ServletContext对象
2.5 ServletContext类
2.5.1 什么是ServletContext?
- ServletContext是一个接口,他表示Serlvet 上下文对象
- 一个web工程只有一个ServletContext 对象实例。
- ServletContext对象是一个域对象。 域对象:是可以将Map一样存储数据的对象 域指的是存储数据的操作范围
存数据 | 取数据 | 删除、数据 | |
---|---|---|---|
Map | put() | get() | remove() |
域对象 | setAttribute() | getAttribute() | removeAttribute() |
2.5.2 ServletContext类的四个作用
- 获取web.xml中配置的上下文参数Content-param
- 获取当前的工程路径,格式:/工程路径
- 获取工程部署后在服务器磁盘上绝对路径。
- 像Map一样存储数据
//1. 获取web.xml中配置的上下文参数Content-param
ServletContext servletContext = getServletConfig().getServletContext();
String username = servletContext.getInitParameter("username");
String password = servletContext.getInitParameter("password");
System.out.println("context-param参数username的值是" + username);
System.out.println("context-param参数password的值是" + password);
//2. 获取当前的工程路径,格式:/工程路径
System.out.println("当前工程路径:" + servletContext.getContextPath() );
//3. 获取工程部署后在服务器磁盘上绝对路径。
System.out.println("工程部署的路径是:" + servletContext.getRealPath("/"));
3 HTTP协议
3.1 什么是HTTP协议?
协议是指双方,或者多方,相互约定好,大家都需要遵守的规则,叫协议。
所谓HTTP协议,就是指,客户端和服务器之间通信时,发送的数据,需要遵守的规则,叫HTTP协议。
HTTP协议中的数据又叫报文。
3.2 请求HTTP协议的格式?
客户端给服务器发送数据叫请求。
服务器给客户端回复数据叫响应。
请求分为Get请求个Post请求两种
3.2.1 GET请求
请求行
(1)请求的方式 GET
(2)请求的资源路径[+?+请求参数]
(3)请求的协议的版本号 HTTP/1.1请求头
请求体
Accept:告诉服务器,客户端可以接收的数据类型
Accept-Language:告诉服务器客户端可以接收的语言类型
zh_CN 中文中国
en_Us 英文美国
User-Agent:就是浏览器的信息
Accept-Encoding:告诉服务器,客户端可以接收的数据编码(压缩)格式Host:表示请求的服务器ip和端口号
Connection:告诉服务器请求连接如何处理
Keep-Alive告诉服务器回传数据不要马上关闭,保持一小段时间的连接 Closed马上关闭
3.2.2 POST请求
- 请求行
(1)请求的方式 POST
(2)请求的资源路径[+?+请求参数]
(3)请求的协议的版本号 HTTP/1.1
- 请求头
(1) key:value 不同的请求头,有不同的含义
Accept:表示客户端可以接收的数据类型
Accpet-Languege:表示客户端可以接收的语言类型User-Agent:表示客户端浏览器的信息
Host:表示请求时的服务器ip和端口号
- 请求体 发送给服务器的数据
3.2.3 哪些是GET请求,哪些是POST请求
GET请求有哪些:
1、form标签method=get2、a标签
3、link标签引入css4、script标签引入js文件
5、img标签引入图片
6、iframe引html页面
7、在浏览器地址栏中输入地址后敲回车
POST请求有哪些:
8、form标签method=post
3.4 请求的转发
3.4.1 什么是请求的转发?
请求转发是指,服务器收到请求后,从一次资源跳转到另一个资源的操作叫请求转发。
3.4.2 请求转发的特点?
- 咯浏览器地址栏没有变化
- 他们是一次请求
- 他们共享Request 域中的数据
- 可以转发到WEB-INF目录下
3.4.5 base 标签的作用
base标签可以设置当前页面中所有相对路径工作时,参观哪个路径来进行跳转。
3.4.6 Web中的相对路径和绝对路径
相对路径
. 表示当前目录
… 表示上一级目录
资源名 表示当前目录/资源名
绝对路径
http://ip:port/工程路径/资源路径
3.5 HttpServletResponse类
3.5.1 HttpServletResponse 类的作用
HttpServletResponse类和HttpServletRequest类一样。每次请求进来,Tomcat服务器都会创建一个Response对象递给servlet程序去使用。HttpServletRequest表示请求过来的信息,HttpServletResponse表示所有响应的信息,
我们如果需要设置返回给客户端的信息,都可以通过HttpServletResponse对象来进行设置。|
3.5.2 两个输出流的说明
字节流 getOutputStream(); 常用于下载(传递二进制数据)
字符流 getWriter(); 常用于回传字符串(常用)
3.6 如何往客户端回传数据
3.7 请求重定向
是指客户端给服务器发送请求,然后服务器告诉客户端说,我给你一些地址。你去新地址访问。(因为之前的地址可能已经被废弃)。
3.7.1 请求重定向的特点:
- 浏览器地址栏会发生变化
- 两次请求
- 不共享Request域中的数据
3.7.2 两个输出流的说明
字节流 getOutputStream(); 常用于下载(传递二进制数据)
字符流 getWriter(); 常用于回传字符串(常用)