spring aop before 返回
阿新 • • 發佈:2019-02-11
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{ @Override public void destroy() { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { SysContext.setRequest((HttpServletRequest)request); SysContext.setResponse((HttpServletResponse)response); chain.doFilter(request, response); } @Override public 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中
@Aspect
public 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>
菜鳥學習筆記,歡迎指正。