JavaWeb-Servlet接口

本文详细介绍了Servlet的概念、运行过程以及在JavaWeb开发中的具体应用,包括Servlet接口、HttpServlet类的使用,IDEA中开发Servlet的方法,Servlet的URL映射配置,重定向操作,ServletContext对象的使用,特别是通过ServletContext实现数据共享和读取网站配置文件的示例。
摘要由CSDN通过智能技术生成

Servlet

Servlet简介

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

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

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

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

  • 按照一种约定俗成的称呼习惯,通常我们也把实现了servlet接口的java程序称为Servlet。

Servlet的运行过程

在这里插入图片描述

Servlet实现类

  • Servlet接口sun公司定义了两个默认实现类,分别为:GenericServlet、HttpServlet
  • HttpServlet指能够处理HTTP请求的servlet,他在原有Servlet接口中添加了一些HTTP协议处理方法,它比Servlet接口的功能更为强大。因此开发人员在编写Servlet时,通常继承这个类,而避免直接去实现Servlet接口
  • HttpServlet在实现Servlet接口时,覆写了servlet方法,该方法体内的代码会自动判断用户的请求方式,如为GET请求时,则调用HttpServlet的doGet方法,如为Post请求时,则调用doPost方法。因此,开发人员在编写Servlet时,通常只需要覆写doGet方法或doPost方法,而不要去覆写servlet方法

使用IDEA开发Servlet

在这里插入图片描述

Servlet访问URL映射配置

由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上,这个工作在web.xml文件中使用< servle >元素和< servlet-mapping>元素完成。
  < servlet>元素用于注册Servlet,它包含有两个主要的子元素:< servlet-name>和< servlet-class>,分别用于设置Servlet的注册名称和Servlet的完整类名。
一个< servlet-mapping>元素用于映射一个已注册的Servlet的一个对外访问路径,它包含有两个子元素:< servlet-name>和< url-pattern>,分别用于指定Servlet的注册名称和Servlet的对外访问路径。例如:

 <servlet>
2     <servlet-name>ServletDemo1</servlet-name>
3     <servlet-class>gacl.servlet.study.ServletDemo1</servlet-class>
4   </servlet>
5 
6   <servlet-mapping>
7     <servlet-name>ServletDemo1</servlet-name>
8     <url-pattern>/servlet/ServletDemo1</url-pattern>
9   </servlet-mapping>

同一个Servlet可以被映射到多个URL上,即多个< servlet-mapping>元素的< servlet-name>子元素的设置值可以是同一个Servlet的注册名。

Servlet映射路径问题

在Servlet映射到的URL中也可以使用*通配符,但是只能有两种固定的格式:一种格式是"*.扩展名",另一种格式是以正斜杠(/)开头并以"/*"结尾。例如:

servlet>
2     <servlet-name>ServletDemo1</servlet-name>
3     <servlet-class>gacl.servlet.study.ServletDemo1</servlet-class>
4   </servlet>
5 
6    <servlet-mapping>
7     <servlet-name>ServletDemo1</servlet-name>
8    <url-pattern>/*</url-pattern>

*可以匹配任意的字符,所以此时可以用任意的URL去访问ServletDemo1这个Servlet

对于如下的一些映射关系:
  Servlet1 映射到 /abc/*
  Servlet2 映射到 /*
  Servlet3 映射到 /abc
  Servlet4 映射到 .do
问题:
  当请求URL为“/abc/a.html”,“/abc/
”和“/”都匹配,哪个servlet响应
  Servlet引擎将调用Servlet1。
  当请求URL为“/abc”时,“/abc/
”和“/abc”都匹配,哪个servlet响应
  Servlet引擎将调用Servlet3。
  当请求URL为“/abc/a.do”时,“/abc/”和“.do”都匹配,哪个servlet响应
  Servlet引擎将调用Servlet1。
  当请求URL为“/a.do”时,“/”和“.do”都匹配,哪个servlet响应
  Servlet引擎将调用Servlet2。
  当请求URL为“/xxx/yyy/a.do”时,“/”和“.do”都匹配,哪个servlet响应
  Servlet引擎将调用Servlet2。
  匹配的原则就是"谁长得更像就找谁"

重定向

将这个请求,转换到另一个地址;

比如,我们请求 : http://localhost:8080/servlet01/dasdasdasda/aaaa.do 他会跳转到百度首页;

//通过响应对象重定向页面
resp.sendRedirect("404.jsp");

ServletContext

  • WEB容器在启动时,它会为每个web应用程序都创建一个对应的ServletContext对象,它代表当前web应用
  • 多个Servlet通过ServletContext对象实现数据共享
  • 获取web应用的初始化参数
  • 用ServletContext实现请求转发
  • 利用ServletContext对象读取资源

通过servletContext对象实现数据共享

通过this获得ServletContext,实现数据的共享

通过servletContext对象读取网站配置文件

  1. 新建一个properties文件
driver=com.mys
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值