30、JAVA_WEB开发基础之servlet(1)

版权声明:chaizepeng https://blog.csdn.net/chaizepeng/article/details/86699241

servlet是什么

Servlet 是一种独立的 web 开发标准,用来接受、处理、返回浏览器的访问请求,它不应和服务器耦合在一起,servlet和servlet容器之间相互独立又相互依存,自我感觉,servlet有了容器才得以实现自己的价值,容器也因有了servlet而变得更加强大,servlet更像是一种规范和一种机制。Servlet 是 Java Web 技术的核心基础,通常我们说的Servlet一般指HttpServlet。

servlet的生命周期

servlet的生命周期有三个阶段:

1、初始化阶段 :在代码中的体现就是调用init方法实现servlet的初始化
      public void init(ServletConfig config) throws ServletException
2、相应客户请求阶段:在代码中的体现就是调用service方法
      public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException
3、终止阶段:在代码中的体现就是调用destroy方法进行注销操作
      public void destroy()

servlet的工作原理

servlet的基本工作就是接受客户端传来的请求,然后处理请求,最终将处理结果返回给客户端。这里使用HttpServlet来解释,其大致工作原理如下:

1、 当客户端往服务器发送一个请求时,服务器经过解析将请求交给servlet的service方法,请求最终发送到HttpServlet的service方法
2、 在Service方法,先通过请求对象,也就是HttpServletRequest来获取请求方式,然后根据请求方式来匹配决定调用get方法还是post方法来进行业务的处理
3、 请求将在get方法或者post方法中进行具体的逻辑和数据的处理,但是不管get方法还是post方法在HttpServlet中都没有具体的逻辑代码,所以继承HttpServlet之后,需要我们自己重写这两个方法
4、 经过一系列具体的处理后返回处理信息,再通过HttpServletResponse对象将处理信息逐级返回,信息是通过ServletResponse对象返回给客户端的
5、 信息返回给客户端之后,Servlet容器会调用Servlet的destroy()方法,用来释放掉Servlet所占用的资源,一些情况下也可能导致调用此方法:WEB应用被终止、Servlet容器终止运行、Servlet容器重新装载Servlet新实例等

servlet的执行流程

1、 服务器获取客户端传来的http请求
2、 服务器解析请求
3、 创建servlet实例
4、 调用init方法初始化servlet
5、 调用service方法进行请求的处理
6、 将处理后的数据返回,输出相应信息
7、 服务器响应客户端
8、 执行servlet的destroy方法销毁servlet

java中servlet的实现方式

java中实现servlet有三种方式:

1、 实现servlet接口
2、 继承Genericservlet抽象类
3、 继承httpservlet抽象类

一般使用第三种继承HttpServlet方式

一次完整访问的实例

/**
 * 1、创建一个web项目
 * 2、创建一个类,继承HttpServlet
 * 3、重写doGet或doPost方法
 * 4、servlet 3.0及以后使用 注解@WebServlet("/testServlet")来标记类为servlet,/testServlet为访问的servlet名
 * 5、添加web容器,启动服务,访问测试
 */
@WebServlet("/testServlet")
public class TestServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// getAttribute方法用于获取请求中的属性值
		Object name = request.getAttribute("name");
		// getParameter方法用于获取请求中的参数
		String namestring = request.getParameter("name");
		response.getWriter().write(namestring.toString());
	}
}

注意:这里用的是servlet 3.0标准,如果是之前的2.0及其之前标准是不存在WebServlet注解的,需要手动在web.xml文件中配置Servlet映射,建议使用3.0。

猜你喜欢

转载自blog.csdn.net/chaizepeng/article/details/86699241