spring aop before 返回

来源:互联网 发布:逍遥棋牌源码 编辑:程序博客网 时间:2024/06/16 02:24

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 requestLocal.get();}public static void setRequest(HttpServletRequest request){requestLocal.set(request);}public static HttpServletResponse getResponse(){return responseLocal.get();}public static void setResponse(HttpServletResponse response){responseLocal.set(response);}public static HttpSession getSession(){return (HttpSession)(getRequest()).getSession();}}

2.添加过滤器

public class GetContextFilter implements Filter{@Overridepublic void destroy() {}@Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {SysContext.setRequest((HttpServletRequest)request);SysContext.setResponse((HttpServletResponse)response);chain.doFilter(request, response);}@Overridepublic void init(FilterConfig config) throws ServletException {}}


3.配置web.xml

将这部分放置在最前面,这样可以过滤到所有的请求

<filter><filter-name>sessionFilter</filter-name><filter-class>com.unei.filter.GetContextFilter</filter-class></filter><filter-mapping><filter-name>sessionFilter</filter-name><url-pattern>*</url-pattern></filter-mapping>


4.spring aop before

从session中取出用户名,如果不存在,抛出异常跳转,将错误信息放到request中

@Aspectpublic class AdminAspect {ActionContext context = ActionContext.getContext();HttpServletRequest request;HttpServletResponse response;@Before("execution(* com.unei.Action.AdminAction.getPrivileges(..))")public void adminPrivilegeCheck()throws Throwable {HttpSession session = SysContext.getSession();request = SysContext.getRequest();response = SysContext.getResponse();String userName = "";try {userName = session.getAttribute("userName").toString();if(userName==null||userName.equals(""))throw new Exception("no privilege");} catch (Exception ex) {request.setAttribute("msg", "{\"res\":\"" + "无权限" + "\"}");try {request.getRequestDispatcher("/jsp/json.jsp").forward(request, response);} catch (ServletException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}}

5.applicationContext.xml

<bean id="adminAspect" class="com.unei.aop.AdminAspect"></bean>



菜鸟学习笔记,欢迎指正。


原创粉丝点击