目录
Servlet接口、GenericServlet类、HttpServlet类三者之间的关系
HttpServletRequest获得参数名和参数值的方法。
一、Servlet简介
1、Servlet定义:
Servlet(Server Applet)是Java Servlet的简称,是为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。
(servlet是一个java小程序运行在web服务器。servlet接收并响应来自Web客户端的请求,通常通过HTTP,超文本传输协议。)
3、Servlet实现过程:
(1)客户端发送请求至服务器端;
(2)服务器将请求信息发送至 Servlet;
(3)Servlet 生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求;
(4)服务器将响应返回给客户端。
4、Servlet可以完成以下任务:
(1)动态生成HTML文档。
(2)将请求转发给Servlet组件。
(3)读取客户端的Cookie,以及向客户端写入Cookie。
(4)访问服务器的资源,如数据库、 XML、文件对像等。
5、Servlet的特点:
(1)Servlet对像,由Servlet容器(Tomcat)创建。
(2)Servlet是一个接口:位于javax.servlet包中。
(3)service方法用于接收用户的请求并返回响应。
(4)用户访问时多次被执行(可以统计网站的访问量)。
三协议四角色
Servlet层次结构
Servlet是实现javax.servlet.Servlet 接口地对象。大多数Servelt通过从GenerticServlet或HttpServlet类进行扩展来实现。Servlet API包含于两个包中,即javax.servelt和javax.servlet.http
Servlet接口、GenericServlet类、HttpServlet类三者之间的关系
javax.servlet
接口:
ServletConfig:定义了Servlet初始化的过程中由Servlet容器中传递给Servlet的配置信 息对象。
ServletContext:定义了Servlet使用的方法以获取其容器的信息。
ServletRequest:定义一个对象封装客户向Servlet的请求的响应信息发送给客户端。
ServletResponse:定义一个对象辅助Servlet将请求的响应信息发送给客户端。
Servlet:定义所有Servlet必须要实现的方法。
类:
ServletInputStream定义名为readLine()的方法,从客户端读取二进制数据
Servlet:定义抽象类,定义一个通用的、独立底层协议的Servlet
javax.servlet.http
接口:
HttpSession:用于标识客户端并存储有关客户端的信息。
HttpSessionAttributeListener:这个侦听用户获取会话的属性列表的改变的通知。
HttpServletRequest:扩展ServletRequest接口,提供HTTP Servlet提供HTTP请求 信息。
HttpServletResponse: 扩展ServletResponse接口,提供HTTP特定的发送响应的 功 能
类:
HttpServlet:扩展了GenericServlet的抽象类,用于扩展创建HttpServlet
Cookie:创建一个Cookie,用于存储Servlet发送给客户端的信息。
HttpServletRequest获得参数名和参数值的方法。
getParameter(String key):返回一个字符串,获得name和key一样的表单控件,如果重复的name,则返回一个的值。
getParameterValue(String key)返回一个字符串组,获得name和key一样的表单控件的数据,但相同name的空间会有多个,如同多个checkbox等。
getParameterMap():返回一个包含参数的Map。为key-String[]模式,即,key是表单控件的name,同时,为了防止由重复的name的控件存在,每个name对应的值是一个字符串数组。
getParameterNames():返回一个枚举类型值,返回所有表单中所表看控件的name。
Servlet的生命周期
Servlet运行在Servlet容器中,其生命周期由容器来管理。Servlet的生命周期通过javax.servlet.Servlet接口中的init()、service()和destroy()方法来表示。
实现步骤:
1.新建web项目,并访问静态页面(html)
注意选中生成web.xml的选项
- 创建Servlet程序
右键单击项目的src文件,选择【New】→【Other】选项,进入创建Servlet的界面,最后一步按下图选择后Finish
打开web.xml文件,对创建的虚拟映射路径进行配置
部署和访问Servlet
打开【Servers】选项卡,选中部署Web应用的Tomcat服务器(关于Tomcat服务器的配置方式参考第2章),右键单击并选择【Add andRemove】选项
实现Servlet虚拟路径的映射
在该Servlet的doGet()和doPost()方法中添加一些代码,具体如下
<servlet>
<servlet-name>TestServlet01</servlet-name>
<servlet-class>cn.itcast.chapter.servlet.TestServlet01</servlet-class>
</servlet>
<servlet-mapping>
<!-- 映射为 TestServlet01 -->>
<servlet-name>TestServlet01</servlet-name>
<url-pattern>/TestServlet01</url-pattern>
</servlet-mapping>
<servlet-mapping>
<!-- 映射为 Test01 -->
<servlet-name>TestServlet01</servlet-name>
<url-pattern>/Test01</url-pattern>
<servlet-mapping>
<!-- 映射为 TestServlet01和Test02-->
<servlet-name>TestServlet01</servlet-name>
<url-pattern>/TestServlet01</url-pattern>
<url-pattern>/Test02</url-pattern>
</servlet-mapping>
重启Tomcat服务器,在浏览器的地址栏中输入地址“http://localhost:8080/chapter03/TestSevlet01”访问TestServlet01
在浏览器的地址栏中输入地址“http://localhost:8080/chapter03/Test02”访问TestServlet01
由此可见:在一个<servlet-mapping>元素下配置多个<url-pattern>子元素同样可以实现Servlet的多重映射
Servlet 映射路径中使用通配符
要实现所有路径都可以访问同一个Servlet,可以在Servlet映射的路径中使用通配符“*”。通配符的格式有两种,具体如下。
(1)格式为“*.扩展名”,例如“*.do”匹配以“.do”结尾的所有URL地址。
(2)格式为“/*”,例如“/abc/*”匹配以“/abc”开始的所有URL地址。
缺省Servlet:
Servletd的映射路径仅仅是一个正斜线(/),那么这个servlet技术当前Web应用的缺省 Servlet。缺省Servlet用于处理其他Servlet都不处理的访问请求。对web.xml文件进行修改,将其设置为缺省的Servlet,具体如下
<servlet>
<servlet-name>TestServlet01</servlet-name>
<servlet-class>Lily.servlet.TestServlet01</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestServlet01</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
启动Tomcat服务器,在浏览器地址栏输入任意地址,如“http://localhost:8080/chapter03/abcde”