zoukankan      html  css  js  c++  java
  • 【JavaWeb】之Servlet

    一、Servlet简介

     1.1 什么是Servlet(server applet): 是一种独立于平台和协议的服务器端Java应用程序,通过Servlet可以生成动态web页面。还可以在服务器端对客户端的请求进行处理,控制程序的执行。

      作用:交互式的浏览和更新数据,并生成动态的页面内容展示。

      Servlet处理web请求过程:

      

    1. 服务器接受从客户端发送的请求
    2. 服务器将请求信息发送至Servlet
    3. Servlet经处理后,生成响应的内容
    4. 服务器将响应的内容返回客户端

      jsp和Servlet关系:Jsp被web容器解析时,最终会编译成一个Servlet类  

    1.2 Servlet API

    名称 说明 包名
    Servlet接口 Java Servlet的基础接口,定义类Servlet必须实现的方法 javax.srevlet
    GenericServlet类 继承自Servlet接口,属于通用的、不依赖于协议的Servlet javax.srevlet
    HttpServlet类 继承自GenericServlet类,是在其基础上拓展了HTTP协议的Servlet javax.srevlet.http
    HttpServletRequest接口 继承自ServletRequest接口,用于获取请求数据的读取 javax.srevlet.http
    HttpServletResponse接口 继承自ServletResponse接口,用于返回响应数据 javax.srevlet.http

    1.3 Servlet生命周期

      Servlet生命周期:Servlet从创建到销毁的过程。

      Servlet容器:用来装载Servlet对象的一种容器,是负责管理Servlet的一类组件。

      包括一下几个环节:

      1.加载和实例化。         

        Servlet容器负责加载和实例化Servlet,当客户端发送一个请求时,容器查找是否存在对应的Servlet实例,没有则创建一个,有则取出该实例来响应请求

      2.初始化。         

         容器完成Servlet实例化后,容器将调用Servlet的init()方法进行初始化,初始化的目的是让Servlet对象在处理客户端请求前完成一些初始化工作,如设置数据库连接参数、建立JDBC连接,或者建立对其他资源的引用。init()方法在java.servlet.Servlet接口中定义。(对于每一个Servlet实例,init()方法只被调用一次)

      3.提供服务,请求处理。

             Servlet被初始化后,就处于能响应请求的就绪状态。当Servlet容器接收到客户端请求时,调用Servlet的service()方法处理客户端请求。Servlet实例通过ServletRequest对象获得客户端的请求。通过ServletResponse对象的方法设置响应信息。

      4.销毁。

        容器判断一个Servlet是否应当被释放时(容器关闭或需要回收资源),容器就会调用Servlet的destroy()方法。destroy()方法知名哪些资源可以被系统回收,而不是由destroy()方法直接进行回收。

    二、Servlet应用

     2.1 创建Servlet三种方式

    • 实现Servlet接口
    • 继承GenericServlet类
    • 继承HttpServlet类
    package myproject;
    
    import java.io.IOException;
    
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class MyServlet extends HttpServlet{
        protected void doGet(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{
            System.out.println("调用doGet方法");
        }
        
        protected void doPost(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{
            System.out.println("调用doPost方法");
        }
        
        public void destroy(){
            System.out.println("Servlet 被销毁");
        }
        
        public void init(ServletConfig config)throws ServletException{
            System.out.println("Servlet 初始化");
            String initParam = config.getInitParameter("charSetConfig");
            System.out.println(initParam);
        }
    }

    2.2 Servlet的部署与运行

      部署Servlet需要配置web.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
      <display-name>myproject</display-name>
      
      <servlet>
          <servlet-name>myServlet</servlet-name>
          <servlet-class>myproject.MyServlet</servlet-class>
          <init-param>
              <param-name>charSetContent</param-name>
              <param-value>utf-8</param-value>
          </init-param>
      </servlet>
      <servlet-mapping>
         <servlet-name>myServlet</servlet-name> 
         <url-pattern>/test</url-pattern>
      </servlet-mapping>
      <welcome-file-list>
      
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
      </welcome-file-list>
    </web-app>
     

    web.xml常用的<url-pattern>设置有3中形式

    • <url-pattern>/xxx</url-pattern>。精确匹配,例如:<url-pattern>/helloserlvet</url-pattern>
    • <url-pattern>/xxx/*</url-pattern>。匹配路径,如果没有精确匹配,对/xxx/路径的说有请求将由该Servlet处理,例如:<url-pattern> /helloservlet/*</url-pattern>
    • <url-pattern>*.do</url-pattern>。如果没哦有精确匹配和路径匹配,则对所有的.do扩展名的请求将由该Servlet处理

    运行:浏览器输入http://localhost:8080/myproject/test

    控制台:

       

  • 相关阅读:
    IOS开发关于测试的好的网址资源
    创建型模式--工厂模式
    在XcodeGhost事件之后,获取更纯净的Xcode的方法。
    算法积累:解决如何获取指定文件夹路径或者文件路径下所有子文件后缀为.h .m .c的文本的行数
    结构型模式--装饰模式
    设计模式 总揽 通过这篇随笔可以访问所需要了解的设计模式
    IOS之未解问题--关于IOS图像渲染CPU和GPU
    链接
    Matlab2014下载和破解方法,以及Matlab很好的学习网站
    苹果Mac隐藏壁纸在哪里?Mac隐藏壁纸查找教程
  • 原文地址:https://www.cnblogs.com/Y-S-X/p/8906493.html
Copyright © 2011-2022 走看看