一、Servlet 简介
1. Servlet 是什么
- Servlet是和平台无关的,运行在服务器端的Java程序,是浏览器端和服务器端其他应用程序(如服务器)之间的中间层
- 它运行在Servlet容器(如Tomcat服务器)中,和客户的通信采用“请求/响应”的模式。
2. Servlet 能干什么
-
读取浏览器发来的数据
- 显式数据(如html表单填写的内容)
- 隐式数据(如http请求头)
-
与服务器上其他的应用(如数据库)进行通信
-
产生一些数据,再响应给浏览器端
- 显式数据(如html,xml,jpg等)
- 隐式数据(如设置cookie)
3. Servlet 容器
- Servlet容器是运行Servlet,JSP,Filter,Listener,Tag等的软件环境,也叫JavaWeb应用容器,或者Servlet/JSP容器。
- Servlet,JSP等的生命周期方法都由容器来调用,换言之,Servlet容器负责管理它们的生命周期
- 目前最流行的Servlet容器软件包括:
- Tomcat:一个免费的开源Servlet容器,它是Apache软件基金会的一个顶级项目,由Apache、Sun和其它一些公司及个人共同开发而成。由于有了Sun的参与与支持,最新的Servlet和JSP规范总是能在Tomcat中得到体现。
- Resin
- J2EE服务器(如Weblogic)中也提供了内置的Servlet容器
4. Servlet 规范定义的web应用程序的目录层次
- jsp,html,图片文件等和根目录并列
- 错误的目录结构可能会导致容器工作异常
二、web.xml
-
web.xml 是一个WEB应用程序的配置文件,作用包括
- 定义该模块包含的Servlets,JSP以及静态资源
- 没有使用标注的servlet需要在web.xml中配置
- 安全性限制
- 为每个URL指定安全性角色可以执行的方法:GET,POST等
- 登录配置
- 如何进行身份认证
- 该模块使用的安全性角色
- …
-
代码示例
<!-- 配置 --> <servlet> <!-- 1. 全局注册一个servlet --> <!-- Servlet的注册名 --> <servlet-name>HelloServlet</servlet-name> <!-- Servlet的全类名,用来指明物理文件位置,格式是:包名.类名 --> <servlet-class>com.atguigu.javaweb.HelloServlet</servlet-class> <!-- 2. servlet的初始化参数(可选),只有当前servlet可以获取到--> <!-- 必须出现在<load-on-startup>前面 --> <init-param> <!-- 参数名 --> <param-name> user </param-name> <!-- 参数值 --> <param-value>