Servlet学习笔记

1.Servlet简介

Servlet(Sever Applet)是Java Servlet的简称,可以称之为Java服务器小程序,是一个用Java编写的Web组件,运行在服务器端,它由Servlet容器所管理,主要功能是用于交互式地浏览和修改数据,生成动态的Web内容。

狭义的Servlet是指Java语言实现的一个接口。广义的Servlet是指任何实现这个接口的类,一般情况下,人们选择从广义上去理解。编写一个Servlet,实际上就是按照Servlet规范编写一个Java类。Servlet运行于支持Java应用服务器中。从原理上来讲Servlet可以相应任何类型的请求,但绝大多数的情况下只要用来扩展基于HTTP协议的Web服务器。

2.Servlet容器

Servlet容器也叫做Servlet引擎,是Web服务器或应用程序服务器的一部分,用于在发送的请求和响应之上提供网络服务,解码基于 MIME(服务器接受的数据类型)的请求,格式化基于MIME的响应。Servlet没有main方法,不能独立运行,它必须被部署到Servlet容器中,由容器来实例化和调用 Servlet的方法(如doGet()和doPost()),Servlet容器在Servlet的生命周期内包容和管理Servlet。在JSP技术 推出后,管理和运行Servlet/JSP的容器也称为Web容器。JSP的本质就是Servlet,JVM只能识别Java类,不能识别JSP代码,Web容器将JSP编译成JVM能够识别的Java类。

3.Servlet的作用

(1)接受客户端发送的请求
(2)调用方法,处理请求
(3)将处理的数据返回给Web服务器,生成动态的Web内容
在这里插入图片描述

4.servlet的生命周期

(1)实例化:Servlet容器调用Servlet的构造器,创建Servlet对象;一个Servlet类只会创建一个实例对象。
(2)初始化:Servlet容器调用Servlet实例对象的init()方法,且在整个生命周期中只执行一次该方法。
(3)服务:Servlet容器调用Servlet的service()方法并将请求和响应对象作为参数传递进去。
(4)销毁:当容器关闭时,Servlet容器调用Servlet的destory()方法,JVM对释放的内存进行回收。

5.在Eclipse中创建一个Servlet

(1)选中一个包,单击鼠标右键→“New”→“servlet”
在这里插入图片描述

(2)给新建的servlet命名,然后点击“Next”
在这里插入图片描述
(3)上一步完成后,再点击一次“Next”,会出现如下界面,选择要创建的方法
在这里插入图片描述
(4)完成上一步后,点击“Finish”,即完成servlet的创建,并显示默认代码
在这里插入图片描述

  • DoGet()t和DoPost()方法分别对应着HTTP请求的GET和POST请求方式,当请求方式为GET,则执行DoGet()方法对传递的数据进行处理;当请求方式为POST,则执行DoPost()方法对传递的数据进行处理。
6.Postman和servlet的结合使用

(1)postman下载地址:https://www.getpostman.com/downloads/
(2)打开Tomcat,将上面建好的servlet右击鼠标→“Run As”→“Run on Server”得到如图效果:
在这里插入图片描述
(3)打开Postman,将上面的Servlet运行生成的URL复制粘贴到Postman中
在这里插入图片描述
(4)定义请求参数
在这里插入图片描述
(5)在servlet中编写代码,接收并查看参数,此处以DoGet为例,对应get请求方式

protected void doGet(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
	// TODO Auto-generated method stub
	String username = request.getParameter("username");//接收参数
	System.out.println("username = "+ request.getParameter("username"));//输出参数

	response.getWriter().append("Served at: ").append(request.getContextPath());
}

(6)在Postman中点击“Send”,控制台显示结果:在这里插入图片描述

7.Servlet中页面跳转的两种方式:
  • 重定向:服务器告诉浏览器去请求另外一个页面,浏览器URL变为跳转后页面的URL,statusCode=302

response.sendRedirect("/blog/index.jsp");

仍然拿上面的ServletTest.java为例
编辑原码:

protected void doGet(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
	// TODO Auto-generated method stub
	response.sendRedirect("/blog/index.jsp");//跳转到blog目录下的index.jsp页面
	}

在谷歌浏览器输入地址:localhost:8080/blog/ServletTest
加载后显示:
在这里插入图片描述

  • 请求转发,服务器直接返回内容给浏览器,浏览器URL不变
    RequestDispatcher dispatcher = request.getRequestDispatcher(“index.jsp”);
    dispatcher.forward(request, response);

编辑原码:

protected void doGet(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
	// TODO Auto-generated method stub
	RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp");
	dispatcher.forward(request, response);
	}

在谷歌浏览器输入地址:localhost:8080/blog/ServletTest
加载后显示:
在这里插入图片描述
参考:https://blog.csdn.net/lz233333/article/details/68065749/
https://www.cnblogs.com/xdp-gacl/p/3760336.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值