2023年3月

Filter接口
  它是过滤器API的核心,所有的过滤器必须实现javax.servlet.Filter接口,该接口有三个方法,它们都由容器调用。
  
voidinit(FilterConfig) 在应用程序启动前,由容器调用
  
voiddoFilter(ServletRequest,ServletResponse,FilterChain)
  对于每个URL映射到该过滤器的请求,由容器调用该方法
  
voiddestroy()在应用程序关闭时,由容器调用。
FilterConfig接口
  如同Servlet有一个ServletConfig一样,过滤器也有一个FilterConig,该接口主要为过滤器提供初始化参数。声明了四个方法:
  String getFilterName()返回部署描述文件中指定的过滤器的名称
  String getInitParameter(String)返回在部署描述文件中指定的参数的值
  Enumeration getInitParameterNames()返回在部署文件中指定的所有参数的名称
  ServletContext getServletContext()
  返回web应用程序的ServletContext.过滤器可以使用ServletContext设置,获取application范围内的属性。
FilterChain接口
  
voiddoFilter(ServletRequest,ServletResponse);
  我们从一个过滤器对象的doFilter()方法调用此方法,以继续过滤器链的传递过程,它会将控制转到锭中的下一个组件。

二、监听器类型

按监听的对象划分:servlet2.4规范定义的事件有三种:

1.用于监听应用程序环境对象(ServletContext)的事件监听器

2.用于监听用户会话对象(HttpSession)的事件监听器

3.用于监听请求消息对象(ServletRequest)的事件监听器

按监听的事件类项划分

1.用于监听域对象自身的创建和销毁的事件监听器

2.用于监听域对象中的属性的增加和删除的事件监听器

3.用于监听绑定到HttpSession域中的某个对象的状态的事件监听器

EL知识点总结 - canger - 博客园
http://www.cnblogs.com/canger/p/6675799.html

1 只可以获取内置对象的属性值,不可以获取JSP页面中局部java变量的值

<%String name= "James";
request.setAttribute(
"name",name);int age = 30;%> <h2>${name}</h2> <h2>${age}</h2>

2 只有“${”两个字符连续出现时,才表示EL的开始,任何单独字符出现时都可正常显示

<%String name= "James";
request.setAttribute(
"name",name);%> <h2>${name}</h2> <h2>$${name}</h2> <h2>{${name}</h2>

3 如果只出现了“${”,而没有“}”作为结束,则服务器报错,出现空的“${}”时,服务器报错

4 需要输出“${”时,需要写为“\${”(页面最终显示时会去掉“\”),或者写成“${'${'}”

<h2>\${}</h2>
<h2>${"${}"}</h2>

5 EL运算符中的“+”的操作数只可以是数字运算或者可以转换为数字的字符串,对不可以转换为数字的字符串运用“+”运算讲产生错误

<h2>${123+"124"}</h2>

6 对于EL的empty运算符,null对象与空字符串“”、空数组、空list等是等价的

<%request.setAttribute("emptyString","");
request.setAttribute(
"nullObject",null);
request.setAttribute(
"emptyList",newArrayList<String>());
request.setAttribute(
"emptyMap",newHashMap<String,String>());%> <h2>${empty emptyString}</h2> <h2>${empty nullObject}</h2> <h2>${empty emptyList}</h2> <h2>${empty emptyMap}</h2> </body>

7 EL获取某个对象的值时,本质是调用该对象的toString()方法

<%request.setAttribute("requestString",request.toString());%>
<html>
<body>
<h2>${requestString}</h2>
<h2>${pageContext.request}</h2>
</body>
</html>

8 EL的内置对象与JSP的内置对象并不相同(除了pageContext对象),两者关系是:EL的内置对象可以访问对应的JSP内置对象通过setAttribute方法存储的值

  • EL内置对象共有11个:pageContext、pageScope、requestScope、sessionScope、applicationScope、param、paramValues、header、headerValues、initParam、cookie(注意不存在responseScope,因为EL的本质是为了获取某个值,而不是设置)
  • JSP的内置对象共有9个:pageContext、page、resquest、response、session、application、out、config、exception
  • 在页面中直接使用${request}等会报错
  • 通过pageContext可以实现EL对JSP内置对象的获取,${pageContext.request}
  • 通过pageContext可以获取的对象有page、resquest、response、session、out、exception、servletContext
  • 不可以通过pageContext可以获取的对象有application、config、pageContext

9 获取JSP作用于范围对象attribute的两种方法

<%
    request.setAttribute("name","Shao");
%>
<h2>${requestScope["name"]}</h2>
<h2>${requestScope.name}</h2>

注意,下面的写法是错误的,因为request对象并不存在getName方法

<h2>${pageContext.request.name}</h2>

10 获取JSP作用于范围对象属性的方法

<h2>${pageContext.request.serverPort}</h2>

深层布局,逐级进去,指向某一个标签,叫:
关联选择器
- 设置嵌套标签的样式 div p {}

day02

昨天内容回顾
1、html的操作思想
** 使用标签把要操作的数据包起来,通过修改标签的属性值来实现标签内数据样式的变化
*** <font size="5"></font>

2、图像标签
<img src="图片的路径"/>
** 通过html访问本地图片,使用绝对路径,目前有问题

3、超链接标签
<a href="" target="_blank"></a>

4、表格标签
** 技巧:数里面有多少行,每行里面有多少个单元格
** <table></table>
<tr> <td> <th>

5、表单标签
** <form></form>
- action method enctype
- method: get post

** 输入项
*** 有name属性
* 普通输入项 type="text"
* 密码: password
* 单选:radio
- name值相同
- value值
* 复选框:checkbox
- name值相同
- value值

* 下拉框 select option
* 文本域 textarea
* 隐藏项:type="hidden"
* 文件: type="file"

* 提交按钮 type="submit"
* 重置 : reset
* 使用图片提交: <input type="image" src=""/>
* 普通按钮 type="button"

6、div和span
* div: 自动换行
* span:在一行显示


CSS

1、css的简介
* css: 层叠样式表
** 层叠:一层一层的

** 样式表:
很多的属性和属性值
* 是页面显示效果更加好
* CSS将网页内容和显示样式进行分离,提高了显示功能。

2、css和html的结合方式(四种结合方式)
(1)在每个html标签上面都有一个属性 style,把css和html结合在一起
- <div style="background-color:red;color:green;">

(2)使用html的一个标签实现 <style>标签,写在head里面
* <style type="text/css">
css代码;
</style>

* <style type="text/css">
div
{background-color:blue;color:red; }</style>

(3)在style标签里面 使用语句(在某些浏览器下不起作用)
@import url(css文件的路径);

- 第一步,创建一个css文件

<style type="text/css">
@import url(div.css);
</style>

(4)使用头标签 link,引入外部css文件
- 第一步 ,创建一个css文件

- <link rel="stylesheet" type="text/css" href="css文件的路径" />

*** 第三种结合方式,缺点:在某些浏览器下不起作用,一般使用第四种方式

*** 优先级(一般情况)
由上到下,由外到内。优先级由低到高。
*** 后加载的优先级高

*** 格式 选择器名称
{属性名:属性值;属性名:属性值;…….}3、css的基本选择器(三种)
** 要对哪个标签里面的数据进行操作

(1)标签选择器
* 使用标签名作为选择器的名称
div
{background-color:gray;color:white; }(2)class选择器
* 每个html标签都有一个属性 class
- <div class="haha">aaaaaaa</div>
- .haha
{background-color:orange; }(3)id选择器
* 每个html标签上面有一个属性 id
- <div id="hehe">bbbbb</div>
- #hehe
{background-color:#333300; }*** 优先级
style > id选择器 > class选择器 > 标签选择器

4、css的扩展选择器
(1)关联选择器
* <div><p>wwwwwwww</p></div>
* 设置div标签里面p标签的样式,嵌套标签里面的样式
* div p
{background-color:green; }(2)组合选择器
* <div>6666661</div>
<p>22222</p>
* 把div和p标签设置成相同的样式,把不同的标签设置成相同的样式
* div,p
{background-color:orange; }(3)伪元素选择器(了解,浏览器的兼容性比较差)
* css里面提供了一些定义好的样式,可以拿过来使用
* 比如超链接
** 超链接的状态
原始状态 鼠标放上去状态 点击 点击之后
:link :hover :active :visited

** 记忆的方法
lv ha

5、css的盒子模型
** 在进行布局前需要把数据封装到一块一块的区域内(div)
(1)边框
border: 2px solid blue;
border:统一设置
上 border-top
下 border-bottom
左 border-left
右 border-right

(2)内边距
padding:20px;
使用padding统一设置
也可以分别设置
上下左右四个内边距

(3)外边距
margin: 20px;
可以使用margin统一设置
也可以分别设置
上下左右四个外边距

6、css的布局的漂浮(了解)
float:
** 属性值
left :  文本流向对象的右边
right :  文本流向对象的左边

7、css的布局的定位(了解)
position:
** 属性值
- absolute :
*** 将对象从文档流中拖出
*** 可以是top、bottom等属性进行定位
- relative :
*** 不会把对象从文档流中拖出
*** 可以使用top、bottom等属性进行定位

8、案例 图文混排案例
** 图片和文字在一起显示

9、案例 图像签名
** 在图片上面显示文字

10、上午内容总结
1、css和html的四种结合方式(****)

2、css的基本选择器(****)
* 标签选择器 使用标签名
* class选择器 .名称
* id选择器 #名称

** 优先级
style > id > class > 标签

3、css的扩展选择器(了解)
* 关联选择器
- 设置嵌套标签的样式 div p
{}* 组合选择器
- 不同的标签具有相同的样式 div,p
{}* 伪元素选择器
* 超链接的状态
- 原始 :link
- 悬停 :hover
- 点击 :active
- 点击之后 :visited

4、盒子模型(了解)
* 边框 border:2px solid red;
上下左右 border-top border-bottom border-left border-right

* 内边距 padding:20px
上下左右

* 外边距 margin:20px
上下左右

* 对数据进行操作,需要把数据放到一个区域里面(div)

5、布局的漂浮(了解)
float
- left: 后面的div到右边
- right:后面的div到左边

6、布局的定位(了解)
position
- absolute
** 从文档流中拖出
- relative
** 不会从文档流中拖出

一般在目录里面,标出符号
(********):重点,代码看懂,代码会写,代码理解
- (****重点中的重点***)
(了解):代码看懂
(理解):能够把原理讲清楚