当前位置: 首页 > news >正文

关于JavaWeb中的组件-------Servlet

Servlet是JavaWeb三大组件中最基础的组件,十分重要。

Servlet,即Server Let的意思,用来处理用户请求。当客户端发出请求后,由Tomcat去找到可以处理这一请求的Servlet来处理。我们也可以这么理解,用户发出登录请求后,tomcat会找到负责处理用户登陆的servlet来进行处理。

Servlet是运行在web中的小型Java程序,通过HTTP协议来处理web客户端的请求。但Servlet一定要实现javax.servlet.Servlet接口,并且还要在web.xml文件中部署!不然Tomcat是找不到我们写的Servlet的。

JavaWeb请求响应流程

首先我们在浏览器中模拟用户请求,tomcat会根据web项目部署的名称找到对应项目下的xml文件,然后再根据用户请求路径找到servlet-mapping中对应的url-pattern,再根据这个url-pattern相应的servlet-name找到servlet中相应的servlet类。然后调用具体的service方法即可完成对应操作。

Servlet生命周期

javax.servlet.Servlet接口中,有三个方法说明了Servlet的生命周期:

  • void init(ServletConfig):创建后马上调用init()完成初始化;
  • void service(ServletRequest,ServletResponse):每次处理请求时调用service()方法;
  • void destroy():当Tomcat要销毁Servlet实例时,先调用destroy()方法。

HttpServlet

用户如今的请求都是基于HTTP的,所以我们应该专门为HTTP请求写一个Servlet做为通用父类。

HttpServlet专门用来处理HTTP请求。

那么如何创建HttpServlet呢?

第一种方法:

1、创建一个类继承HttpServlet

package cn.tx.servlet;

import javax.servlet.http.HttpServlet;

public class Servlet2 extends HttpServlet{
   
}

2、配置Servlet的映射路径

<servlet>
    <
servlet-name>hello2</servlet-name>
    <
servlet-class>cn.tx.servlet.Servlet2</servlet-class>
</
servlet>

<
servlet-mapping>
    <
servlet-name>hello2</servlet-name>
    <
url-pattern>/hello2</url-pattern>
</
servlet-mapping>

第二种方法:直接在idea中创建servlet类,自己填写url-pattern即可。

ServletContext简要介绍

ServletContext是一个全局的储存信息的空间,服务器开始,其就存在,服务器关闭,其才释放。它的作用:

  • 获取WEB应用的全局初始化参数
  • 通过ServletContext对象实现数据共享

举例:利用ServletContext来统计站点访问次数:

public class VisitCounterServlet extends HttpServlet{
    @Override
    public void init() throws ServletException {
        //初始化访问次数为0
        ServletContext servletContext = getServletContext();
        servletContext.setAttribute("visitCount",0);
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置响应内容格式
        resp.setCharacterEncoding("UTF-8");
        resp.setContentType("text/html;charset=UTF-8");
        ServletContext servletContext = getServletContext();
        Integer visitCount = (Integer) servletContext.getAttribute("visitCount");
        visitCount++;
        servletContext.setAttribute("visitCount",visitCount);
        // 向客户端输出访问次数
        resp.getWriter().println("<html><body>");
        resp.getWriter().println("<h1>欢迎访问本站!</h1>");
        resp.getWriter().println("<p>您是第 " + visitCount + " 位访问者。</p>");
        resp.getWriter().println("</body></html>");
    }
}

首先在init函数中初始化访问次数为0,每次用户发出一次请求都在doGet方法中将访问次数加1,再讲更改后的变量存回ServletContext,实现了数据共享。

相关文章:

  • 企业业务安全进阶之路:AI技术与数据分析的应用
  • 解析Excel表表头
  • 淘宝/天猫获得淘宝商品快递费用 API 返回值说明
  • 2.25作业
  • 滑动验证组件-微信小程序
  • level2Day5
  • Postgresql-重置统计信息(reset statistics)
  • 二分查找理解
  • 数据挖掘中特征发现与特征提取的数学原理
  • 30 分钟从零开始入门 CSS
  • 【考研】复试相关上机题目
  • 【心得】缓存穿透与缓存击穿总是记混,一文从英语单词含义角度分析带你区分清楚!
  • github 推送的常见问题以及解决
  • 【TVM教程】为 NVIDIA GPU 自动调度神经网络
  • python-leetcode-柱状图中最大的矩形
  • ai大模型自动化测试-TensorFlow Testing 测试模型实例
  • 银行应用系统全生命周期管理制度设计
  • Java进阶学习笔记18——接口的注意事项
  • 深入解析Java线程优先级的奥秘
  • VUE 获取视频时长,无需修改数据库,前提当前查看视频可以得到时长
  • 上海网站建设招聘/最新网络营销方式有哪些
  • 网站建设资料清单/百度问一问付费咨询
  • 大连模板网站制作服务/代运营哪家比较可靠
  • 贵州省住房及城乡建设部网站/品牌seo培训
  • 做内容网站好累/免费seo推广计划
  • 国外做文化的网站/专业黑帽seo推广