zoukankan      html  css  js  c++  java
  • JavaWeb 之 Servlet 简介与应用

    一、Servlet 技术

      1、概念

        Servlet:server applet,是指运行在服务器端的小程序。

        Servlet 就是 JavaEE 规范之一。(规范就是接口)

        Servlet 就是 JavaWeb 三大组件之一。(三大组件分别是:Servlet程序、Filter 过滤器、Listener监听器)

        Servlet 就是运行在服务器上的一个 Java 小程序。(它可以接收客户端发送过来的请求,并响应数据给客户端

      2、Servlet

        Servlet 就是一个接口,定义了 Java 类被浏览器访问到(Tomcat识别)的规则。

        

    二、Servlet 入门案例

      1、编写步骤

        手动实现 Servlet 程序:

        (1)编写一个类去实现 Servlet 接口;

        (2)实现 service 方法,处理请求,并响应数据;

        (3)到 web.xml 中去配置 servlet 程序的访问地址;

      2、入门案例

        (1)创建 JavaEE 项目

        (2)定义一个类,实现 Servlet 接口

    public class HelloServlet implements Servlet{}

        (3)实现接口中的抽象方法

     1 import javax.servlet.*;
     2 import java.io.IOException;
     3 
     4 /**
     5  * @author njf
     6  * on 2021/8/6
     7  */
     8 public class HelloServlet implements Servlet {
     9     @Override
    10     public void init(ServletConfig config) throws ServletException {
    11 
    12     }
    13 
    14     @Override
    15     public ServletConfig getServletConfig() {
    16         return null;
    17     }
    18 
    19     /**
    20      * service 方法是专门用来处理请求和响应的
    21      * @param req
    22      * @param res
    23      * @throws ServletException
    24      * @throws IOException
    25      */
    26     @Override
    27     public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
    28         System.out.println("Hello Servlet被访问了");
    29     }
    30 
    31     @Override
    32     public String getServletInfo() {
    33         return null;
    34     }
    35 
    36     @Override
    37     public void destroy() {
    38 
    39     }
    40 }

        (4)配置 Servlet ,在 web.xml 里面配置

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
     3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
     5          version="4.0">
     6 
     7     <!--配置servlet-->
     8     <servlet>
     9         <!--servlet名称-->
    10         <servlet-name>HelloServlet</servlet-name>
    11         <!--servlet全类名-->
    12         <servlet-class>com.njf.java.HelloServlet</servlet-class>
    13     </servlet>
    14     
    15     <servlet-mapping>
    16         <!--servlet名称-->
    17         <servlet-name>HelloServlet</servlet-name>
    18         <!--映射路径-->
    19         <url-pattern>/hello</url-pattern>
    20     </servlet-mapping>
    21 </web-app>

        Demo:

        

      3、配置 xml 常见错误

        (1)错误1:url-pattern 中配置的路径没有以斜杠开头。

        

        (2)错误2:servlet-name 写错了,配置的值不存在。

        

        (3)错误3:servlet-class 标签的全类名配置错误。

        

      4、注意

        Servlet 接口是在 javax.servlet 包里的,要想使用此类,需要给模块添加 Tomcat 运行环境或者添加 javax.servlet-api.jar到环境中。

    三、执行原理(url如何访问到Servlet程序)

        (1)当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径

        (2)查找 web.xml 文件,是否有对应的<url-pattern>标签体内容。

        (3)如果有,则在找到对应的<servlet-class>全类名

        (4)Tomcat会将字节码文件加载进内存,并且创建其对象

        (5)调用其方法

         示意图:

        

  • 相关阅读:
    Codeforces Round #321 (Div. 2) D. Kefa and Dishes 状压dp
    Codeforces Round #406 (Div. 2) D. Legacy 线段树建模+最短路
    HDU 4897 Little Devil I 树链剖分+线段树
    HDU 5405 Sometimes Naive 树链剖分+bit*****
    HDU 5274 Dylans loves tree 树链剖分+线段树
    BZOJ 2243: [SDOI2011]染色 树链剖分+线段树区间合并
    HDU 5544 Ba Gua Zhen dfs+高斯消元
    HDU 3949 XOR 线性基
    BZOJ 2460: [BeiJing2011]元素 线性基
    Educational Codeforces Round 18 C. Divide by Three DP
  • 原文地址:https://www.cnblogs.com/niujifei/p/15107080.html
Copyright © 2011-2022 走看看