HTTP协议:
超文本传输协议 , 是一个应用层的网络传输协议 !
特点:
1. 简单, 快速.
2. 无连接协议 , 每次连接服务器只处理一次客户端的请求 ,处理完毕, 立即断开.
3. 无状态协议 , 处理请求, 以及进行响应时 ,没有记忆能力 !
4. 支持多种不同的数据提交方式 ,GET/POST 等等
5. 数据传输很灵活, 支持任意数据类型 .
HTTP协议的组成部分
1. 请求
请求由四部分组成:
- 请求头
请求头部的信息, 由一个个的键值对组成 , 描述的是有关客户端的信息.
- 请求体
GET请求没有请求体. 当请求方式为POST时 ,存在请求体, 请求体是用于存储数据的数据容器 !
- 请求空行
请求头部与请求体之间的一行空白
- 请求行
由一个个的键值对组成, 描述的是:描述了请求的方式,远端服务器地址 ,以及所使用的协议版本等信息.
2. 响应
响应由三部分组成:
- 响应头
响应头部的信息, 由一个个的键值对组成, 描述的是有关服务器的信息.
- 响应体
服务器给客户端回复的主体内容 .
- 响应行
描述了响应的协议版本, 响应状态码, 以及响应成功或失败的相关解释.
开发环境下: 代码部署到服务器后, 访问的路径:
http://ip地址:端口号/项目名/文件名.后缀名
HttpServlet 类
简介:
是JavaWeb中的 三大组件之一 .
本质上: 就是一个运行在tomcat中的 java类
作用:
用于处理客户端的请求, 以及对客户端进行响应 .
步骤:
1. 编写一个类, 继承自HttpServlet
2. 重写父类的service(HttpServletRequest request,HttpServletResponse response)方法
3. 在service方法中 对用户进行响应.
案例:
public class Servlet1 extends HttpServlet{
/**
* @param request : 请求对象 , 包含了请求相关的所有信息
* @param response : 响应对象 , tomcat提供的用于给客户端响应内容的 各种工具.
*/
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1. 设置响应的 编码格式 以及 响应的内容类型
response.setContentType("text/html;charset=utf-8");
//2. 获取用于打印响应体的 打印流
PrintWriter pw = response.getWriter();
//3. 打印一些准备响应的内容
pw.println("<h1>从前有座山 , 山上有座尼姑庵 ! 庵里有个老尼姑 ...</h1>");
pw.flush();
//当service方法执行完毕后, tomcat会将我们准备好的响应体发送给浏览器
}
}
将编写好的servlet 映射到一个网址上:
web3.0之前版本:
修改项目中的配置文件 web.xml
在web.xml根节点中 加入:
1. servlet节点 ,用于将serlvet类告知tomcat
<servlet>
<servlet-name>任意的标识符,给servlet起别名</servlet-name>
<servlet-class>包名.类名<servlet-class>
</servlet>
2. servlet-mapping , 通过别名告知tomcat ,某servlet的映射网址
映射网址 ,通常以/开头 , 例如: /demo1 , 访问网址: http://ip地址:端口号/项目名/demo1
<servlet-mapping>
<servlet-name>要添加映射网址的别名</servlet-name>
<url-pattern>/映射的网址</url-pattern>
</servlet-mapping>
web3.0+ 版本:
通过WebServlet注解:
案例:
@WebServlet("/hello2")
public class Servlet2 extends HttpServlet{
/**
* @param request : 请求对象 , 包含了请求相关的所有信息
* @param response : 响应对象 , tomcat提供的用于给客户端响应内容的 各种工具.
*/
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1. 设置响应的 编码格式 以及 响应的内容类型
response.setContentType("text/html;charset=utf-8");
//2. 获取用于打印响应体的 打印流
PrintWriter pw = response.getWriter();
//3. 打印一些准备响应的内容
pw.println("<script>alert('恭喜你, 获得奖品: 苹果笔记本电脑一台 , 现金1980 ,请输入银行卡密码领取')</script>");
pw.println("<input ><button onclick='alert(\"哈哈哈哈哈哈哈,你真信啊\")'>提交</button>");
pw.flush();
//当service方法执行完毕后, tomcat会将我们准备好的响应体发送给浏览器
}
}
Servlet的生命周期
指的是 Servlet从创建 到 消亡的 周期!
Servlet的创建时机: 默认情况 , 当用户第一次访问Servlet的映射地址时 . 对象创建.
Servlet的销毁时机: 当tomcat关闭, 或 项目从tomcat删除时. Servlet被销毁.
三个方法的体现:
1. init方法 : 此方法在对象创建后, 执行.
2. service方法 : 服务方法,当用户每一次访问时, 执行, 用于处理用户的请求, 以及对用户进行响应 .
3. destroy方法 : 当tomcat关闭 或 项目从tomcat删除时 执行;
ServletConfig对象
是Servlet的配置对象, 每一个Servlet都拥有一个ServletConfig .
我们在web.xml中 进行Servlet配置时. 可以向一个Servlet中 添加初始化的参数.
这些参数以键值对的形式存储在ServletConfig中
在web.xml中 , 向ServletConfig 存储数据的格式:
<servlet>
...
<!-- init-param标签可以存在多个, 每一个init-param都表示一个键值对 -->
<init-param>
<param-name>键</param-name>
<param-value>值</param-value>
</init-param>
</servlet>
在Servlet中 得到ServletConfig对象的方式:
方式1与方式2是互斥的.
方式1.
在Servlet中, 重写生命周期init(ServletConfig config)方法 , 使用方法参数中的config对象
方式2.
在Servlet的任意代码位置 , 通过getServletConfig();方法. 得到对象
从ServletConfig 取出数据的格式:
String value = config对象.getInitParameter(String name);
调整 Servlet的创建时机
在web.xml中 . 配置servlet时.
<servlet>
<servlet-name...
<servlet-class...
<load-on-startup>数字</load-on-startup>
</servlet>
load-on-startup:
取值为数字: (默认值为-1)
当值为负数时: 懒汉模式, 第一次请求时加载 ,
当值≥0时 , 描述的是请求的顺序, 值越小越早加载.
如果多个servlet值相同: 按照web.xml中servlet的配置顺序 自上而下加载.
如何接收用户 表单 的参数
1. 根据一个name , 接收单个参数
String value = request.getParameter(String name);
2. 根据一个name , 接收一组参数
String[] values = request.getParameterValues(String name);
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!