JSP同步请求和html+ajax异步请求的两种方式
war包:包括所有的项目资源,只要从浏览器发起的都是属于请求,然后把资源响应给浏览器,解析显示出来。
方式一:HTML+ajax(跳转静态html也是属于请求响应,把整个页面响应给浏览器。)
html不需要依赖服务器就可以进行页面展示,只是通过请求获取json数据,然后进行解析,用js进行渲染,显示到页面上
同步请求:会刷新整个页面,会将整个页面发给浏览器进行解析,显示在浏览器上。比如:form表单请求,a标签发送请求,返回的不是json字符串,而是直接响应到具体的一个html界面
(请求转发是一次请求,然后响应,这个速度快,重定向是两次请求,响应)
ajax同步请求的话,如果后面的函数用到这个请求的返回值,那么必须用同步请求,等待这个请求有响应后,才会执行后面的所用的东西。相当于只有一个主线程(后面依赖前面响应的结果)
ajax异步请求的话,后面的不需要等待这个请求的响应。相当于开启了子线程。
异步请求:不会刷新整个页面,js向服务端发送请求(ajax请求),然后服务接收请求,以json的数据形式传递到客户端,js进行渲染,显示到浏览器上
ajax请求必须要绑定事件,确实是什么时候发送请求?(页面加载事件,一个页面可以写多个页面加载事件$(function () { }),点击事件,鼠标移开事件)
.get和.ajax可以发送同步请求。里面的参数都是字符串的格式
.get里面的第二个data是一个json格式的数据{key:value,key:value…}
ajax发出的请求,返回值必须交给ajax去处理,不能在servlet里面重定向跳转页面。
*****a标签跳转发出get请求服务器上的静态资源,请求一个静态HTML页面,其实是调用tomcat里面默认的servlet,去webapps的下面去找对应名称的html,找到了就直接将这个HTML页面响应给浏览器。
找不到就会404错误(404其实也是一个响应)
***** ajax发送请求实现页面跳转问题:
从Ajax的原理说起,Ajax实际上就是通过XMLHttpRequest来发送请求对象向服务器发送异步请求,从服务器获取数据,然后使用JS来操作DOM而更新页面。
当Ajax请求后,返回的只能是字符流,(返回的是纯文本流,可以是xml格式,js格式,也可以是字符串格式)不能直接转发,重定向到具体的jsp,html上面。所以要使页面跳转,我的解决方案是,将数据用Map返回,然后将数据交由js去解决,
方式二:JSP+el表达式+jstl标签库
需要依赖服务器,并把需要显示的数据在jsp上拼接好,然后jsp本质就是一个servlet,然后把这个jsp转变后的页面,响应给浏览器。
jsp动态的数据,是通过servlet里面转发或者重定向到一个jsp里面,在jsp里面通过四个作用域设置属性,pagecontext,request,session,application
我们就可以在jsp里面通过el表达式(替换掉了java百分号,里面是写java代码)和jstl标签进行对jsp页面进行拼接,然后把整个jsp转变成一个有关页面的字符串响应给浏览器,然后解析,在页面进行显示