JavaWeb:Filter过滤器、JSON和AJAX
作者:互联网
Session
Session是什么
- Session是一个接口
- Session是个会话。他是一个用来维护一个客户端和服务器之间关联的一种技术。
- 每个客户端都有Session会话。
浏览器和Session会话之间的技术内幕
Filter过滤器
- Filter过滤器是JavaWeb三大组件之一(Servlet、Listener、Filter过滤器)
- Filter过滤器是JavaEE的规范,是接口。
如果做到权限限制
//1.创建一个类来实现Filter,并重写doFilter()方法
public class AdminFilter implements Filter {}
//2.在doFilter()编写验证代码
//对doFilter()的形参servletRequest进行类型转换
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
Object userName = httpServletRequest.getSession().getAttribute("userName");
if(userName==null){
//如果尚未登录,则跳转至登录页面
httpServletRequest.getRequestDispatcher("/logIn.jsp").forward(servletRequest,servletResponse);
System.out.println("您还没有登录");
}else {
//否则就让程序继续往下走
filterChain.doFilter(servletRequest,servletResponse);
}
//4.在web.xml中配置
<filter>
<filter-name>AdminFilter</filter-name>
<filter-class>com.boerk.controller.AdminFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>AdminFilter</filter-name>
<url-pattern>/admin/*</url-pattern>//这里表示web下的admin文件夹里所有的文件
</filter-mapping>
- Filter的生命周期
- 构造器方法:在工程创建的时候执行
- init初始化方法:在工程创建的时候执行
- doFilter方法:每次拦截到请求就会执行
- destroy销毁方法:停止web工程的时候执行
FilterConfig类
FilterConfig是Filter的配置信息文件夹。每次创建Filter的时候都会创建一个FilterConfig类。
FilterConfig类的作用是获取Filter过滤器的配置信息
- 获取Filter的别名(
filterconfig.getFilterName()
) - 获取Filter的初始化参数(
filterConfig.getInitParameter(key);
) - 获取ServletContext对象(
filterConfig.getServletContext();
)
FilterChain
FilterChain过滤器链(多个过滤器一起工作)
FilterChain.doFilter()
的作用
- 执行下一个Filter(如果有Filter)
- 执行目标资源(没有Filter)
在多个Filter过滤器执行的时候,执行顺序是在web.xml从上到下的顺序
Filter过滤器的拦截路径
-
精确匹配:
<url-pattern>/admin/a.html</url-pattern>
-
目录匹配:
<url-pattern>/admin/*</url-pattern>
-
后缀匹配:
<url-pattern>*.html</url-pattern>
Json
JSON(JavaScr ipt Object Notation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。JSON采用完全独立于语言的文本格式,而且很多语言都提供了对json的支持(包括C,C++,C#,Java,JavaScript,Perl, Python等)。这样就使得JSON成为理想的数据交换格式。
json是一种轻量级的数据交换格式。
Json在Js里
var jsons = {
"key1":"abc", // 字符串类型
"key2":1234, // Number
"key3":[1234,"21341","53"], // 数组
"key4":{ // json 类型
"key4_1" : 12,
"key4_2" : "kkk"
},
"key5":[{ // json 数组
"key5_1_1" : 12,
"key5_1_2" : "abc"
},{
"key5_2_1" : 41,
"key5_2_2" : "bbj"
}]
};
json的类型是Object,是一个对象,通过json去调用key则可以获得value。
Json的两个常用方法
Json.stringify(jsonObj)
:将json对象转为json字符串。Json.parse(jsonString)
:将json字符串转为json对象。
一般在操作json时使用json对象,在客户端和服务器中交互时,使用json字符串。
json在java里
- JavaBean和json互相转换
//创建gson对象,调用toJson方法。将java对象转为String
Gson gson =new Gson();
String toJson = gson.toJson(emp);
//使用FromJson方法将Json字符串转换为Java对象
gson.fromJson(toJson,Dept.class);
//第一个参数为json字符串,第二个参数为java对象类型
- List集合与json互相转换
//创建gson对象,调用toJson方法。将List集合转为String
Gson gson =new Gson();
String toJson = gson.toJson(emp);
//创建一个类,去继承TypeToken,并将需要转换的类型写在泛型中。
gson.fromJson(toJson,new TypeToken.getType());
//此时fromJson里的第二个参数为你所创建的类的对象并调用getType方法。
- Map集合与Json的互相转换
//完全同List
- 由于如上的继承方式过于浪费资源,因此建议使用匿名内部类。
//这里以Map集合为例。
//创建泛型为Map<Integer,Dept>的匿名内部类
Map map = gson.fromJson(toJson, new TypeToken<Map<Integer,Dept>>(){}.getType());
- 匿名内部类必须继承一个类或者实现一个接口
- 匿名内部类不能是抽象类
- 匿名内部类没有抽象方法
AJAX(阿贾克斯)
AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。
原生AJAX
ajax是一种游览器通过js异步发起请求。局部更新页面的技术。
- 创建XMLHttpRequest对象
var xmlhttprequest = new XMLHttpRequest();
- 调用open方法设置请求参数
xmlhttprequest.open("GET","http://localhost:8080/AJAX/ajaxservlet?action=javaScriptAjax",true)
- 调用send方法发送请求
xmlhttprequest.send();
- 在send方法前绑定事件,处理请求完成后的操作
xmlhttprequest.onreadystatechange=function (){
if(xmlhttprequest.readyState==4 && xmlhttprequest.status==200){
alert(xmlhttprequest.responseText);
}
}
一般客户端和服务器交互时使用json。
我们一般将收到的内容写在页面上。
xmlhttprequest.onreadystatechange=function (){
if(xmlhttprequest.readyState==4 && xmlhttprequest.status==200){
//将收到的json字符串转为json对象然后获取属性并输出。
var json= JSON.parse(xmlhttprequest.responseText);
document.getElementById("div01").innerHTML="用户的ID是:"+json.id+",用户姓名是:"+json.name;
}
}
- 同步:等执行Ajax内容的时候,客户端的其他内容会等待Ajax执行完再执行。(点击一个按钮后,整个页面卡死)
- 异步:客户端和服务器同时执行各自的内容,互不干扰。
jQuery中的Ajax请求
- .ajax方法
$.ajax({
url:"http://localhost:8080/AJAX/ajaxservlet",
data:"action=jQueryAjax",
type:"GET",
//访问成功的回调函数(你要做什么)data是从服务器端拿回来的数据
success:function (data){
//将服务器穿回来的数据转为json对象类型
var jsonobj=JSON.parse(data)
$("#div1").html(jsonobj.name);
},
//常用的返回类型有XML、JSON和TXT
dataType:"text"
})
- $.get和$.post方法在$.ajax方法的基础上进一步封装
- url:请求的url地址
- data:发送的数据
- callback:成功的回调函数
- type:返回的数据类型
$.get("http://localhost:8080/AJAX/ajaxservlet","action=jQueryAjax",function (data){
$("#div1").html("get 姓名:"+data.name);
},"JSON")
- $.getJSON
- url
- data
- callback
$.getJSON("http://localhost:8080/AJAX/ajaxservlet","action=jQueryAjax",function (data){
$("#div1").html("getJson 姓名:"+data.name);
})
- $.serialize()
- 用来获取form表单中所填的单局
"action=jQuerySerialize&"+$("#form01").serialize()
//一定要在action后面加上一个&,然后调用serialize()函数将数据改写为name=value&的形式。
标签:xmlhttprequest,json,Filter,JSON,AJAX,toJson,data,gson 来源: https://www.cnblogs.com/Boerk/p/15773464.html