首选我们以登录拦截为例:
登陆页面:
<center><h2>登录页面</h2></center>
<form action="${pageContext.request.contextPath }/usper/login" method="post">
请输入用户名:<input type="text" name="name"/><br/>
请输入用户密码: <input type="text" name="password"/><br/>
<input type="submit" value="登录"/>
</form>
控制类的后台操作:
//登录
@RequestMapping("/login")
public String login(User user,HttpSession session,Model model) {
try {
User login = service.login(user.getName());
session.setAttribute("name", user.getName());
if(login!=null&&user.getPassword().equals(login.getPassword())){
return "forward:/usper/findAll";
}
} catch (Exception e) {
return "index";
}
return "index";
}
拦截类要实现HandlerInterceptor类:
package com.baway.interceptor;
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.baway.pojo.User;
public class LoginInterceptor implements HandlerInterceptor{
@Override
public void afterCompletion(HttpServletRequest arg0,
HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
// TODO Auto-generated method stub
}
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
Object arg2, ModelAndView arg3) throws Exception {
// TODO Auto-generated method stub
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
Object arg2) throws Exception {
HttpSession session = request.getSession();
String name = (String) session.getAttribute("name");
System.out.println("session----"+name);
if(name!=null){
return true;
}else{
request.getRequestDispatcher("/index.jsp").forward(request, response);
return false;
}}
}
最后要springmvc.xml配置:
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/usper/**"/>
<!-- 不拦截登录页面,不拦截登录提交后执行登录方法 ,但拦截查询方法之前的这段 -->
<mvc:exclude-mapping path="/usper/login"/>
<bean class="com.baway.interceptor.LoginInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>