Servlet相关介绍

news/2024/10/30 19:27:19/

一、什么是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]);
// 与方式二中的各个参数相同只是请求方式不同


http://www.ppmy.cn/news/396737.html

相关文章

Could not resolve ‘cn.archive.ubuntu.com‘ ubuntu

add nameserver field in /etc/resolv.confnameserver 8.8.8.8

【华为OD机试】 阿里巴巴找黄金宝箱(Ⅲ)【2023 B卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 一贫如洗的樵夫阿里巴巴在去砍柴的路上,无意中发现了强盗集团的藏宝地, 藏宝地有编号从0-N的箱子,每个箱子上面贴有一个数字。 阿里巴巴念出一个咒语数字,查看宝箱是否存在两个不同…

解释什么是 Resizable BAR、如何实现它,并介绍它将如何影响性能。

什么是可调整大小的栏&#xff1f;如何为我的系统启用它&#xff1f; intel A770显卡运行时要求开启Resizable BAR&#xff0c;否则性能据说会损失40%。 其实我测试了下&#xff0c;没有启用之前鲁大师跑分44万&#xff0c;启用后也高不到哪里去&#xff0c;就是个48万。 但是…

Invalid bound statement (not found)出现原因和解决方法

https://blog.csdn.net/weixin_44695793/article/details/107752054?utm_mediumdistribute.pc_relevant.none-task-blog-baidujs_title-0&spm1001.2101.3001.4242

执行bat文件提示:“不是内部或外部命令,也不是可运行的程序或批处理文件”

双击bat文件&#xff0c;出现以下错误提示&#xff1a; 原因&#xff1a;文件不支持UTF-8编码和Unix格式&#xff0c;要选择ANSI编码和Windows格式。 解决&#xff1a;(1) 用Notepad打开bat文件&#xff0c;双击下方的Unix(LF)选择"转换为Windows格式"&#xff1b; (…

TORCH MAXIMUM

import torcha torch.tensor((1, 2, -1)) b torch.tensor((3, 0, 4)) torch.maximum(a, b) 结果应该是: tensor([3, 2, 4]) AttributeError: module torch has no attribute maximum torch版本&#xff1a;1.6.0cu101 发现max和maximum结果一样&#xff1a; print(torch…

C语言五子棋--人机对弈--人人对弈

C语言五子棋&#xff1a; 注:直接可以运行使用的代码,家人们的点赞在哪里 第一次实现可以进行人机对战的五子棋&#xff0c;分享下&#xff0c;难度不大。都是按照模块来写的,封装成了很多个函数,比较细致,新手还是可以看懂的。主要可以实现人人对战&#xff08;包含提示&…

Cmder 安装 cmder 此时不应有 \cmder\vendor\bin\cexec.cmd““。

问题&#xff1a;安装cmder后&#xff0c;打开第一句总是 此时不应有 \cmder\vendor\bin\cexec.cmd""。 探索过程&#xff1a;修改环境变量和Path, 如 1. 2. 但是&#xff0c;依然没有解决问题。 解决办法&#xff1a;删掉原来下载的Cmder解压后的包。之前安装在…