Servlet学习(一)

servlet是什么

Servlet 是JavaWeb的三大组件(Servlet,Filter,Listener)之一,它属于动态资源,Servlet的作用是处理请求,在服务器上运行以处理客户端请求并做出响应。

Servlet生命周期

1.地址栏请求一个servlet
2. web容器(tomcat服务器)解析该请求,在web.xml文件中查找是 否有对应路径servlet类
3. 实例化该servlet类
4. 调用servlet对象中的init方法,初始化。
5. 根据请求的提交方式是post还是get(默认),调用对应dopost或者doget方法。
6.调用Service方法
7. 输出响应信息
8 .自行调用destory方法将servlet销毁

Servlet执行流程

  • 建一个Servlet类,进行web.xml配置
 <servlet>
        <!--servlet名,自定义  -->
        <servlet-name>TestServlet</servlet-name>
        <!--servlet包名+类名  -->
        <servlet-class>com.sunsharing.servlet.TestServlet</servlet-class>
    </servlet>
    <servlet-mapping>
       <!--servlet名,和上面名称一致 -->
        <servlet-name>TestServlet</servlet-name>
        <!--servlet映射路径  -->
        <url-pattern>/TestServlet</url-pattern>
    </servlet-mapping>

注意:<url-pattern>/TestServlet</url-pattern>不能漏掉斜杠/

  • 访问Servlet的流程
    (1)浏览器请求,服务器在web.xml中的<servlet-mapping>寻找对应的url(url-pattern)地址,得到servlet名称。
    (2)根据servlet名称寻找servlet-class文件对应的类
    (3)根据请求方式是get或者post执行相应的doGet或doPost方法。

Servlet三大域对象

对象名称对象类型
requestHttpServletRequest
sessionHttpSession
applicationServletContext

request
作用域:一次请求有效
获取表单提交参数: request.getParameter()
传值到表单: request.setAttribute()
设置编码:getCharacterEncoding()

session
1.作用域:一次回会话期间(浏览器开启到关闭)
常用于用户登录验证页面,登录成功后把登录信息存到session域中。
2.销毁session:
(1).session超时;可以调用setMaxInactiveInterval(int interval) (以秒为单位)方法设置 session 会话超时,也可以在web.xml设置 session 会话超时

  <session-config>
    <session-timeout>20</session-timeout>
  </session-config>

注:以分钟为单位,将覆盖 Tomcat 中默认的 30 分钟超时时间。
(2)非正常关闭浏览器(关闭浏览器再次访问会找不到session的会话id而不是session被销毁了);
(3)调用session. invalidate().

application
作用域:服务器开启到关闭(tomcat启动时创建,tomcat关闭时销毁)
常用于计算在线人数

servlet的请求和响应

  • servlet处理请求
    (1)客户端对Web服务器发出HTTP请求
    (2)服务器收到请求后,转发给web容器(Tomcat),web容器根据请求的URL去调用客户端要访问的Servlet。
    (3)web容器根据web.xml查找要访问的Servlet,如果找到,实例化,调用Servlet实例中的service方法处理请求,并分配一个线程去执行。
    (4)如果没找到,返回404的错误代码到客户端,表示访问的资源不存在。

  • servlet处理响应
    设置http响应头,HTTP响应头用于告诉客户端:发送回来的内容的类型、有多少内容被正在发送以及发送内容的服务器的类型等等。

过滤器Filter

filter与servlet在很多的方面极其相似,但是也有不同,例如filter和servlet一样都有三个生命周期方法,同时他们在web.xml中的配置文件也是差不多的、 但是servlet主要负责处理请求,而filter主要负责拦截请求,和放行。
Servlet 过滤器可以动态地拦截请求和响应,调用servlet前先调用过滤器。
创建filter,配置web.xml

<filter>
        <filter-name>TestFilter</filter-name>
        <filter-class>com.sunsharing.filter.TestFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>TestFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

过滤器中doFilte()可以获取请求信息,进行过滤处理。
过滤器常用于编码过滤,判断用户登录状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值