JavaWeb基础知识点之Servlet

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/w1lgy/article/details/79169527 一、servlet的概述servlet是采用java编写的运行在服务器上的程序,用于接受用户的请求,并针对请求产生响应。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/w1lgy/article/details/79169527

一、servlet的概述

servlet是采用java编写的运行在服务器上的程序,用于接受用户的请求,并针对请求产生响应。javax.servlet.Servlet是servlet的顶层接口,主要方法有init和destory,service三个方法。

二、编写servlet程序

servlet编写总共有3个步骤:
1、定义SendMsgServlet继承HttpServlet,并且放置在com.tanzhou.servlet包下。
2、通常重写init、destroy、doGet、doPost四个方法。
3、在web.xml中配置改servlet:全路径指定servlet类并起别名,同时可以设置参数(也可以不设置),然后设置servlet的映射路径,这样请求相应的路径就能访问到对应的servlet类中,其中在发送请求的时候,action的路径“/”开头的是绝对路径,没有“/”开头的是相对文件所在目录的路径。

  <servlet>
    <!-- 给servlet取个别名自定义,不能重名 -->
    <servlet-name>SendMsgServlet</servlet-name>
    <!-- 指定这个servlet是哪个类,全路径 -->
    <servlet-class>com.prosay.servlet.SendMsgServlet</servlet-class>
    <!-- 配置初始化的参数,可以使用ServletConfig来读取 -->
    <init-param>
        <param-name>keyword</param-name>
        <param-value>fuck,shit,cao</param-value>
    </init-param>
  </servlet>
  <!-- 2.配置Servlet的映射 浏览器中访问某个资源的时候怎么知道这个资源是哪个java类 -->
  <servlet-mapping>
    <!-- 指定位哪个servlet配置映射 -->
    <servlet-name>SendMsgServlet</servlet-name>
    <url-pattern>/chatroom/send</url-pattern>
  </servlet-mapping>

三、servlet生命周期

这里写图片描述

四、get和post的区别

这里写图片描述

五、ServletContext

ServletContext是servlet上下文对象,收缩压servlet共享的一片内存空间,我们可以把数据存储在片内容空间中,实现在多个servlet当中共享数据。
在servlet中可以通过this.getServletContext()来获取上下文对象,通过setAttribute设置上下文对象属性,通过getAttribute获取上下文对象属性。
初始化默认加载的初始化servlet的init方法:

ServletContext application = this.getServletContext();
//第一次访问(初始化)创建一个ArrayList用来存储消息列表,然后将这个ArrayList实例存入Servlet上下文中
List<String> msgs = new ArrayList<String>();
//servletContext存属性方式 setAttribute(String attrName,Object attr)
application.setAttribute("msgs",msgs);

获取上下文对象属性:

//获取上下文对象
ServletContext application = this.getServletContext();
//this.getServletConfig();获取配置信息,这个配置信息是web.xml中配置的
//从上下文中获得已有的消息列表
List<String> msgs = (List<String>)application.getAttribute("msgs");

六、load-on-startup

servlet默认情况下是在服务器启动之后,第一次从web上访问后才会执行init方法初始化。我们可以在web.xml配置servlet的时候通过设置loadOnStartup来控制servlet的实例化时间。
分三种情况:
1、loadOnStartup < 0
即负数的情况下,web容器启动的时候不做实例化处理,servlet首次被调用时做实例化。
这种情况和没有设置loadOnStartup是一样的。
2、loadOnStartup > 0
web容器启动的时候做实例化处理,顺序是由小到大,正整数小的先被实例化。
3、loadOnStartup = 0
web容器启动的时候做实例化处理,相当于是最大整数,因此web容器启动时,最后被实例化。

  <servlet>
    <servlet-name>init</servlet-name>
    <servlet-class>com.prosay.servlet.InitServlet</servlet-class>
    <!-- 配置应用启动,servlet进行初始化调用  数字越小启动越靠前-->
    <load-on-startup>0</load-on-startup>
  </servlet>

七、ServletConfig

每一个servlet都对应在web.xml中有一段配置,ServletConfig对象真是读取这段专属servlet的配置文件信息。可以通过配置一些外部参数更加灵活的让servlet工作。

private String[] keywords ;
ServletConfig config = this.getServletConfig();
String keyword = config.getInitParameter("keyword");
keywords = keyword.split(",");

八、会话跟踪

1、会话跟踪概念

  • Java Servlet使用session来跟踪和管理会话内的状态。利用session,服务器可以把一个客户的所有请求联系起来,并记住客户的操作状态。
  • 当客户第一次连接到服务器时,服务器为其建立一个session对象,并分配给客户一个唯一的标识(sessionID),以后客户每一次请求都要将这个标识一起提交。
  • 服务器根据这个特定的表示找到特定的session对象,读取或者记录用户的信息。

2、会话跟踪的四种技术

  • 隐藏表单域:在表单域中添加一个隐藏的input,存放用户做为唯一识别信息,并一起提交给后台。
  • URL重写:在URL上加上用户唯一识别信息。
  • Cookie
  • Session

Cookie:

Cookie”是小量信息,由网络服务器发送出来以存储在网络浏览器上,从而下次这位独一无二的访客又回到该网络服务器时,可从该浏览器读回此信息。可以辨别用户身份、进行session跟踪而储存在用户本地终端上的数据.
工作原理:
首先,服务器端在响应中利用Set-Cookie header来创建一个Cookie ,然后,浏览器在它的请求中通过Cookie header包含这个已经创建的Cookie,并且把它返回至服务器,从而完成浏览器的论证。

HttpSession:

HttpSession存/取值:

  • 获得session对象 HttpSession session =request.getSession();
  • 存数据:session.setAttribute(key,value);
  • 销毁:session.invalidate();
  • 设置时长:session.setMaxInactiveInterval(sec);

HttpSession生命周期

HttpSession生命周期 :
Servlet容器从创建Session对象到销毁的过程。Servlet容器会依据Session对
象设置的存活时间,在达到Session时间后将Session 对象销毁。
设置Session存活时间的方式有三种:
一、session.setMaxInactiveInterval(interval)方法体内的参数interval为秒。
二、web.xml里配置如下信息

<session-config>
<session-timeout>时间长度(单位为分钟)</session-timeout>
</session-config>

三、在tomcat/conf/server.xml中定义defaultSessionTimeOut=时间长度
(分钟)

目录
相关文章
|
3月前
|
缓存 Java 应用服务中间件
javaweb实训第三天上午——Servlet(1)
Servlet基础 课程介绍 Servlet基础; (掌握) 基本结构 生命周期 执行流程 接收参数 响应数据
52 0
|
4月前
|
小程序 Java 应用服务中间件
【JavaWeb学习】—Servlet(十三)
【JavaWeb学习】—Servlet(十三)
|
7月前
|
安全 Java 应用服务中间件
【JavaWeb】Tomcat底层机制和Servlet运行原理
网络通信:Tomcat使用Java的Socket API来监听特定的端口(通常是8080),接收来自客户端的HTTP请求。 线程池:Tomcat使用线程池来处理并发的请求。当有新的请求到达时,Tomcat会从线程池中获取一个空闲线程来处理该请求,这样可以提高处理效率。 生命周期管理:Tomcat负责管理Servlet和其他Web组件的生命周期,包括初始化、请求处理和销毁等阶段。(init(), run())
|
7月前
|
数据安全/隐私保护
JavaWeb用户信息管理系统-创建登录业务的Servlet
JavaWeb用户信息管理系统-创建登录业务的Servlet
29 0
|
3月前
|
存储 前端开发 Java
JavaWeb:servlet+jsp+mybatis商品管理增删改查
商品管理通常包括增加(添加)、删除、修改和查询商品信息
54 1
JavaWeb:servlet+jsp+mybatis商品管理增删改查
|
3月前
|
安全 Java
javaweb实训第四天下午——员工管理系统-JSP&Servlet&JDBC综合练习-CRUD
1.课程介绍 Servlet细节; (掌握) 员工信息相关的CRUD; (掌握) 部门信息相关的CRUD; (掌握) 2.Servlet细节 2.1.多种匹配方式
40 0
|
3月前
|
编解码 应用服务中间件 数据库
|
4月前
|
小程序 应用服务中间件 数据库连接
|
6月前
|
存储 设计模式 JavaScript
掌握JavaWeb开发的必备技能:Servlet、JSP、Cookie、Session、EL、JSTL详解 ~~~~B站老杜--Servlet-JSP-课堂笔记(三)
当某个特殊的事件发生(特殊的事件发生其实就是某个时机到了。)之后,被web服务器自动调用。 思考一个业务场景
47 0
|
7月前
|
Java 中间件 应用服务中间件
【JavaWeb】知识总结Ⅶ(Servlet)
什么是 Servlet? Servlet(Server Applet),全称Java Servlet,未有中文译文。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。