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对象不再使用的时候, |
10.Servlet部署运行
修改web.xml(部署描述文件)
添加<servlet>:把Servlet内部名映射到一个Servlet类名
添加<servlet-mapping>:把用户访问的URL映射到Servlet的内部名
<servlet-mapping>与<servlet>中的<servlet-name>必须一致
通过URL访问Servlet
11.
配置<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"); | ${ requestScope.news } |
会话作用域 | session.getAttribute("username"); | ${ sessionScope.username } |
程序作用域 | application.getAttribute("count"); | ${ applicationScope.count } |
页面作用域 | pageContext.getAttribute("userNum"); | ${ pageScope.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标签
标签名称 | 作用 |
<c:out /> | 输出文本内容到out对象,常用于显示特殊字符,显示默认值 |
<c:set/> | 在作用域中设置变量或对象属性的值 |
<c:remove/> | 在作用域中移除变量的值 |
<c:if/> | 实现条件判断结构 |
<c:forEach/> | 实现循环结构 |
<c:url/> | 构造url地址 |
<c:param/> | 在url后附加参数 |
<c:import/> | 在页面中嵌入另一个资源内容 |
<fmt:formatDate/> | 格式化时间 |
<fmt:formatNumber/> | 格式化数字 |
<c:out value="value" default="default" escapeXml="true|false" />
<c:set var="name" value= "value" scope="scope" />
<c:set value= "value" target="target" property="propertyName" />
<c:forEach var="varName" items="items" varStatus="varStatus">
……
</c:forEach>
<c:if test="condition" var="varName" scope="scope">
……
</c:if>
<c:url value="url" />
<c:param name="name" value="value"/>
<c:import url="URL" />
<fmt:formatDate value="date" pattern="yyyy-MM-dd HH:mm:ss"/>