js请求后台代码添加拦截器:

package com.ctzj.biz.isale.deploy.controller;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.List;
import java.util.Map; import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import org.apache.curator.utils.ZKPaths;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.socket.WebSocketSession; import com.ctzj.biz.isale.deploy.config.ApplicationProperties;
import com.ctzj.biz.isale.deploy.model.Menu;
import com.ctzj.biz.isale.deploy.model.ResponseResult;
import com.ctzj.biz.isale.deploy.model.dataobject.DeployConfigDo;
import com.ctzj.biz.isale.deploy.model.query.DeployConfigQuery;
import com.ctzj.biz.isale.deploy.service.DeployConfigService;
import com.ctzj.biz.isale.deploy.service.MenuConfigService;
import com.ctzj.biz.isale.deploy.util.Interceptor;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps; @RestController
@RequestMapping(value = "/dispatcher")
public class DispatcherController extends WebMvcConfigurerAdapter{ @Autowired
private DeployConfigService deployConfigService; @Autowired
private MenuConfigService menuConfigService;
@Autowired
private ApplicationProperties properties; /**
* 登录验证
* @param request
* @param response
* @return
* @throws UnsupportedEncodingException
*/
@RequestMapping("/login")
@ResponseBody
public ResponseResult<String> login(HttpServletRequest request,
HttpServletResponse response,String username,String password) throws UnsupportedEncodingException {
HttpSession session = request.getSession(); if(properties.getPstUsername().equals(username)&&properties.getPstPassword().equals(password)){
session.setAttribute("user", username);
}else if(properties.getProdUsername().equals(username)&&properties.getProdPassword().equals(password)){
session.setAttribute("user", username);
}else if(properties.getSuperUsername().equals(username)&&properties.getSuperPassword().equals(password)){
session.setAttribute("user", username);
}else{
username="用户名或密码错误!!!";
return ResponseResult.buildFailure(username);
} return ResponseResult.buildSuccessInstance
(username);
} public void addInterceptors(InterceptorRegistry registry) {
// 多个拦截器组成一个拦截器链
// addPathPatterns 用于添加拦截规则
// excludePathPatterns 用户排除拦截
registry.addInterceptor(new Interceptor()).addPathPatterns("/dispatcher/*").excludePathPatterns("/dispatcher/login");
super.addInterceptors(registry);
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
super.addResourceHandlers(registry);
} @Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/toLogin").setViewName("login.html");
super.addViewControllers(registry);
} }

只要继承

WebMvcConfigurerAdapter类后重写addInterceptors方法
再新建拦截器的类
package com.ctzj.biz.isale.deploy.util;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView; import com.ctzj.biz.isale.deploy.websocket.LocalShellThread; /**
* Created by 风流丶沙.
* Date :2017/10/25 9:36
*/
public class Interceptor implements HandlerInterceptor {
private static final Logger LOG = LoggerFactory.getLogger(LocalShellThread.class); @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 arg0, HttpServletResponse arg1,
Object arg2) throws Exception {
LOG.info("method={}",arg0.getMethod());
String role = (String) arg0.getSession().getAttribute("user");
if(null==role||"".equals(role)){
arg1.sendRedirect("/login.html");
// arg0.getRequestDispatcher("/login.html").forward(arg0, arg1);
return false;
}else{
return true;
}
} }
preHandle这个方法再调用controller前调用,返回true继续执行下面代码,返回false不执行后面的代码!
 

javaweb添加拦截器的更多相关文章

  1. spring boot 添加拦截器

    构建一个spring boot项目. 添加拦截器需要添加一个configuration @Configuration @ComponentScan(basePackageClasses = Appli ...

  2. (七)CXF添加拦截器

    今天开始讲下拦截器,前面大家学过servlet,struts2 都有拦截器概念,主要作用是做一些权限过滤,编码处理等: webservice也可以加上拦截器,我们可以给webservice请求加权限判 ...

  3. 使用CXF为webservice添加拦截器

      拦截器分为Service端和Client端 拦截器是在发送soap消息包的某一个时机拦截soap消息包,对soap消息包的数据进行分析或处理.分为CXF自带的拦截器和自定义的拦截器 1.Servi ...

  4. SpringBoot如何添加拦截器

    在web开发的过程中,为了实现登录权限验证,我们往往需要添加一个拦截器在用户的的请求到达controller层的时候实现登录验证,那么SpringBoot如何添加拦截器呢? 步骤如下: 1.继承Web ...

  5. CXF添加拦截器和自定义拦截器

    前面讲了如何采用CXF开发webservice,现在来讲如何添加拦截器和自定义拦截器. 服务端代码: HelloWorld implementor=new HelloWorldImpl(); Stri ...

  6. (八)CXF之用spring添加拦截器

    一.案例 本章案例是基于CXF之自定义拦截器基础之上改造的,目的是在服务端中用spring添加拦截器 配置web.xml <?xml version="1.0" encodi ...

  7. (五)CXF之添加拦截器

    一.需求分析 webService中的拦截器类似于servlet的Filter过滤器.一般用于调用服务前后先调用拦截器的方法. 二.案例 本章案例是基于上一章节的基础上添加拦截器的 2.1 服务端添加 ...

  8. 在Java后端如何添加拦截器

    在安全编码规范中,在Java后端controller层接口需要对调用者的身份进行确认,以防非法用户进行访问.若是在controller层的每个接口处都添加逻辑判断,那么代码重复度高,并且费力费时.此时 ...

  9. Spring Boot 2.X 如何添加拦截器?

    最近使用SpringBoot2.X搭建了一个项目,大部分接口都需要做登录校验,所以打算使用注解+拦截器来实现,在此记录下实现过程. 一.实现原理 1. 自定义一个注解@NeedLogin,如果接口需要 ...

随机推荐

  1. 转: .Net 4.0 ExpandoObject 使用

    本篇文章中就ExpandoObject的基本使用进行一些demo.我们几乎都知道dynamic特性是.net 4.0中一个主要的新特性,而ExpandoObject正是这样的一个动态的类型.Expan ...

  2. Python 爬虫练习(一) 爬取国内代理ip

    简单的正则表达式练习,爬取代理 ip. 仅爬取前三页,用正则匹配过滤出 ip 地址和 端口,分别作为key.value 存入 validip 字典. 如果要确定代理 ip 是否真的可用,还需要再对代理 ...

  3. lua luaconf解读

    定义了一些跟平台相关的宏,明确指出一些不推荐使用的函数,如lua_cpcall.lua_strlen

  4. sqoop的导入导出

    1.知道某列的值的增量导入(mysql------>文件) bin/sqoop import \--connect jdbc:mysql://bigdatcdh01:3306/test \--u ...

  5. window.location.href跳转至空白页

    现象:window.location.href = "XXX"调到了空白页,但是将XXX在窗口地址栏输入就会可以访问到. 原因:就是XXX前缀没有加上"http://&q ...

  6. 【机器学习】彻底搞懂CNN

    之前通过各种博客视频学习CNN,总是对参数啊原理啊什么的懵懵懂懂..这次上课终于弄明白了,O(∩_∩)O~ 上世纪科学家们发现了几个视觉神经特点,视神经具有局部感受眼,一整张图的识别由多个局部识别点构 ...

  7. 利用python web框架django实现py-faster-rcnn demo实例

    操作系统.编程环境及其他: window7  cpu  python2.7  pycharm5.0  django1.8x 说明:本blog是上一篇blog(http://www.cnblogs.co ...

  8. 51Nod 1289 大鱼吃小鱼 栈模拟 思路

    1289 大鱼吃小鱼 栈模拟 思路 题目链接 https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1289 思路: 用栈来模拟 ...

  9. php 可逆加密方法

    可以逆转的加密类,没有密钥很难破解 [PHP]代码 <? class encryptCalss { var $key=12; function encode($txt){ for($i=0;$i ...

  10. 基于iTextSharp的PDF文档操作

    公司是跨境电商,需要和各种物流打交道,需要把东西交给物流,让他们发到世界各地.其中需要物流公司提供一个运单号,来追踪货物到达哪里?! 最近在和DHL物流公司(应该是个大公司)对接,取运单号的方式是调用 ...