1.Servlet

作者: _麻辣香锅不要辣 | 来源:发表于2019-11-08 10:57 被阅读0次

概念

Servlet(server applet)就是运行在服务器端的小程序,Servlet是一个接口,定义了Java类被浏览器访问到(Tomcat识别)的规则。

例子

1.创建JavaEE项目
2.定义一个类,实现Servlet接口
3.实现接口中的抽象方法
4.配置Servlet(2.5在web.xml中配置,3.0用注解的方式配置)

public class ServletDemo implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("hello");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}
<?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_3_1.xsd"
         version="3.1">
<servlet>
        <servlet-name>first_servlet</servlet-name>
        <servlet-class>cn.yb.test.ServletDemo</servlet-class>
        <!--指定Servlet创建的时机-->
        <!--1.第一次访问时创建-->
        <!--load-on-startup 值为负数-->
        <!--2.在服务器启动时创建-->
        <!--load-on-startup 值为正数-->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>first_servlet</servlet-name>
        <url-pattern>/firstservlet</url-pattern>
    </servlet-mapping>
</web-app>

3.0中使用@WebServlet注解

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface WebServlet {
    String name() default "";

    String[] value() default {};

    String[] urlPatterns() default {};

    int loadOnStartup() default -1;

    WebInitParam[] initParams() default {};

    boolean asyncSupported() default false;

    String smallIcon() default "";

    String largeIcon() default "";

    String description() default "";

    String displayName() default "";
}

原理

1.当服务器接收到客户端浏览器的请求后,会解析请求url的路径,获取访问的Servlet的资源路径
2.查找web.xml文件,是否有对应的<url-pattern>
3.有的话,tomcat会根据对应的<servlet-class>的全类名,将字节码文件加载进内存,并且创建其对象
4.调用其方法


1.png

Servlet体系结构

Servlet --- 接口
GenericServlet --- 抽象类
HttpServlet---抽象类

  • GenericServlet:将Servlet接口中其他的方法做了默认的空实现,只将service()方法作为抽象方法
  • HttpServlet:对http协议的一种封装,简化操作
public class ServletDemo1 extends GenericServlet {
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("hello");
    }
}
public class ServletDemo1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doGet(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

相关文章

网友评论

      本文标题:1.Servlet

      本文链接:https://www.haomeiwen.com/subject/gwzclctx.html