1.AJAX都有哪些优点和缺点?
-
ajax的优点
- 最大的优是页面无刷新,用户的体验非常好.
- 使用异步方式与服务器通信,具有更加迅速的响应能力.
- 可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器和带宽的负担,节约空间和宽带租用成本.并且减轻服务器的负担,ajax的原则是"按需取数据",可以最大程度的减少冗余请求,和响应对服务器造成的负担.
- 基于标准化的并被广泛支持的技术,不需要下载插件或者小程序
-
ajax的缺点
- ajax不支持浏览器back按钮.
- 安全问题 AJAX暴露了与服务器交互的细节.
- 对搜索引擎的支持比较弱.
- 破坏了程序的异常机制.
- 不容易调试.
2.AJAX应用和传统Web应用有什么不同?
-
在传统的Javascript编程中,如果想得到服务器端数据库或文件上的信息,或者发送客户端信息到服务器,需要建立一个HTML from然后GET或者POST数据到服务器端.用户需要点击"submit"按钮来发送或者接受数据信息,然后等待服务器响应请求,页面重新加载.
-
因为服务器每次都会返回一个新的页面,所以传统的web应用有可能很慢而且用户交互不友好.
-
使用AJAX技术,就可以使Javascript通过XMLHttpRequest对象直接与服务器进行交互
-
通过HTTP Result,一个web页面可以发送一个请求到web服务器并且接受web服务器返回的信息(不用重新加载页面),展示给用户的还是同一个页面,用户感觉页面刷新,也看不到Javascript后台进行的发送请求和接受相应.
3.Shiro的核心概念Subject.SecurityManager.Realm
- Subject:主体,代表了当前"用户",这个用户不一定是一个具体的人,与当前应用交互的任何东西都是Subject,如爬虫.机器人等:即一个抽象概念:所有Subject都绑定到SecurityManager,与Subject的所有交互都会委托给SecurityManager:可以把Subject认为是一个门面:SecurityManager才是实际的执行者.
- SecurityManager:安全管理器:即所有与安全有关的操作都会与SecurityManager交互:且它管理着所有Subject:可以看出它是shiro的核心,SecurityManager相当于spring mvc中的dispatcherServlet前端控制器.
- Realm:域,shiro从Realm获取安全数据(如用户.角色.权限),就是说SecurityManager要验证用户身份,那么它需要从Realm获取相应的用户进行比较确定用户身分是否合法:也需要从Realm得到用户相应的角色/权限进行验证用户是否能进行操作:可以把Realm看成DataSource,即安全数据源.
4.Shiro运行流程(比如登录流程)
- 首先调用Subject,login(token)进行登录,他会委托给SecurityManager
- SecurityManager负责真正的身份验证逻辑;它会委托给Authenticator进行验证;
- Autenticator回吧相应的token传入Realm,从Realm获取身份验证信息,如果没有就返回认证失败,有的话就继续执行操作.
5.如何配置在Spring中配置使用Shiro?
- 在web.xml中配置Shiro的Filter
- 在Spring的配置文件中配置Shiro
- 配置自定义Realm:实现自定义认证和授权
- 配置shiro实体类使用的缓存策略
- 配置SecurityManager
- 配置保证Shiro内部Bean声明周期都得到执行的Lifecycle Bean后置处理器
- 配置AOP 式方法级权限检查
- 配置Shiro Filter