文章目录
JSP
1. 脚本
1.1 声明脚本—写在 <%! ... %>
中
1.1.1 声明属性
<%!
private Integer id;
private String name;
private static Map<String,Object> map;
%>
1.1.2 声明静态代码块
<%!
static{
map=new HashMap<String,Object>();
map.put("key1","value1");
}
%>
1.1.3 声明方法
<%!
public int abc(){
return 12;
}
%>
1.1.4 声明内部类
<%!
public static class A{
private int id;
private String name;
}
%>
1.2 表达式脚本—写在 <%= ...%>
中,不能以’;'结束
1.2.1 输出整型\浮点型\字符串\对象
<%= 12 %>
<%= 11.1 %>
<%= "Hello" %>
<%= map %>
1.3 代码脚本—写在 <% ... %>
中
1.3.1 if语句
<%
int i=12;
if(i==12){
System.out.println("True");
}else{
System.out.println("False");
}
%>
1.3.2 for语句
<%
for(int j=0;j<10;j++){
System.out.println(j);
}
%>
1.3.3 jspService方法
<%
String username = request.getParameter("username");
System.out.println("Username 参数: " + username);
%>
2. 注释
2.1 html
<!-- html注释 -->
会被翻译到java源代码中,在_jspService()方法中以outwrite输出到客户端
2.2 Java
<%
//单行java注释
/*
多行Java注释
*/
%>
会被翻译到Java源代码中
2.3 jsp注释
<%-- 这是jsp注释 --%>
可以注释掉jsp中所有代码
3. 九大内置对象
对象 | 说明 | 范围 |
---|---|---|
application | 域对象,ServletContext对象,web工程范围有效 | 最大 |
session | 域对象,会话对象,一次会话有效 | 第二 |
request | 域对象,一次请求内disan | 第三 |
pageContext | 域对象,jsp上下文对象,在当前jsp页面范围内有效 | 最小 |
response | 响应对象 | |
config | ServletConfig对象 | |
out | jsp输出流对象 | |
page | 当前jsp对象 | |
exception | 显示异常信息 |
4. 常用标签
4.1 静态包含
用 <%@include file="" %>
标签
不会翻译被包含的jsp页面
把被包含的jsp页面的代码拷贝到包含的位置进行输出
4.2 动态包含
用 <jsp:include page=""></jsp:include>
标签
会把被包含的jsp页面翻译
**还可以传递参数
<jsp:include page="">
<jsp:param name="username" value="bbj"/>
</jsp:include>
4.3 标签-转发
用 <jsp:forward page=""></jsp:forward>
5. Listener监听器–三大组件之一
5.1 ServletContextListener
监听ServletContext对象的创建和销毁
创建:contextInitialized()
销毁:contextDestroyed()
- 编写监听器类
- 重写两个方法
- 在web.xml中部署
<listener> <listener-clss>uri</listener-class> </listener>
6. 文件上传
- form标签,method为post
- form标签的encType必须为multiparty/form-data
- form必须用input type=file上传
- 在服务器编写接受处理代码(Servlet)
和数据IO流相关Stream
可以使用已封装的jar包
要有buffer[]缓冲区
重点要设置响应头,Content-Disposition,attachment(附件),filename(文件名)----[URLencode编码]\
** 通过User-Agent请求头来获取所使用的浏览器是什么,火狐用base64,否则用URLencode
7. Cookie
服务器通知客户端保存键值对
7.1 创建
- Cookie对象类,构造(key,value)
- 通过response通知客户端,response.addCookie
7.2 获取
- 使用request.getCookies
- 查找单个只能遍历
7.3 修改
- 新建值—setCookie会修改
7.4 生命控制
setMaxAge
- 正数-设置Cookie最大生存时间
- 负数-不保存,退出即清除
- 0-立即清除
7.5 有效路径
path属性可有效过滤哪些Cookie可以发送给服务器,哪些不发
8. Session—会话
接口(HTTPSession) 维护客户端和服务器之间关联的技术
保存在服务器端
8.1 创建 && 获取
request.getSession
- 第一次调用是创建
- 第二次是获取
isNew — 是否新建
getID — 得到Session唯一识别号
8.2 存取
request.getSession.set/get_Attribute(key,value)
8.3 生命周期
- setMaxInactiveInterval — 设置Session超时时间,超过时常就销毁
- 默认超时时长: 1800秒 / 30分钟
- 客户端发送服务器两次间隔的时长
- 正数—超时时长,负数—永不超时
- getMaxInactiveInterval — 获取超时时间
- invalidate() 使对象会话无效
9. Google验证码
- 导入jar包
- 在web.xml配置类[kaptcha.jpg]
- 使用img导入验证码图片
- request.getSession().getAttribute(“[KAPTCHA_SESSION_KEY]”);
- 删除验证码—request.getSession().removeAttribute(“[KAPTCHA_SESSION_KEY]”);
- 获取表单项,进行比较操作等等
10. Filter—过滤器
拦截请求,过滤响应
应用场景:权限检查,日记操作,事务管理 …
创建类实现Filter接口(javax)
doFilter 方法,用于拦截请求
- Servletrequest -->
- Servletresponse -->
- filterCharn --> .doFilter(request,response) !!! 程序继续执行
XML
<filter>
<filter-name>别名</filter-name>
<filter-class>filter全-类名</filter-class>
</filter>
<filter-mapping>
<filter-name>为哪个filter使用</filter-name>
<url-pattern>拦截路径</url-pattern>
</filter-mapping>
10.1 生命周期
- 构造方法
- init初始化方法
web服务器启动时执行
- doFilter过滤方法
拦截到请求执行
- destroy销毁方法
停止web工程时执行
10.2 FilterConfig
配置文件类,Tomcat每次创建Filter都会同时创建FilterConfig类
作用:
- 获取Filter的名称 filter-name
- 获取Filter中配置的init-param参数
- 获取ServletContext对象
10.3 多Filter
成回环状
Filter1.前置->doFilter->Filter1.前置->doFilter->Sources->Filter1.后置->Filter1.后置
在同一线程内,公用同一个request对象
顺序按web.xml配置上下顺序
10.4 拦截路径
- 精确匹配—精确到文件,即 http://ip:port/projectPath/file.fileType
- 目录匹配—到目标目录,即 http://ip:port/projectPath/directory/*
- 后缀名匹配—对于同一种文件,即 *.fileType
10.5 ThreadLocal< T >
解决多线程数据安全问题
为当前线程关联数据,且只能一对一关联
定义时通常为静态static
10.6 Connection连接数据库TreadLocal实现事务管理
- setAutoCommit()手动管理事务
- commitAndClose()提交并关闭
- rollbackAndClose()回滚并关闭
11. Json
JavaScript Object Notation,轻量级(xml)数据交换格式(C/S)
11.1 JavaScript
定义: 由键值对组成,并且由 {} 包围,每个键由 ‘’ ,键值对用 : ,多组键值对用 , 分割
var jsonObj={
key1:value1
}
访问: Object.keyName
方法:
对象—操作数据域
字符串—客户端和服务器交互
- JSON.stringify() json对象转化为字符串
- JSON.parse() json字符串转化为对象
11.2 Java
- JavaBean和json
Google提供的gson.jar
—> Gson类的toJson
—> Gson类的fromJson(json字符串,bean对象.class)
- List和json
Google提供的gson.jar
—> Gson类的toJson
—> Gson类的fromJson(json字符串,{TypeToken< T >})
===> typeToken用于json字符串转换成具体的类
- map和json
Google提供的gson.jar
—> Gson类的toJson
—> Gson类的fromJson(json字符串,new TypeToken< ObjectType >(){}.getType())
===> 使用匿名类
12. Ajax
Asysnchronous JavaScrip And XML
异步请求
12.1 原生请求举例
//1. 创建XMLHttpRequest
var xmlhttp = new XMLHttpRequest();
readState{
0:请求未初始化
1:服务器连接已建立
2:请求已接收
3:请求处理中
4:请求已完成且响应已就绪
}
status{
200:"OK"
404:未找到页面
}
//1. 调用open方法设置请求参数
xmlhttp.open("GET","url",true/false[是否异步]);
//4. 获取相应
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4 && xmlhttp.status==200)
var text=JSON.parse(xmlhttp.responseText); //将响应的String转为对象
}
//3. 调用send方法发送
xmlhttp.send();
12.2 特点
-
局部更新HTML —> 浏览器地址栏没有变化 // 不会舍弃浏览器原本内容
-
异步
12.3 jQuery-Ajax
12.3.1 $.Ajax方法
- url 请求地址
- type 请求类型
- data 发送给服务器的数据
- name=value&key=value
- {key:value}
- success 请求成功,响应回调
- dataType 服务器返回类型
- text 纯文本
- xml xml数据
- json json对象
$.ajax({
url:"",
type:"GET",
data:"action=jQueryAjax",
success:function(msg){
} ,
dataType:"text/xml/json"
})
12.3.2 $.get && $.post
- url 请求地址
- data 发送给服务器的数据
- name=value&key=value
- {key:value}
- callback 回调函数
- type 服务器返回类型
- text 纯文本
- xml xml数据
- json json对象
$.get/post("url","data:action=jQueryAjax",callback.function(msg){
} ,"text/xml/json")
12.3.3 $.getJson
Get请求返回Json数据
- url 请求地址
- data 发送给服务器的数据
- name=value&key=value
- {key:value}
- callback 回调函数
$.getJson("url","data:action=jQueryAjax",callback.function(msg){
})