springMVC拦截器的使用
2014-07-17 16:48
316 查看
之前在网上找了好久,比如百度,Google找了好久没有,都没有找到一个完整的例子
下面,使用springmvc的注解模式做一个登录的拦截器,没有登录不能访问,登录成功了能进行访问做一个小例子
springmvc的框架就不搭建了
实现springmvc的拦截器有很多种方法,我这里是实现了HandlerInterceptor接口
一 创建拦截器LoginIntercepto类
@Repository
public class LoginIntercepto implements HandlerInterceptor {
@Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object arg2, Exception arg3)
throws Exception {
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse
response,Object arg2, ModelAndView arg3) throws Exception {
}
preHandle预处理回调方法,通俗的说就是在调用某一请求之被执行
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse
response,Object arg2) throws Exception {
System.out.println("拦截器");
//获得在登录的时候保存在session中的admin对象
Object object=request.getSession().getAttribute("admin");
System.out.println("用户名:"+object);
//判断保存在sesion中的值是否为空(不为空返回true 为空返回false)
if(object!=null&&!"".equals(object)){
//true 表示进行执行,比喻说下一个拦截器或者什么...
return true;
}else {
//打印出错误信息
request.setAttribute("ErrorMsg", "你还没用登录,请先登录!");
//使用转发 跳到指定的页面
request.getRequestDispatcher("../index.jsp").forward(request,
response);
//false表示执行流程中断 返回到自己指定的页面
return false;
}
}
}
二 创建一个Controller的类
@Controller
@RequestMapping("/All.do")//等会这就是拦截的地方
//BaseAction主要是获得session request对象的
//当没有登录的时候不能跳到all.jsp页面宝贝数据显示出来。当登录了就能显示该页面
//还能显示数据
public class AddAction extends BaseAction {
@Autowired
private IMerchantServlet merchantServlet;
@RequestMapping(params = "method=All")
public String selectAll(){
List<Merchant> listMerchants=merchantServlet.getByname(null);
super.getRequest().setAttribute("listMerchants", listMerchants);
return "all";
}
}
三 spring-servlet.xml里面的配置
<mvc:interceptors>
<mvc:interceptor>
<!-- 拦截显示数据的Controller-->
//拦截指定的请求
<mvc:mapping path="/All.do"/>
//调用拦截器
<bean class="com.bank.Interceptor.LoginIntercepto"></bean>
</mvc:interceptor>
//当如果有多个拦截器的时候 就什么多个
<!--
<mvc:interceptor> </mvc:interceptor>
-->
</mvc:interceptors>
四 当直接访问
http://localhost:8080/XY_Bank/All.do?method=All
因为你还没有登录 所以就会被拦截器拦截 返回为false 转发到index.jsp页面
当你登录了再访问那个地址,会跳到all.jsp页面显示数据
下面,使用springmvc的注解模式做一个登录的拦截器,没有登录不能访问,登录成功了能进行访问做一个小例子
springmvc的框架就不搭建了
实现springmvc的拦截器有很多种方法,我这里是实现了HandlerInterceptor接口
一 创建拦截器LoginIntercepto类
@Repository
public class LoginIntercepto implements HandlerInterceptor {
@Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object arg2, Exception arg3)
throws Exception {
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse
response,Object arg2, ModelAndView arg3) throws Exception {
}
preHandle预处理回调方法,通俗的说就是在调用某一请求之被执行
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse
response,Object arg2) throws Exception {
System.out.println("拦截器");
//获得在登录的时候保存在session中的admin对象
Object object=request.getSession().getAttribute("admin");
System.out.println("用户名:"+object);
//判断保存在sesion中的值是否为空(不为空返回true 为空返回false)
if(object!=null&&!"".equals(object)){
//true 表示进行执行,比喻说下一个拦截器或者什么...
return true;
}else {
//打印出错误信息
request.setAttribute("ErrorMsg", "你还没用登录,请先登录!");
//使用转发 跳到指定的页面
request.getRequestDispatcher("../index.jsp").forward(request,
response);
//false表示执行流程中断 返回到自己指定的页面
return false;
}
}
}
二 创建一个Controller的类
@Controller
@RequestMapping("/All.do")//等会这就是拦截的地方
//BaseAction主要是获得session request对象的
//当没有登录的时候不能跳到all.jsp页面宝贝数据显示出来。当登录了就能显示该页面
//还能显示数据
public class AddAction extends BaseAction {
@Autowired
private IMerchantServlet merchantServlet;
@RequestMapping(params = "method=All")
public String selectAll(){
List<Merchant> listMerchants=merchantServlet.getByname(null);
super.getRequest().setAttribute("listMerchants", listMerchants);
return "all";
}
}
三 spring-servlet.xml里面的配置
<mvc:interceptors>
<mvc:interceptor>
<!-- 拦截显示数据的Controller-->
//拦截指定的请求
<mvc:mapping path="/All.do"/>
//调用拦截器
<bean class="com.bank.Interceptor.LoginIntercepto"></bean>
</mvc:interceptor>
//当如果有多个拦截器的时候 就什么多个
<!--
<mvc:interceptor> </mvc:interceptor>
-->
</mvc:interceptors>
四 当直接访问
http://localhost:8080/XY_Bank/All.do?method=All
因为你还没有登录 所以就会被拦截器拦截 返回为false 转发到index.jsp页面
当你登录了再访问那个地址,会跳到all.jsp页面显示数据
相关文章推荐
- SpringMVC拦截器简单使用
- SpringMVC拦截器简单使用
- SpringMVC拦截器的使用
- springMVC --拦截器详细,使用和自定义拦截器
- springmvc拦截器使用
- SpringMVC拦截器简单使用
- springMVC拦截器使用场景,使用步骤(摘录整理)
- spring.spring mvc--SpringMVC拦截器简单使用
- 使用SpringMVC拦截器做一个简单的权限控制
- SpringMVC 自定义拦截器使用
- SpringMVC拦截器简单使用
- springmvc 拦截器使用注意点
- SpringMVC拦截器简单使用
- springmvc里使用注解进行拦截器配置
- 和大彪一起来学习-SpringMvc之第四回(拦截器使用) 分类: SpringMvc 2015-02-04 20:09 571人阅读 评论(0) 收藏
- SpringMVC拦截器简单使用
- SpringMVC拦截器使用,初学者
- SpringMVC中拦截器的使用
- SpringMVC拦截器简单使用
- SpringMvc登陆拦截器的基本使用