1.Servlet做了什么
本身不做业务处理,只是接受请求并决定电泳·调用哪个JavaBean去处理请求
确定用哪个页面来显示处理返回的数据
2.Servlet是什么
Servlet+Applet,服务器端的Java应用程序
只有服务器端的应用程序使用了Servlet API的时候,这个服务端的程序才能称为Servate
3.Servate API
1、javax.servlet.Servlet接口:基础接口,所有实现类的方法集
2、javax.servlet.GenericServlet:是Servlet的通用版本,与协议无关的Servlet
4.创建Servlet创建方式
创建类实现javax.servlet.Servlet接口
创建类继承javax.servlet.GenericServlet类
创建类继承javax.servlet.http.HttpServlet类
5.Servlet的主要方法
init():Servlet的初始化方法,仅执行一次
service() 处理请求和生成响应
destroy()Servlet对象不再使用时调用,仅执行一次
6.ServletRequest
相当于JSP内置对象request
7.ServletResponse
相当response
8.ServletConfig
包含Servlet的初始化参数信息
9.Servlet生命周期
|----------|--------------------|------------------------------------------------------------|
| 生命周期 | 谁来做 | 何时做 |
| 实例化 | Servlet 容器 | 当Servlet容器启动或者容器检测到客户端请求时 |
| 初始化 | Servlet 容器 | 实例化后,容器调用Servlet的init()初始化对象 |
| 处理请求 | Servlet 容器 | 得到客户端请求并做出处理时 |
| 销毁 | Servlet 容器 | **当程序中的Servlet对象不再使用的时候, 或者Web**服务器停止运行的时候 |
10.Servlet部署运行
修改web.xml(部署描述文件)
添加<servlet>:把Servlet内部名映射到一个Servlet类名
添加<servlet-mapping>:把用户访问的URL映射到Servlet的内部名
<servlet-mapping>与<servlet>中的<servlet-name>必须一致
通过URL访问Servlet
配置<servlet>元素
<servlet>
<servlet-name>myServlet3</servlet-name>
<servlet-class>demo.web.servlet.MyServlet3</servlet-class>
</servlet>
配置<servlet-mapping>元素
<servlet-mapping>
<servlet-name>myServlet3</servlet-name>
<url-pattern>/myServlet3</url-pattern>
</servlet-mapping>
12.初始化参数设置
配置<init-param>元素
<servlet>
......
<init-param>
<param-name>charSetContent</param-name>
<param-value>utf-8</param-value>
</init-param>
</servlet>
public void init(ServletConfig config) throws ServletException {
String initParam=config.getInitParameter("charSetContent");
System.out.println(initParam);
}
13.MVC
14.过滤器
是向Web应用程序的请求和响应添加功能的Web服务组件
统一处理请求和响应
15.配置过滤器的初始化参数
配置<init-param>元素
<filter>
<init-param>
<param-name>Encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
读取过滤器的初始化参数
init(FilterConfig fConfig) {
String encoding=fConfig.getInitParameter("Encoding");
}
16.多个过滤器会形成过滤链
17.EL表达式
${EL表达式}
操作符'.' 获取对象的属性
\] 获取对象的属性 ${news\["title"\]}
获取集合中的对象,例如:${newsList\[0\]}
18.访问作用域
request.setAttribute("news", news);
两种方式取数据:
使用Java小脚本:request.getAttribute("news");
使用EL表达式: ${ news } 或者 ${ requestScope.news }
|-----------|----------------------------------------------------------|-----------------------------------------------|
| **作用域** | **Java****代码取值** | **EL****取值** |
| **请求作用域** | **request.****getAttribute****("news");** | **${****request****Scope****.news****}** |
| **会话作用域** | **session.****getAttribute****("username");** | **${****session****Scope.****username****}** |
| **程序作用域** | **application.****getAttribute****("count");** | **${****application****Scope****.count****}** |
| **页面作用域** | **pageContext.****getAttribute****("****userNum****");** | **${****page****Scope****.userNum****}** |
19.JSTL
JSP标准标签库
实现JSP页面中的逻辑控制
20.JSTL使用步骤
下载jstl.jar和standard包
下载jstl.jar和standard.jar包
http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
将这两个包复制到WEB-INF\\lib目录
在JSP页面中添加指令
21.JSTL标签分类
|------------------------|--------------------------------------------|------------------------|
| **标签库名称** | **资源标示符(****uri****)** | **前缀(****prefix****)** |
| **核心标签库** | **http://java.sun.com/jsp/jstl/core** | **c** |
| **国际化****/****格式化标签库** | **http://java.sun.com/jsp/jstl/fmt** | **fmt** |
| **XML****标签库** | **http://java.sun.com/jsp/jstl/xml** | **x** |
| **数据库标签库** | **http://java.sun.com/jsp/jstl/sql** | **sql** |
| **函数标签库** | **http://java.sun.com/jsp/jstl/functions** | **fn** |
22.JSTL标签
|-----------------------------------|------------------------------------------|
| **标签名称** | **作用** |
| **\