开发环境的配置
1. 下载tomcat
2. 解压到任意的英文目录
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会将我们准备好的响应体发送给浏览器
}
}
flush方法
如果中途调用close()方法,输出区也还是有数据的,就像水缸里有水,只是在缓冲区遗留了一部分,这时如果我们先调用flush()方法,就会强制把数据输出,缓存区就清空了,最后再关闭读写流调用close()就完成了。
作业:
通过JDBC查询数据库中的员工表, 在网页中 将员工表的所有信息 , 显示出来.
JavaWeb项目中的所有jar文件. 必须存储在 webContent/Web-Inf/lib文件夹中 !