如何在ssm框架下實現攔截器功能,只用登入成功才能訪問其他網頁?
阿新 • • 發佈:2019-01-08
springmvc檔案
<!-- 配置攔截器 --> <mvc:interceptors> <mvc:interceptor> <!-- /**表示所有url包括子url路徑 --> <mvc:mapping path="/sys/**"/> <bean class="cn.kgc.interceptor.SysInterceptor"/> </mvc:interceptor> </mvc:interceptors>
建立intercepter包
包:cn.baidu.intercepter
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import cn.kgc.pojo.User; import cn.kgc.tools.Constants; public class SysInterceptor extends HandlerInterceptorAdapter{ public boolean preHandle(HttpServletRequest request,HttpServletResponse response,Object handler) throws Exception{ HttpSession session = request.getSession(); User user = (User)session.getAttribute(Constants.USER_SESSION); if(null == user){ response.sendRedirect(request.getContextPath()+"/401.jsp"); return false; } return true; } }
controller類
package cn.kgc.controller; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import cn.kgc.pojo.User; import cn.kgc.service.UserService; import cn.kgc.tools.Constants; @Controller public class LoginController { @Resource private UserService userService; @RequestMapping(value="/login.html") public String login(){ return "login"; } @RequestMapping(value="/dologin.html",method=RequestMethod.POST) public String doLogin(@RequestParam String userCode,@RequestParam String userPassword,HttpServletRequest request,HttpSession session) throws Exception{ //呼叫service方法,進行使用者匹配 User user = userService.login(userCode,userPassword); if(null != user){//登入成功 //放入session session.setAttribute(Constants.USER_SESSION, user); //頁面跳轉(frame.jsp) return "redirect:/sys/main.html"; }else{ //頁面跳轉(login.jsp)帶出提示資訊--轉發 request.setAttribute("error", "使用者名稱或密碼不正確"); return "login"; } } @RequestMapping(value="/logout.html") public String logout(HttpSession session){ //清除session session.removeAttribute(Constants.USER_SESSION); return "login"; } @RequestMapping(value="/sys/main.html") public String main(){ return "frame"; } }
service層
package cn.kgc.service;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import cn.kgc.dao.UserMapper;
import cn.kgc.pojo.User;
@Service
public class UserServiceImpl implements UserService{
@Resource
private UserMapper userMapper;
@Override
public User login(String userCode, String userPassword) throws Exception {
// TODO Auto-generated method stub
User user = null;
user = userMapper.getLoginUser(userCode);
//匹配密碼
if(null != user){
if(!user.getUserPassword().equals(userPassword)){
user = null;
}
}
return user;
}
}
dao層
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "http://mybatis.org/dtd/mybatis-3-mapper.dtd" "mybatis-3-mapper.dtd" >
<mapper namespace="cn.kgc.dao.UserMapper">
<select id="getLoginUser" resultType="User">
select * from smbms_user u
<trim prefix="where" prefixOverrides="and | or">
<if test="userCode != null">
and u.userCode = #{userCode}
</if>
</trim>
</select>
</mapper>