atcrowdfunding-web
com.itliupengcheng.atcrowdfunding.controller
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package com.atguigu.atcrowdfunding.controller; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import javax.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.atguigu.atcrowdfunding.bean.AJAXResult; import com.atguigu.atcrowdfunding.bean.Permission; import com.atguigu.atcrowdfunding.bean.User; import com.atguigu.atcrowdfunding.service.PermissionService; import com.atguigu.atcrowdfunding.service.UserService; @Controller public class DispatcherController { @Autowired private UserService userService; @Autowired private PermissionService permissionService; @RequestMapping("/login") public String login() { return "login"; } @RequestMapping("/error") public String error() { return "error"; } @RequestMapping("/logout") public String logout(HttpSession session) { //session.removeAttribute("loginUser"); session.invalidate(); return "redirect:login"; } @RequestMapping("/main") public String main() { return "main"; } @ResponseBody @RequestMapping("/doAJAXLogin") public Object doAJAXLogin(User user, HttpSession session) { AJAXResult result = new AJAXResult(); User dbUser = userService.query4Login(user); if ( dbUser != null ) { session.setAttribute("loginUser", dbUser); // List<Permission> permissions = permissionService.queryPermissionsByUser(dbUser); Map<Integer, Permission> permissionMap = new HashMap<Integer, Permission>(); Permission root = null; Set<String> uriSet = new HashSet<String>(); for ( Permission permission : permissions ) { permissionMap.put(permission.getId(), permission); if ( permission.getUrl() != null && !"".equals(permission.getUrl()) ) { uriSet.add(session.getServletContext().getContextPath() + permission.getUrl()); } } session.setAttribute("authUriSet", uriSet); for ( Permission permission : permissions ) { Permission child = permission; if ( child.getPid() == 0 ) { root = permission; } else { Permission parent = permissionMap.get(child.getPid()); parent.getChildren().add(child); } } session.setAttribute("rootPermission", root); result.setSuccess(true); } else { result.setSuccess(false); } return result; } /** * 鎵ц鐧婚檰 * @return */ @RequestMapping("/doLogin") public String doLogin( User user, Model model ) throws Exception { String loginacct = user.getLoginacct(); User dbUser = userService.query4Login(user); // 3) 鍒ゆ柇鐢ㄦ埛淇℃伅鏄惁瀛樺湪 if ( dbUser != null ) { // 鐧婚檰鎴愬姛锛岃烦杞埌涓婚〉闈� return "main"; } else { // 鐧婚檰澶辫触锛岃烦杞洖鍒扮櫥闄嗛〉闈紝鎻愮ず閿欒淇℃伅 String errorMsg = "鐧婚檰璐﹀彿鎴栧瘑鐮佷笉姝g‘锛岃閲嶆柊杈撳叆"; model.addAttribute("errorMsg", errorMsg); return "redirect:login"; } } }
com.itliupengcheng.atcrowdfunding.web
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package com.atguigu.atcrowdfunding.web; import java.util.HashSet; import java.util.List; import java.util.Set; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import com.atguigu.atcrowdfunding.bean.Permission; import com.atguigu.atcrowdfunding.service.PermissionService; public class AuthInterceptor extends HandlerInterceptorAdapter { @Autowired private PermissionService permissionService; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 鑾峰彇鐢ㄦ埛鐨勮姹傚湴鍧� String uri = request.getRequestURI(); String path = request.getSession().getServletContext().getContextPath(); // 鍒ゆ柇褰撳墠璺緞鏄惁闇�瑕佽繘琛屾潈闄愰獙璇併�� // 鏌ヨ鎵�鏈夐渶瑕侀獙璇佺殑璺緞闆嗗悎 List<Permission> permissions = permissionService.queryAll(); Set<String> uriSet = new HashSet<String>(); for ( Permission permission : permissions ) { if ( permission.getUrl() != null && !"".equals(permission.getUrl()) ) { uriSet.add(path + permission.getUrl()); } } if ( uriSet.contains(uri) ) { Set<String> authUriSet = (Set<String>)request.getSession().getAttribute("authUriSet"); if ( authUriSet.contains(uri) ) { return true; } else { response.sendRedirect(path + "/error"); return false; } } else { return true; } } }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package com.atguigu.atcrowdfunding.web; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import com.atguigu.atcrowdfunding.bean.User; /** * 鐧婚檰鎷︽埅鍣� * @author 18801 * */ public class LoginInterceptor implements HandlerInterceptor { /** * 鍦ㄦ帶鍒跺櫒鎵ц涔嬪墠瀹屾垚涓氬姟閫昏緫鎿嶄綔 * 鏂规硶鐨勮繑鍥炲�煎喅瀹氶�昏緫鏄惁缁х画鎵ц锛� true锛岃〃绀虹户缁墽琛岋紝 false, 琛ㄧず涓嶅啀缁х画鎵ц銆� */ public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 鍒ゆ柇褰撳墠鐢ㄦ埛鏄惁宸茬粡鐧婚檰 HttpSession session = request.getSession(); User loginUser = (User)session.getAttribute("loginUser"); if ( loginUser == null ) { String path = session.getServletContext().getContextPath(); response.sendRedirect(path + "/login"); return false; } else { return true; } } /** * 鍦ㄦ帶鍒跺櫒鎵ц瀹屾瘯涔嬪悗鎵ц鐨勯�昏緫鎿嶄綔 */ public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // TODO Auto-generated method stub } /** * 鍦ㄥ畬鎴愯鍥炬覆鏌撲箣鍚庯紝鎵ц姝ゆ柟娉曘�� */ public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package com.atguigu.atcrowdfunding.web; import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class ServerStartupListener implements ServletContextListener { public void contextInitialized(ServletContextEvent sce) { // 灏唚eb搴旂敤鍚嶇О锛堣矾寰勶級淇濆瓨鍒癮pplication鑼冨洿涓� ServletContext application = sce.getServletContext(); String path = application.getContextPath(); application.setAttribute("APP_PATH", path); } public void contextDestroyed(ServletContextEvent sce) { // TODO Auto-generated method stub } }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <typeAliases> </typeAliases> </configuration>
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:spring/spring-*.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <listener> <listener-class>com.atguigu.atcrowdfunding.web.ServerStartupListener</listener-class> </listener> <filter> <filter-name>encoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encoding</filter-name> <servlet-name>springmvc</servlet-name> </filter-mapping> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/springmvc-context.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>