僅供參考
設置session值,根據自己的需求設置值
/** * 登入驗證 * * @return */ @RequestMapping(value = "/loginCheck.htm", method = RequestMethod.POST) @ResponseBody public Response loginCheck(User user) { responseUtil = new Response(); List<User> list = userService.getUser(user); if (list != null && list.size() > 0) { this.getSession().setAttribute("user", list.get(0));//向session中填入登入信息 responseUtil.setStatusAndMessage(HttpStatus.HTTP_SUCCESS, "驗證成功"); } return responseUtil; }
web.xml設置session時間
<!-- session60分鍾時間 --> <session-config> <session-timeout>60</session-timeout> </session-config>
設置攔截器,可以在這里設置日志、權限、是否登入。下面是判斷是否登入,如果沒有登入就跳轉登入頁面
package com.springmvc.util.action; import java.io.PrintWriter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Repository; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import com.springmvc.model.User; @Repository public class SystemInterceptor extends HandlerInterceptorAdapter{ /** * 訪問前判斷session是否有值,是否登入 */ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); User user = (User)request.getSession().getAttribute("user"); if (user == null) { // 未登錄 PrintWriter out = response.getWriter(); StringBuilder builder = new StringBuilder(); builder.append("<script type=\"text/javascript\" charset=\"UTF-8\">"); builder.append("alert(\"頁面過期,請重新登錄\");"); builder.append("window.top.location.href=\""); String basePath = String.valueOf(request.getAttribute("basePath")); builder.append(basePath+"101/login.htm\";</script>"); out.print(builder.toString()); out.close(); return false; } else { return true; } } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } }
在對應dispatcher-servlet.xml,也就是servlet中設置需要攔截的路徑、不需要攔截的、攔截之后需要在哪個類中處理
<mvc:interceptors> <mvc:interceptor> <!-- 需攔截的地址 --> <!-- 一級目錄 --> <mvc:mapping path="/*.do" /> <mvc:mapping path="/*.ajax" /> <mvc:mapping path="/*.htm" /> <!-- 二級目錄 --> <mvc:mapping path="/*/*.do" /> <mvc:mapping path="/*/*.ajax" /> <mvc:mapping path="/*/*.htm" /> <!-- 需排除攔截的地址 --> <mvc:exclude-mapping path="/*/login.htm"/> <mvc:exclude-mapping path="/*/loginCheck.htm"/> <!-- 攔截之后處理類 --> <bean class="com.springmvc.util.action.SystemInterceptor" /> </mvc:interceptor> </mvc:interceptors>
可以在baseAction中添加session獲取方法
public User getSessionObject(){ User user = (User)getRequest().getSession().getAttribute("user"); return user; }
