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

    控制台:

       

  • 相关阅读:
    SAP的一些HR函数
    如何在sap的screen中使用ListBox
    关于SAP的SD的定价公式的资料(强力推荐,有时间我会进行翻译)
    如何设计和使用自定义的权限对象(自定义权限检查函数)
    [转载]ASP.NET面试题收集
    [转载]sql in与exists区别
    删除A数据表中的一行数据时,不小心将表名写成了B,现在想恢复B中刚删除的的着一行数据怎么办
    删除A数据表中的一行数据时,不小心将表名写成了B,现在想恢复B中刚删除的的着一行数据怎么办
    oracle优化总结经验
    oracle优化总结经验
  • 原文地址:https://www.cnblogs.com/Y-S-X/p/8906493.html
Copyright © 2011-2022 走看看