Servlet
Servlet
勤劳的开发者px 发表于1个月前
Servlet
  • 发表于 1个月前
  • 阅读 1
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

Servlet

Servlet是sun公司提供的一门用于开发动态web资源的技术。

Sun公司在其API中提供了一个servlet接口,用户若想开发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:

1.编写一个Java类,实现servlet接口。

2.把开发好的Java类部署到web服务器中

Servlet的执行过程

Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序。

Servlet的运行过程

Servlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后:

  1.   Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是, 则直接执行第④步,否则,执行第②步。
  2.  装载并创建该Servlet的一个实例对象。
  3. 调用Servlet实例对象的init()方法。
  4. 创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。
  5.  WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法。

Servlet的生命周期

生命周期 : 从出生到死亡经历的过程

Servlet的作用:

接受请求数据(url) / 解析web.xml匹配请求,获得全类名,反射调用service方法(处理请求) / 写出响应

init(ServletConfig config)

  1. 调用时机 : 第一次访问时
  2. 调用次数 : 只会执行一次
  3. 调用者 : Tomcat服务器
  4. 用途 : 初始化Servlet

service(ServletRequest req,ServletResponse res)

  1. 调用时机 : 被访问时
  2. 调用次数 : 每次请求服务器都会开启一个新的线程,执行该方法一次
  3. 调用者 : Tomcat服务器
  4. 用途 : Tomcat服务器会在每次调用service()方法时,为该方法创建Request对象(封装了客户端传递过来的数据)和Response对象(可以用于生成响应),所以该方法可以用于处理请求和生成响应.

destroy()

  1. 调用时机 : 服务器正常关闭或Servlet被移除时
  2. 调用次数 : 只会执行一次
  3. 调用者 : Tomcat服务器
  4. 用途 : 销毁Servlet

在Servlet的整个生命周期内,Servlet的init方法只被调用一次。而对一个Servlet的每次访问请求都导致Servlet引擎调用一次servlet的service方法。对于每次访问请求,Servlet引擎都会创建一个新的HttpServletRequest请求对象和一个新的HttpServletResponse响应对象,然后将这两个对象作为参数传递给它调用的Servlet的service()方法,service方法再根据请求方式分别调用doXXX方法。

Servlet中API的简介

获取客户端传递的请求参数

  • request.getParameter(String name),传入的参数就是form表单中name属性的值

  • 向客户端输出数据

    • response.getWriter().write()

    • response.getWriter().print()

    • 以上两个方法其实是一样的,print()是对write()方法的封装,可以输出更多类型的数据

url-pattern的三种配置方式

一个Servlet是可以配置多个访问路径的

完全路径匹配,以/开始,例如:/hello /init

目录匹配,以/开始,例如:/* /abc/*

" / "代表当前Web应用的根目录," * "代表匹配所有

扩展名匹配,*不能以 / 开始**,例如:.do *.action

典型错误 /*.do

优先级:** 完全匹配 > 目录匹配 > 扩展名匹配 具体>不具体**

其他Servlet配置参数

load-on-startup :如果希望Servlet跟随服务器的启动而被创建,可以设置该属性.Struts1框架就使用这种方式加载配置文件 。

缺省Servlet

  • 如果某个Servlet的映射路径仅仅为一个正斜杠(/),那么这个Servlet就成为当前Web应用程序的缺省Servlet

  • 凡是在web.xml文件中找不到匹配的<servlet-mapping>元素的URL,它们的访问请求都将交给缺省Servlet处理,也就是说,缺省Servlet用于处理所有其他Servlet都不处理的访问请求

  • 当客户端访问静态资源的时候,实际上就是在访问这个缺省的servlet

配置主页

  • 在web.xml文件中,可以通过指定welcome-file-list节点来指定当前应用的主页.

  • 如果有多个值的话,会从上向下进行查找,找到后,就不会再向下执行

  • 如果本应用没有配置welcome-file-list节点,会使用Tomcat服务器的默认配置

相对路径和绝对路径

结论:一律使用绝对路径

相对路径

  • ../ 代表上级目录. 例如: ../css

  • ./或者什么都不写 代表同级目录. 例如: ./img 等同于 img

绝对路径

  • 带有协议和主机名的,这种路径能够访问所有的页面.例如: http://www.baidu.com

  • 不带协议和主机名的,这种路径只能访问服务器内部资源.例如: /day13/index.html

 

ServletConfig的使用

作用

  1. 获取Servlet的名称
  2. 获取Servlet的初始化参数
  3. 获取上下文ServletContext

创建

  • 在Tomcat服务器创建Servlet时,创建该对象,并通过init()方法传递给当前Servlet

  • 获取方法

    • getServletConfig()

  • API

    • getServletName(): 获取Servlet的名称.就是web.xml中servlet-name节点的值

    • getInitParameter(String name) : 获取web.xml中<font color='red'>当前Servlet</font>对应的<param-value>标签的值

    • getInitParameterNames() : 获取web.xml中<font color='red'>当前Servlet</font>对应的所有<param-name>标签的值

共有 人打赏支持
粉丝 0
博文 41
码字总数 79580
评论 (0)
×
勤劳的开发者px
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: