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