难点:aop类是普通的java类,session是无法注入的,那么在有状态的系统中如何获取用户相关信息呢,session是必经之路啊,获取session就变的很重要。思索很久没有办法,后来在网上看到了解决办法。

思路是:
i. SysContext 成员变量 request,session,response
ii. Filter 目的是给 SysContext 中的成员赋值
iii.然后在AOP中使用这个SysContext的值
要用好,需要理解 ThreadLocal和 和Filter 执行顺序
1.aop获取request,response,session等
public class SysContext {
private static ThreadLocal<HttpServletRequest> requestLocal=new ThreadLocal<HttpServletRequest>();
private static ThreadLocal<HttpServletResponse> responseLocal=new ThreadLocal<HttpServletResponse>();
public static HttpServletRequest getRequest(){
return requestLocalget();
}
public static void setRequest(HttpServletRequest request){
requestLocalset(request);
}
public static HttpServletResponse getResponse(){
return responseLocalget();
}
public static void setResponse(HttpServletResponse response){
responseLocalset(response);
}
public static HttpSession getSession(){
return (HttpSession)(getRequest())getSession();
}
}
2.添加过滤器
public class GetContextFilter implements Filter{
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
SysContextsetRequest((HttpServletRequest)request);
SysContextsetResponse((HttpServletResponse)response);
chaindoFilter(request, response);
}
@Override
public void init(FilterConfig config) throws ServletException {
}
}
3.配置web.xml
将这部分放置在最前面,这样可以过滤到所有的请求
<filter> <filter-name>sessionFilter</filter-name> <filter-class>comuneifilterGetContextFilter</filter-class> </filter> <filter-mapping> <filter-name>sessionFilter</filter-name> <url-pattern>*</url-pattern> </filter-mapping>
4.spring aop before
从session中取出用户名,如果不存在,抛出异常跳转,将错误信息放到request中
@Aspect
public class AdminAspect {
ActionContext context = ActionContextgetContext();
HttpServletRequest request;
HttpServletResponse response;
@Before("execution(* comuneiActionAdminActiongetPrivileges())")
public void adminPrivilegeCheck()
throws Throwable {
HttpSession session = SysContextgetSession();
request = SysContextgetRequest();
response = SysContextgetResponse();
String userName = "";
try {
userName = sessiongetAttribute("userName")toString();
if(userName==null||userNameequals(""))
throw new Exception("no privilege");
} catch (Exception ex) {
requestsetAttribute("msg", "{\"res\":\"" + "无权限" + "\"}");
try {
requestgetRequestDispatcher("/jsp/jsonjsp")forward(
request, response);
} catch (ServletException e) {
eprintStackTrace();
} catch (IOException e) {
eprintStackTrace();
}
}
}
}
5.applicationContext.xml
<bean id="adminAspect" class="comuneiaopAdminAspect"></bean>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# aop实现权限控制
# spring
# aop
# 权限
# aop权限控制
# Spring AOP拦截-三种方式实现自动代理详解
# 详解SpringBoot AOP 拦截器(Aspect注解方式)
# spring boot如何使用spring AOP实现拦截器
# 详解spring面向切面aop拦截器
# 详解Spring AOP 拦截器的基本实现
# spring 重复注解和aop拦截的实现示例
# 很久
# 这部
# 必经之路
# 要用
# 不存在
# 很重要
# 相关信息
# 没有办法
# 跳转
# 错误信息
# 解决办法
# 抛出
# 使用这个
# 最前面
# 大家多多
# 看到了
# 在网上
# 目的是
# return
# getRequest
相关文章:
网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?
如何通过服务器快速搭建网站?完整步骤解析
交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?
网站制作软件免费下载安装,有哪些免费下载的软件网站?
制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?
表情包在线制作网站免费,表情包怎么弄?
网站建设制作、微信公众号,公明人民医院怎么在网上预约?
建站之星伪静态规则如何设置?
建站之星后台管理:高效配置与模板优化提升用户体验
,南京靠谱的征婚网站?
淘宝制作网站有哪些,淘宝网官网主页?
教程网站设计制作软件,怎么创建自己的一个网站?
如何通过.red域名打造高辨识度品牌网站?
如何确保西部建站助手FTP传输的安全性?
如何自定义建站之星网站的导航菜单样式?
洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
开封网站制作公司,网络用语开封是什么意思?
制作国外网站的软件,国外有哪些比较优质的网站推荐?
c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
制作充值网站的软件,做人力招聘为什么要自己交端口钱?
如何用免费手机建站系统零基础打造专业网站?
如何在阿里云部署织梦网站?
网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?
如何通过多用户协作模板快速搭建高效企业网站?
如何通过VPS搭建网站快速盈利?
怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?
如何通过万网虚拟主机快速搭建网站?
如何用5美元大硬盘VPS安全高效搭建个人网站?
如何选择可靠的免备案建站服务器?
南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?
建站之星手机一键生成:多端自适应+小程序开发快速建站指南
如何配置WinSCP新建站点的密钥验证步骤?
行程制作网站有哪些,第三方机票电子行程单怎么开?
网站网页制作专业公司,怎样制作自己的网页?
建站之星CMS建站配置指南:模板选择与SEO优化技巧
如何做网站制作流程,*游戏网站怎么搭建?
如何快速搭建FTP站点实现文件共享?
南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?
建站之星后台管理如何实现高效配置?
西安大型网站制作公司,西安招聘网站最好的是哪个?
建站之星如何助力企业快速打造五合一网站?
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
建站之星如何保障用户数据免受黑客入侵?
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
如何在IIS服务器上快速部署高效网站?
建站之星如何防范黑客攻击与数据泄露?
如何用花生壳三步快速搭建专属网站?
长沙企业网站制作哪家好,长沙水业集团官方网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。