zoukankan      html  css  js  c++  java
  • Servlet基础解析

    创建第一个sevlet案例(通过黑窗口)

    创建servlet(浏览器页面输入内容)

    package com.hhxx.servlet;
    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest; 
    import javax.servlet.http.HttpServletResponse;
    
    public class HelloWorld extends HttpServlet {
    public void doGet(HttpServletRequest request,HttpServletResponse response)
    throws ServletException, IOException { 
        PrintWriter out = response.getWriter();
    
        out.println("<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01Transitional//EN">"); out.println("<HTML>");
        out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");     out.println(" <BODY>");
        out.println("<font color=red>Hello World111</font>");       out.println(" </BODY>");
        out.println("</HTML>"); out.flush();
        out.close();
        } 
    }
    
    • 由于javax包是Tomcat提供的,因此需要使用命令进行导入,否则无法编译,会报错,servlet包位于tomcat的lib目录中
    C:java>javac -classpath "C:javaTomcatapache-tomcat-9.0.34libservlet-api.jar" HelloWorld.java
    

    web.xml创建

    • 什么是web.xml是项目部署描述文件,tomcat启动时会先解析该配置文件获得项目配置信息,因此必须有web.xml文件,来配置servle等技术
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    version="4.0">
    
    <servlet>
    <servlet-name>HelloWorld</servlet-name>
    <servlet-class>com.hhxx.servlet.HelloWorld</servlet-class> </servlet>
    
    <servlet-mapping> 
    <servlet-name>HelloWorld</servlet-name>
    <url-pattern>/hello</url-pattern>
    </servlet-mapping> 
    </web-app>
    

    servlet-name:标签名(别名随意取)
    servlet-class:全名(包名+类名)
    servlet-mapping标签:用于url和servlet的映射(绑定)
    需要注意的是url-pattern标签中url随便写,但一定要加/

    servlet部署与访问

    • servlet就相当于一个应用程序,而tomcat的webapps用于存放应用,但不是将文件直接拖入需要建立一个web工程进行部署(对应的文件包)
      文件部署
    • helloworld即编译好的.class文件
    • 完成上述文件夹的相应创建,就可以启动tomcat,启动完成,浏览器输入我们的URL:http://localhost:8080/servletdemo/hello
      localhost:8080:这是访问tomcat地址
      servletdemo:项目名
      hello:这个项目下的hello
      访问结果:

    继承结构

    sevlet生命周期

    servlet生命周期是由容器管理的(tomcat),分别经历3个阶段

    • inin():初始化
    • service():服务
    • destroy():销毁
      当客户端浏览器第一次请求 Servlet 时,容器会实例化这个 Servlet,然后调用一次 init 方法(是在GenericServlet实现的),并在新的线程中执行 service 方法处理请求。service 方法执行完毕后容器不会销毁这 个 Servlet 而是做缓存处理,当客户端浏览器再次请求这个 Servlet 时,容器会从缓存中直接 找到这个 Servlet 对象,并再一次在新的线程中执行 Service 方法。当容器在销毁 Servlet 之 前对调用一次 destroy 方法(destory()方法)不是来销毁Servlet的,而是完成资源释放功能的。

    sevlet处理请求的原理

    当浏览器基于 get 方式请求我们创建 Servlet 时,我们自定义的 Servlet 中的 doGet 方法 会被执行。doGet 方法能够被执行并处理 get 请求的原因是,容器在启动时会解析 web 工程 中 WEB-INF 目录中的 web.xml 文件,在该文件中我们配置了 Servlet 与 URI 的绑定,容器通 过对请求的解析可以获取请求资源的 URI,然后找到与该 URI 绑定的 Servlet 并做实例化处理 (注意:只实例化一次,如果在缓存中能够找到这个 Servlet 就不会再做次实例化处理)。在实 例化时会使用 Servlet 接口类型作为引用类型的定义,并调用一次 init 方法,由于 HttpServlet 中重写了该方法所以最终执行的是 HttpServlet 中 init 方法(HttpServlet 中的 Init 方法是一个空 的方法体),然后在新的线程中调用 service 方法。由于在 HttpServlet 中重写了 Service 方法 所以最终执行的是 HttpServlet 中的 service 方法。在 service 方法中通过 request.getMethod() 获取到请求方式进行判断如果是 Get 方式请求就执行 doGet 方法,如果是 POST 请求就执行 doPost 方法。如果是基于 GET 方式提交的,并且在我们自定义的 Servlet 中又重写了 HttpServlet 中的 doGet 方法,那么最终会根据 Java 的多态特性转而执行我们自定义的 Servlet 中的 doGet 方法。

    sevlet的作用

    • 获取用户提交数据
    • 获取浏览器附加信息
    • 处理数据(访问数据库或调用接口)
    • 给浏览器产生一个响应
    • 在响应中添加附加信息
    悲观者正确,乐观者成功
  • 相关阅读:
    【iCore4 双核心板_FPGA】例程八:乘法器实验——乘法器使用
    【iCore4 双核心板_ARM】例程十一:DMA实验——存储器到存储器的传输
    【iCore1S 双核心板_FPGA】例程八:触发器实验——触发器的使用
    【iCore4 双核心板_ARM】例程十:RTC实时时钟实验——显示时间和日期
    【iCore4 双核心板_ARM】例程九:ADC实验——电源监控
    WebBrowser的Cookie操作之流量刷新机
    网站受攻击的常用手段
    八爪鱼招标网的百度权重升为2了,独立IP也从0快速发展为1000
    网站添加数据出错,原来是MS SQL Server2008日志文件占据空间过大导致的
    当你的网站被疯狂攻击时你能做什么?
  • 原文地址:https://www.cnblogs.com/freebule/p/13632716.html
Copyright © 2011-2022 走看看