java之Servlet学习(适合新人)

最近有人私信我说,我写的博客有些肤浅,没有深究,在此我统一回复一下,这些博客大多都是概念性东西,是用通俗的例子让你理解这个技术或者知识到底是怎么一样原理。
所以我在后面都加着适合新人,我们都是从新人走过来的,知道初学者的那种迷茫,只会代码,不懂原理和含义,就比如,注解,你不去学习理解,初学者根本就不知道那是个什么东西,为什么要使用注解。
如果是资深大牛,那就不要看了,还是那句话,适合新人。

1,Servlet是什么?

个人理解:

Servlet就是用Java语言来编写动态资源的开发技术;

官方回答:

Servlet是sun公司提供的一门用于开发动态web资源的技术。

Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:

   1、编写一个Java类,实现servlet接口。    
   2、把开发好的Java类部署到web服务器中。      

按照一种约定俗成的称呼习惯,通常我们也把实现了servlet接口的java程序,称之为Servlet

2,什么是动态资源,静态资源;

静态资源:源码不会发生改变
动态资源:源码随时会发生改变

3,Servlet的实现案例

Servlet是基于Web项目的的!主要功能在于交互式地浏览和生成数据,生成动态Web内容。

  1. 创建一个web项目,书写java代码
    这是一个新创建的Web项目
    1.2 ServletDemo里面的代码
package com.aaa.Servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


/**
 * 
* 项目名称:ServletDemo  
* 类描述:(Servlet简单是实现)
* 创建人:莫参商 
* 创建时间:2020-1-15 下午3:15:53  
* 修改人:acer     
* @version   
*   
 */
//继承HttpServlet
public class ServletDemo extends HttpServlet{
	//重写doGet方法
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		System.out.println("hello");
		resp.getWriter().write("hello AAA");
	}
}
  1. 配置Web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name></display-name>	
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
  
	  <servlet>
	     <!-- servlet 自定义名称   可以理解为这里是创建了ServletDemo的Servlet -->
	     <servlet-name>ServletDemo</servlet-name>
	     <servlet-class>com.aaa.Servlet.ServletDemo</servlet-class>
	  </servlet>
	  
       <!-- 映射  可以理解为:使用Servlet-->
       <servlet-mapping>
         <servlet-name>ServletDemo</servlet-name>
         <!-- 映射的路径 -->
         <url-pattern>/ServletDemo</url-pattern>
       </servlet-mapping>
</web-app>
  1. 然后使用tomcat启动,运行结果为;

在这里插入图片描述
在这里插入图片描述

总结这就是最基本的Servlet模型

4,Servlet的注解版本

首先这个注解版本是 Servlet3.0以上使用,注解自动映射@webServlet

从上面的代码我们可以看出来,每创建一个Servlet就需要在Web.xml文件里面配置,这样的话非常的麻烦,而注解版本出来后,直接使用注解,就不用配置Web.xml文件了。

直接看代码:

package com.aaa.Servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 
* 项目名称:ServletDemo  
* 类描述:("Servlet注解版本")
* 创建人:莫参商 
* 创建时间:2020-1-15 下午3:58:00  
* 修改人:acer     
* @version   
*   
 */


@WebServlet("/ServletDemo01")
public class ServletDemo01 extends HttpServlet{
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		  System.out.println("hello");
		  resp.getWriter().write("hello AAA");
	}

}

这样无需配置web.xml文件就能运行。

Servlet的运行流程

  1. tomcat 加载web.xml配置;
  2. 当请求发送过来的时候,比如:请求的是ServletDome就会找到ServletDome配置;
  3. 读取serclet配置,解析servlet-class;
  4. 通过java的反射机制调用class.forName class.newInestance();无参构造函数创建servlet对象;
  5. 先执行ServletDome的构造函数;
  6. 执行init();
  7. 执行servvice方法,判断是什么请求,最后执行具体的方法。
  8. 服务器被停止,走destroy()方法;

拓展:

现在使用Servlet的已经很少了,前几年非常火的SSH,里面用到了Servlet;
然后是SSM,SSM里面用了SpringMVC,可能许多人都以为Servlet被淘汰了,其实不然,SpringMVC其实就是以Servlet作为基石然后发展而来的,本质上的原理与Servlet相同,包括面试上基本都会问有关Servlet的问题。

发布了14 篇原创文章 · 获赞 15 · 访问量 4302

猜你喜欢

转载自blog.csdn.net/qq_41566219/article/details/103989504