一、什么是servlet
Java Servlet 是运行在Web服务器或应用服务器上的程序,使用Servlet可以收集来自网页表单的用户输入,呈现来自数据库或者其它源的记录,还可以动态创建网页。
web服务器只能处理静态的资源,不能处理动态的页面,所以需要扩展其功能,因此使用servlet就能扩展其功能,web服务器收到请求后,如果需要计算,则调用servlet进行处理。
二、Servlet快速入门
1、写一个Java类实现Servlet接口,或者继承HttpServlet
2、重写service方法
3、编译
4、打包
5、部署
6、启动容器,访问Servlet
public class HelloServlet extends HttpServlet {/*** 处理请求的方法 容器接收对应的请求后会自动调用* @param req 容器将请求中携带的数据进行分析,然后将数据封装到request对象中,同时跟响应对象一起传递到方法中* @param resp 程序员将最终数据处理的结果封装 到response对象中 响应给浏览器* @throws ServletException* @throws IOException*/@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {/*** 设置响应头,声明服务器响应数据的格式*/resp.setContentType("text/html;charset=utf-8");//获取输出流 将数据写出到浏览器PrintWriter writer = resp.getWriter();writer.print("<h1>hello servlet</h1>");//关闭流 关闭流之前,会将响应流中的数据发动给浏览器writer.close();}
}
配置web.xml文件
<servlet><!--设置servlet的别名--><servlet-name>helloServlet</servlet-name><!--处理请求的实体类--><servlet-class>cn.kgc.servlet.HelloServlet</servlet-class>
</servlet><servlet-mapping><servlet-name>helloServlet</servlet-name><!--拦截请求的路径--><url-pattern>/hello.do</url-pattern></servlet-mapping>
三、Servlet处理请求过程
URL:http://localhost:8080/hello.do
step1:根据ip和端口号建立连接
step2:浏览器端通信模块打包数据
step3:发送数据到服务器
step4: 服务器通信模块解析数据
step5:容器创建request和response对象,然后将解析后的数据存放到request对象中
step6: 根据请求路径,寻找相关的servlet类创建对象,
step7:调用其service方法,将step5创建的对象作为参数传入
step8:获取service方法处理后的结果,并打包响应回浏览器
step9:浏览器的通信模块解析响应数据
step10:展示数据
四、Servlet生命周期
Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程:
-
Servlet 初始化后调用 init () 方法。只调用一次。它在第一次创建 Servlet 时被调用,在后续每次用户请求时不再调用
-
Servlet 调用 service() 方法来处理客户端的请求。service() 方法是执行实际任务的主要方法。Servlet 容器(即 Web 服务器)调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。
-
Servlet 销毁前调用 destroy() 方法。destroy() 方法只会被调用一次,在 Servlet 生命周期结束时被调用。在调用 destroy() 方法之后,servlet 对象被标记为垃圾回收。
-
最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的
五、Servlet客户端HTTP请求
HTTP协议
超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
三个基本原则
1.基于请求响应模型
2.一次请求对应一次响应
3.请求必须是客户端发出,服务端只能被动的等待请求,然后做出回应
HTTP请求格式
1.请求行(请求方式 请求资源路径 协议和版本)
2.消息头
3.请求实体内容
如果请求的方式是get请求,那么请求的实体内容为空,只有请求方式是post请求时,实体内容才有数据
六、Servlet服务器HTTP响应
1.状态行
2.响应头
3.响应实体内容
七、AJAX技术
AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。AJAX 不是新的编程语言,而是一种使用现有标准的新方法。在 2005 年,Google 通过其 Google Suggest 使 AJAX 变得流行起来
AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面
1.发送ajax请求的方式一
$.ajax({url:'', //请求地址data:{'username':username}, //请求参数dataType:'json', //返回数据的格式type: 'post', //请求方式 async:true, //是否开启异步请求success:function(date){//请求成功回调},error:function(){//请求失败回调 } })
2、发送ajax请求的方式二
$.get(url,[data],[callback],[type]);
// url:要发送请求的URL地址
// data:可选参数,要发送到服务器的数据
// callback:可选参数,请求成功后的回调函数
// type:可选参数,要返回的数据类型,默认为智能判断,可以设置为"json"、"xml"等
3、发送ajax请求的方式三
$.post(url,[data],[callback],[type]);
// 与方式二中的各个参数相同只是请求方式不同