阅读目录
1.
可以实现Filter接口,重写1个抽象方法doFilter。
也可以继承HttpFilter抽象类,重写默认方法doFilter()
2.
可以通过Saved data点击Authentication data,按clear按钮清空认证缓存
3.
编写自定义标签的步骤:
- 开发自定义标签处理类
- 创建*.tld文件,每个此文件对应一个标签库,标签库中可以由多个标签
- 在jsp页面使用标签
定义类:继承SimpleTagSupport类
重写需要的标签方法
public class MyTag extends SimpleTagSupport {
@Override
public void doTag() throws JspException, IOException {
getJspContext().getOut().write("hello walker");
}
}
编写tld文件:
tld:Tag Library Description 文件
tld是一个xml文件,是自定义标签库的配置文件
应该放在web-inf文件夹下,如果放在其他位置 需要在web.xml中配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>testTagLib</short-name>
<uri>/test-tags</uri>
<display-name>"自定义标签"</display-name>
<tag>
<name>TagA</name>
<tag-class>com.mytest.TagA</tag-class>
<body-content>jsp</body-content>
<description>这个一个标签</description>
<attribute>
<name>attributeA</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<description>属性A</description>
</attribute>
</tag>
<tag>
<name>TagB</name>
<tag-class>com.mytest.TagB</tag-class>
<body-content>jsp</body-content>
<description>这个一个标签</description>
<attribute>
<name>attributeA</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<description>属性A</description>
</attribute>
</tag>
</taglib>
根元素是taglib
一些属性:
tlib-version:taglib版本
jsp-version:jsp版本
short-name:标签库的名字
uri:jsp页面使用的uri地址,/开头
display-name:描述
定义一个标签:tag标签
子标签:
- name:标签名
- tag-class:对应的标签实现类
- body-content:empty、scriptless、JSP、tagdependent 标签的内容
- attribute:属性标签,每一个属性都需要定义一个属性标签
又分为:
name:属性名
required:属性是否必须
rtexprvalue:Run-time Expression Value,是否支持EL表达式
description:属性的描述
jsp页面中引用自定义标签:
使用taglib指令引入标签
<%@ taglib prefix="t" uri="/test-tags"%>
这里的uri和tag文件中一模一样
使用标签: prefix:标签名
<t:TagA attributeA="extra">
number2:<input id='number2' name='number2' value='222' />
</t:TagA>
4.
如果改变了.tld文件的位置,需要在web.xml中定义位置
<jsp-config>
<taglib>
<taglib-uri>http://lauedward.spaces.live.com/</taglib-uri>
<taglib-location>/WEB-INF/test.tld</taglib-location>
</taglib>
</jsp-config>
根元素是jsp-config
对每一个tld文件,需要一个taglib标签
标签内,需要taglib-uri指定资源定位符,是绝对地址
还需要taglib-location指定资源的位置,相对于web-inf的路径
所以选D
5.
A 正确
B 使用连接池后,也需要显式关闭连接,但是不是物理关闭连接
C 连接池可以提高性能,建议使用
6.
分页查询不会产生非常大的开销
7.
required标签内容为true
8.
需要在tld文件中配置 attribute标签
9.
jsp自定义标签就是通过自定义标签实现类来实现复杂的、可重复利用的功能。
将java代码封装为标签,简化jsp页面,提高代码的复用性。
10.
使用连接池用完连接,也需要关闭连接,虽然不是物理关闭,但也会将连接送回连接池中去,否则连接一直处于占用等待状态。
11.
标签名而不是属性为message
B正确
12.
Filter接口中的doFilter()方法有三个参数,req,resp和chain
FilterChain接口中只有一个方法,就是doFilter(),有两个参数 req和resp
处理过滤业务是第一个方法,第二个方法只负责放行
public interface Filter {
default void init(FilterConfig filterConfig) throws ServletException {
}
void doFilter(ServletRequest var1, ServletResponse var2, FilterChain var3) throws IOException, ServletException;
default void destroy() {
}
}
public interface FilterChain {
void doFilter(ServletRequest var1, ServletResponse var2) throws IOException, ServletException;
}
13.
保存密码:Save Authentication
14.
Tomcat9之后才有javax.servlet.http.HttpFilter类,所以需要实现Filter接口
15.
使用taglib指令,写prefix和uri属性
16.
AB都是30
EL表达式内部的字符串数字相加会变成数字相加
null或""会变为0
String property1 = 10;
String property2 = 20;
${""+property2} -- 20
${property1 +property2 } -- 30
${property1}+${property2} -- 10+20
${property1}${property2} -- 1020
17.
${2+“4”}----6
18.
EL表达式语言可以使用点号运算符”.”来访问对象的属性,例如表达式${customer.name}表示customer对象的name属性。
EL表达式语言也可以使用方括号运算符”[]”来访问对象的属性,例如表达式${customer[“name”]}和${customer.name}是等价的。
方括号运算符”[]”还可以用来访问数组中的元素,例如${sustomers[0]}表示访问customers数组中的第一个元素。
也就是说,能用点的地方都可以用[],而且[]还可以用于数组访问下标
19.
可以使用${param.参数名}或者${paramValues.参数名[0]}获得第一个值
20.
21.
22.
四个方法都是js的全局方法
js当中的全局函数:不属于任何的类
所以不需要对象就可以直接调用的就是全局方法
23.
模型(model)是处理数据的类
控制(controller)不负责数据的处理,只涉及分工和请求分发
24.
typeof(arr),typeof返回的是基本数据类型及object,不会详细到array的,所以不可以
arr instanceof Array,这一点还不透彻,说的是在多iframe/window环境下,通过Instanceof来识别对象是否属于数组会出错
arr.toString,直接使用toString函数自然是数组有什么就返回什么了,例如[1,2] => ‘1,2’`
Object.prototype.toString.call(arr) === ‘[object Array]’;这才是正确的
25.
如果是 obj.b()的话,this指向还是正常的,选B是对的,但这次又把执行分为两步,又因为 this的值要等到代码真正执行时才能确定
在这里使用 fun() 该方法未被obj调用,而是在前面定义 var fun = obj.b; 的时候另起一个地址存放了这个方法,将这个fun注册在Window上面,此时fun已经脱离了obj
26.
27.
parseInt(str)是全局函数
28.
Margin
margin清除周围的元素(外边框)的区域。margin没有背景颜色,是完全透明的 因为margin不在盒子的内部,所以不会被背景颜色干扰
Padding(填充)
当元素的 Padding(填充)(内边距)被清除时,所"释放"的区域将会受到元素背景颜色的填充
29.
Session:session在访问servlet和jsp资源时会被创建,访问静态资源时不会被创建。但访问servlet时,如果不设置getSession(true),就不会被自动创建。对于jsp,不管有没有设置session为true,编译时都会自动添加一句HttpSession session = HttpServletRequest.getSession(true);,也就是jsp中的隐式对象session
session由服务器端开启,客户端(浏览器)的关闭和session注销没有关系。session的注销的原因是以下几种情况:
(1)会话超时
(2)立即注销 session.invalidate()
(3)服务器重启/结束
30.
str is null
31.
BC
32.
没有slideChange()方法
33.
状态为4 因为readyStatus是0-4
34.
随着 jQuery 的不断更新,它将逐步取代jsp 等服务器端技术。错误
35.
访问属性有多个值的数组,要使用[下标]。
${list[‘listIdx’+1]} 不能获得到listIdx的参数,而且EL表达式中+被当做数字运算符,进行数值运算,会将字符串统一转化为数字,所以会报数字格式异常。
36.
<c:out>escapeXml属性 是否忽略XML特殊字符
escapeXml为true,不使用转义字符如>,直接>表示
为false,需要转义字符
default属性表示默认值
B选项没有c:else标签
C选项 EL表达式只能直接获取域中的数据,name变量没有放入域中,所以为null ${empty name}为true
37.
<c:out>标签的格式 :值 value=${变量}
38.
${empty stu}为false,${not empty stu}为true
39.
迭代标签:foreach、fortokens 从属于c标签(core,核心标签库)
核心标签又分为:通用标签、条件标签、迭代标签
40.
在XML文档的第一条声明语句中,能够使用的属性有version、encoding、standalone
version属性是xml文档的版本
encoding属性指定xml的字符集
stanadalone属性表示这个xml是不是独立的,如果为true,那么表示xml不能引用外部的dtd文件。如果为false ,可以引用。
41.
list-style
list-style-type
list-style-type是list-style的其中一个属性,list-style有三个属性,他们分别是(按顺序):
list-style-type, list-style-position, list-style-image.
42.
c是vue的写法