2_ Servlet4.0

1 Servlet4.0

什么是Servlet

什么是Servlet

简介:是JavaServlet的简称,用Java编写的运行在Web服务器或应用服务器上的程序,具有独立于平台和协议的特性, 主要功能在于交互式地浏览和生成动态Web内容

作用:接收用户通过浏览器传来的表单数据,或者读取数据库信息返回给浏览器查看,创建动态网页
接口路径:package javax.servlet
有两个常见的子类:HttpServlet、GenericServlet
JavaWeb Servlet文档:https://tomcat.apache.org/tomcat-9.0-doc/servletapi/index.html

1)创建Class,继承HttpServlet

  1. 重写doGet方法,返回HTML内容
 public class UserServlet extends HttpServlet {
​
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
​
        //实战响应内容
        resp.setContentType("text/html;charset=utf-8");
​
        PrintWriter printWriter = resp.getWriter();
​
        printWriter.write("<div> 小滴课堂 xdclass.net 你好,让技术不再难学 </div>");
​
    }
}
  1. 配置web.xml
 <servlet>
        <servlet-name>userServlet</servlet-name>
        <servlet-class>net.xdclass.web.UserServlet</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>userServlet</servlet-name>
        <url-pattern>/userServlet</url-pattern>
    </servlet-mapping>

1.2 Servlet生命周期

Servlet 接口里面有5个方法,其中三个生命周期方法和两个普通方法
实例化->使用构造方法创建对象
初始化->执行init方法:Servlet 的生命期中,仅执行一次 init() 方法,它是在服务器装入 Servlet 时执行的,即第一次访问这个Servlet才执行

服务->执行service方法,service() 方法是 Servlet 的核心。每当一个客户请求一个HttpServlet 对象,该对象的service() 方法就要被调用

销毁-> 执行destroy方法,destroy() 方法仅执行一次,即在服务器停止且卸装 Servlet 时执行该方法

  • 查看继承和实现关系 XXXServlet->HttpServlet->GenericServlet->implements Servlet

  • HttpServlet里面实现了service方法,里面会根据不同的http method调用不同的方法,所以我们自定义servlet只要重写对应的doXXX方法即可

Servlet3.0~5.0和旧版配置的区别

  • 旧版Servlet,在xml里面配置类目和路径,比较不方便

  • 新版Servelt,也就是3.0之后,支持注解的方式

@WebServlet(name = "userServlet",urlPatterns = {"/user1","/user2","/test"})
public class UserServlet extends HttpServlet {
     @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
​
        System.out.println("doGet");
        //实战响应内容
        resp.setContentType("text/html;charset=utf-8");
​
        PrintWriter printWriter = resp.getWriter();
​
        printWriter.write("<div> doGet 你好,让技术不再难学 </div>");
​
    }
}
  • 配置项
//servlet名称,若不指定,则为Servlet的完整类名
String name() default "";
​
//路径映射,配置多个,需要/开头
 String[] value() default {};
​
//路径映射,支持配置多个,需要/开头
  String[] urlPatterns() default {};
​
 //标记容器是否在启动应用时就加载Servlet,默认或数值为负数时表示第一次请求Servlet时再加载;0或正数表示启动应用就加载
  int loadOnStartup() default -1;
​
 //配置初始参数
  WebInitParam[] initParams() default {};
​
//是否支持异步操作模式
 boolean asyncSupported() default false;

2 应用上下文和JSP核心知识

2.1 什么是应用上下文ServletContext

  • 什么是作用域对象:
    1.就是对象的生命周期,在javaweb开发里面有多个不同生命周期的对象
    2.比如:PageContext,ServletRequest,HttpSession,ServletContext;
    3.对象里面包含属性和对应的数据,所以不同作用域对象使用场景会不同

  • ServletContext:
    1.它代表了servlet环境的上下文,相当于一个全局存储空间
    2.同一个WEB应用程序中,所有的Servlet和JSP都可以共享同一个区域,是最大的作用域对象
    (webapps下的每个目录就是一个应用程序)
    四大作用域对象-用于存取数据(举个形象的例子):
    PageContext(页面)->ServletRequest(请求)->HttpSession(会话)->【ServletContext】(应用);
    生命周期:在WEB服务器启动时创建,服务器关闭时销毁

  • 加载应用默认参数

<context-param>
        <param-name>url</param-name>
        <param-value>xdclass.net</param-value>
    </context-param>
​
    <context-param>
        <param-name>username</param-name>
        <param-value>jack</param-value>
    </context-param>
  • 获取api
ServletContext servletContext = req.getServletContext();
String url = servletContext.getInitParameter("url");
System.out.println(url);
  • 存储全局数据(只要是同个应用,都可以共享这些数据,类似map结构)
servletContext.setAttribute("appInfo","xdclass.net info");
​
String appInfo = (String)servletContext.getAttribute("appInfo");
​
System.out.println("TestServlet appInfo="+appInfo);

2.2 什么是JSP和Servlet

  • 什么是JSP: 全称Java Server Pages,是一种动态网页开发技术;
    使用JSP标签在HTML网页中插入Java相关代码,标签通常以<%开头 以%>结束
    JSP本身就是一种Servlet, JSP在第一次被访问的时候会被编译为HttpJspPage类,是HttpServlet的一个子类
    为什么用这个:和原生Servle 相比JSP可以很方便的编写HTML网页而不用去大量的用println语句输出html代码
    通俗来说:jsp就是在html里面写java代码,servlet就是在java里面写html代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值