精华内容
下载资源
问答
  • ssm+maven用拦截器实现登录小Demo。下载资源里已经包含SQL文件。 演示地址:https://blog.csdn.net/kzw11/article/details/79940449
  • 简单的通过SSM技术利用拦截器实现登录拦截,
  • ssm登录拦截器

    2019-01-20 13:43:33
    //为空返回到登录页面 response.sendRedirect("/index"); } return false; } 另一个类实现Webmvc的接口 实现@configuration注解 registry.addInterceptor(new MyInterceptor()).addPathPatterns...
     //继承一个hand接口
      public class MyInterceptor implements HandlerInterceptor
      //实现里面的一个方法
     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
    		throws Exception {
    		/获取session中的对象
    	User u = (User) request.getSession().getAttribute("u");
    	//判断是否为空
       if(u!=null) {
    	   return true;
       }else {
       //为空返回到登录页面
    	      response.sendRedirect("/index"); 
       }
    	
    	return false;
    }
    

    另一个类实现Webmvc的接口
    实现@configuration注解
    在这里插入图片描述 registry.addInterceptor(new MyInterceptor()).addPathPatterns("/").excludePathPatterns("/index","/static/");
    这里 addInterceptor(new MyInterceptor()) 这里new的是刚才那个类,
    之后第一个是拦截内容,第二个是放行内容

    展开全文
  • 1、编写拦截器 public class LoginInterceptor implements HandlerInterceptor { // 在拦截点执行前拦截,如果返回true则不执行拦截点后的操作(拦截成功) @Override public boolean preHandle...

    1、编写拦截器

    public class LoginInterceptor implements HandlerInterceptor {
    
    	// 在拦截点执行前拦截,如果返回true则不执行拦截点后的操作(拦截成功)
    	@Override
    	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
    			throws Exception {
    		HttpSession session = request.getSession();
    		//如果已经登录,不拦截
    		if (session.getAttribute("user")!=null) {
    			return true;
    		}
    		//如果没有登录,则跳转到登录界面
    		else {
    			/**
    			 * 以下是为了登录成功后返回到刚刚的操作,不跳到主界面
    			 * 实现:通过将请求URL保存到session的beforePath中,然后在登录时判断beforePath是否为空
    			 */
    			String uri = request.getRequestURI();//拿到上一个页面地址
                String path = uri.substring(request.getContextPath().length());//去掉项目地址长度的字符(因为我的默认项目地址是给出的)
                String query = request.getQueryString();//得到参数
                if(query == null) {
                    query="";
                }
                else {
                    query="?"+query;
                }
                String beforePath = path+query;
                session.setAttribute("beforePath", beforePath);
                
    			response.sendRedirect(request.getContextPath()+"/login");
    			return false;
    		}
    	}
    
    	// 在处理过程中,执行拦截
    	@Override
    	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
    			ModelAndView modelAndView) throws Exception {
    		
    	}
    
    	// 执行完毕,返回前拦截
    	@Override
    	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
    			throws Exception {
    		
    	}
    
    }
    
    

    2、在spring-mvc.xml 的配置文件中配置

    	<!-- 配置拦截器 -->
         <mvc:interceptors>  
    	      <!-- 配置登陆拦截器 -->  
    	      <mvc:interceptor>  
                <mvc:mapping path="/**"/>
                <!-- 但是排除下面这些,也就是不拦截请求 -->
                <mvc:exclude-mapping path="/login"/>
                <mvc:exclude-mapping path="/register"/>
                <mvc:exclude-mapping path="/index"/>
                <mvc:exclude-mapping path="/selectProductByCategoryId"/>
                <mvc:exclude-mapping path="/showProductDetail"/>
                <!-- ajax请求的action不进行拦截 -->
                <mvc:exclude-mapping path="/*.ajax"/>
    	        <bean class="com.wwz.eshop.interceptor.LoginInterceptor"></bean>  
    	      </mvc:interceptor>  
     	</mvc:interceptors>  
    

    3、拦截后跳到登录界面,登录成功后跳到上一个操作,我们需要在登录控制器中配置

    @Controller
    public class LoginController {
    	@Autowired
    	UserService userService;
    	
    	//跳转到登录界面
    	@RequestMapping(value="/login",method=RequestMethod.GET)
    	public String toLogin()
    	{
    		return "fore/login";
    	}
    	
    	//登录成功跳转到主界面
    	@RequestMapping(value="/login",method=RequestMethod.POST)
    	public String login(User u,HttpSession session) throws CustomException
    	{
    		User user=userService.getUser(u);
    		if (user==null) {
    			return "fore/login";
    		}
    		session.setAttribute("user", user);
    		//判断beforePath是否有请求的URL,有的话取出来跳转
    		String beforePath=(String) session.getAttribute("beforePath");
    		if(beforePath!=null) {
                return "redirect:"+beforePath;
    
            }
    		return "redirect:/index";
    	}
    }
    
    
    展开全文
  • 一个简单的基于java SSM框架的登录拦截器demo,里面有非常详细的代码,简单易懂,方便初次接触拦截器的人使用
  • ssm框架实现用户登录拦截器和过滤器

    万次阅读 多人点赞 2018-06-22 23:03:42
    文章只要是实现用户登录过程的验证,用拦截器可以拦截用户没有登录的情况下,不能进行访问系统页面 以下是自定义拦截器工程目录实现的过程: 1:新建一个 interceptor 拦截器包,创建一个 LoginInterceptor 拦截器...

    文章只要是实现用户登录过程的验证,用拦截器可以拦截用户没有登录的情况下,不能进行访问系统页面

    以下是自定义拦截器工程目录实现的过程:

    1:新建一个 interceptor 拦截器包,创建一个 LoginInterceptor 拦截器类

    2:将这个类,继承 HandlerInterceptor 接口,并实现 HandlerInterceptor 这个接口的三个方法

     

    public class LoginInterceptor implements HandlerInterceptor {
    
    	@Override
    	public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
    			throws Exception {
    		// 执行完毕,返回前拦截		
    	}
    
    	@Override
    	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
    			throws Exception {
    		// 在处理过程中,执行拦截		
    	}
    
    	@Override
    	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
    		// 在拦截点执行前拦截,如果返回true则不执行拦截点后的操作(拦截成功)
    		// 返回false则不执行拦截
    		HttpSession session = request.getSession();
    		//String uri = request.getRequestURI(); // 获取登录的uri,这个是不进行拦截的
    		//if(session.getAttribute("LOGIN_USER")!=null || uri.indexOf("system/login")!=-1) {// 说明登录成功 或者 执行登录功能			
    		if(session.getAttribute("LOGIN_USER")!=null) {
    			// 登录成功不拦截
    			return true;
    		}else {
    			// 拦截后进入登录页面
    			response.sendRedirect(request.getContextPath()+"/system/login");
    			return false;
    		}
    	}
    }
    
    
    

    3:拦截器是要配置的,将这个类,配置在 spring-mvc.xml 的配置文件中,如下:

            <!-- 配置拦截器 -->
    	<mvc:interceptors>
    		<mvc:interceptor>
    			<!-- 拦截所有mvc控制器 -->
    			<mvc:mapping path="/**"/>
    			<!-- mvc:exclude-mapping是另外一种拦截,它可以在你后来的测试中对某个页面进行不拦截,这样就不用在
    				LoginInterceptor的preHandler方法里面获取不拦截的请求uri地址了(优选) -->
    			<mvc:exclude-mapping path="/system/login" />
    			<bean class="com.lingshi.bookstore.interceptor.LoginInterceptor"></bean>			
    		</mvc:interceptor>
    	</mvc:interceptors>
    

    将登陆拦截器类 LoginInterceptor,配置到里面

    这个拦截器有2个知识要点:

    ①:

    <mvc:mapping path="/**"/> 是已经拦截了所有请求,包括登录,如果后来想不拦截某个页面,就在拦截配置里面配置 
    <mvc:exclude-mapping path="/system/login" />

    ②:也可以不在配置文件里拦截某个页面请求,在拦截类里面获取拦截路径,然后做个判断

    eg:

    //String uri = request.getRequestURI(); // 获取登录的uri,这个是不进行拦截的
    		//if(session.getAttribute("LOGIN_USER")!=null || uri.indexOf("system/login")!=-1)

     

    4:页面:

    <div align="center">
    		<br><br><br>
    		<!-- 作业:post方法与get方法的区别 -->
    		<form action="${pageContext.request.contextPath}/system/login" method="post">
    			<p>用户登录</p>
    			账号:<input name="account" type="text" />
    			<br><br>
    			密码:<input name="password" type="password" />
    			<br><br>
    			<input type="reset" value="撤 销" />
    			<input type="submit" value="提 交" />
    		</form>
    	</div>

    拦截器已经实现了。

     

    二:过滤器

    过滤器就分两步:新建过滤器类,接着配置web.xml

    1:

    建一个LoginFilter 类,继承 Filter 类

    public class LoginFilter implements Filter {
    
    	@Override
    	public void destroy() {
    		// TODO Auto-generated method stub
    		
    	}
    
    	@Override
    	public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
    			throws IOException, ServletException {
    		// TODO Auto-generated method stub
    		HttpServletRequest request = (HttpServletRequest)arg0;
    		HttpServletResponse response = (HttpServletResponse)arg1;
    		HttpSession session = request.getSession();
    		
    		if(session.getAttribute("LOGIN_USER")==null
    				&& request.getRequestURI().indexOf("/system/login") == -1){
    			// 没有登录
    			response.sendRedirect(request.getContextPath()+"/system/login");
    		}else{
    			// 已经登录,继续请求下一级资源(继续访问)
    			arg2.doFilter(arg0, arg1);
    		}
    		
    	}
    
    	@Override
    	public void init(FilterConfig arg0) throws ServletException {
    		// TODO Auto-generated method stub
    		
    	}
    	
    }

    2:配置 web.xml ,在字符过滤器下面接着配置一个过滤器

    	
    	<!-- 使用filter实现登录控制 -->
    	<filter>
    		<filter-name>SessionFilter</filter-name>
    		<filter-class>com.lingshi.bookstore.filter.LoginFilter</filter-class>
    	</filter>
    	<filter-mapping>
    		<filter-name>SessionFilter</filter-name>
    		<!-- 所有的管理页面需要登录后才能访问 -->
    		<url-pattern>/views/*</url-pattern>
    	</filter-mapping>
    	

    将过滤器类 LoginFilter.class 配置到过滤器配置文件中,即可完成 .

    过滤器也实现了

    展开全文
  • 在上面的配置文件中,我们可以看到,我们的过滤过滤的是admin下的和system下的界面,在这个两个目录下的,有登录,获取验证码以及获取静态资源是不过滤的,bean中放的是我们要实现的类,注意路径,命名,全部都要...

    配置文件

    springMVC作为控制器,是能控制网页的访问的,我们在springMvc的xml文件中配置关于过滤器的信息

    在这里插入图片描述

    实现的类

    在上面的配置文件中,我们可以看到,我们的过滤器过滤的是admin下的和system下的界面,在这个两个目录下的,有登录,获取验证码以及获取静态资源是不过滤的,bean中放的是我们要实现的类,注意路径,命名,全部都要一致,接下来是创建这个类,在这个类中实现过滤器的逻辑层。

    创建一个类,并实现过滤器的接口
    在这里插入图片描述

    在springMVC的interceptor中,可以放多个拦截器,这里截取的是后台的拦截器,过滤分请求之后,请求的时候和请求之前,每次我们访问新的页面,过滤器页面都会被这个过滤器过滤一遍,如同看电影,我们要在门口等人,之后检票,返回的是true,代表的是我们的票是有效的,这样才能进去看电影。

    @Override
    	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
    		String requestURI=request.getRequestURI();//获取请求访问的页面的路径
    		Object admin = request.getSession().getAttribute("admin");
    		System.out.println("链接"+requestURI+"进入拦截器!");
    		if (admin==null) {
    			//表示未登陆,或者登陆失效
    			//表示是普通链接跳转,直接重定向到登录页面
    			response.sendRedirect(request.getServletContext().getContextPath() + "/system/login");
    			return false;
    		}
    		return true;
    	}
    

    简单的写了一个例子,为什么要判断admin是否为空呢,看这里,在控制器的实现类中,我们有一个方法,这个方法的本质是做为视图分发的,同样也有登录的时候的逻辑处理,在这个类的最后的一点代码是这样写的,如果我们的逻辑处理都没问题了,我们就进行页面的转发,并且转发的时候是带有登录的时候的这个用户的用户信息的,并且这个用户信息被塞进去的时候被命名为admin,如果我们想要获取这个用户信息,就用admin这个标识来寻找。因此,我们如果是通过合法的路径来访问主页的,那么我们一定会产生这样的一个登录信息,反之,如果这个登录信息是空的,那么,我们的过滤器就认定本次的登录是不合法的,请回到登录的界面进行登录。

    在这里插入图片描述
    部分代码如下

    /**
    	 * 登录表单提交处理,返回的是一个json类型的值
    	 * @param user
    	 * @param cpacha
    	 * @return
    	 */
    	@RequestMapping(value="/login",method=RequestMethod.POST)
    	//这里的user是从容器中拿出来的,容器会自动把前台传的值塞进这个容器,一定要注意命名的一致性
    	@ResponseBody//意思是返回的时候只返回一个JSON字符串
    	public Map<String,String> loginAct(User user,String cpacha
    			//上面两个变量都是界面传过来的下面这个变量,是用来获取界面塞进服务器的值的
    			,HttpServletRequest request){
    		Map<String, String> ret=new HashMap<String,String>();
    		if (user==null) {
    			ret.put("type", "error");
    			ret.put("msg", "请填写用户信息");
    			return ret;
    		}
    		if(StringUtils.isEmpty(cpacha)){
    			ret.put("type", "error");
    			ret.put("msg", "请填写验证码");
    		}
    		if(StringUtils.isEmpty(user.getUsername())){
    			ret.put("type", "error");
    			ret.put("msg", "请填写用户名!");
    			return ret;
    		}
    		if(StringUtils.isEmpty(user.getPassword())){
    			ret.put("type", "error");
    			ret.put("msg", "请填写密码!");
    			return ret;
    		}
    		Object loginCpacha = request.getSession().getAttribute("loginCpacha");
    		if(loginCpacha == null){
    			ret.put("type", "error");
    			ret.put("msg", "会话超时,请刷新页面!");
    			return ret;
    		}
    		if(!cpacha.toUpperCase().equals(loginCpacha.toString().toUpperCase())){
    			ret.put("type", "error");
    			ret.put("msg", "验证码错误!");
    			return ret;
    		}
    		
    		User findByUsername=userService.findByUsername(user.getUsername());
    		if (findByUsername==null) {
    			ret.put("type", "error");
    			ret.put("msg", "该用户名不存在");
    			return ret;
    		}
    		if (!user.getPassword().equals(findByUsername.getPassword())) {
    			ret.put("type", "error");
    			ret.put("msg", "密码错误");
    			return ret;
    		}
    		//相当于把这个放在了全局变量里面
    		request.getSession().setAttribute("admin", findByUsername);
    		ret.put("type", "success");
    		ret.put("msg", "登录成功");
    		return ret;
    	}
    

    这里只是放了部分的代码,由于是用ssm框架写的,逻辑还是比较复杂的,不可能把所有的逻辑讲清楚,更不可能放这个项目的所有的代码,因此,只是在这里总结了一下ssm框架中的过滤器是怎么实现的,简单的写了个小的例子,当然,真正的实现,还需要在过滤器的实现类中加更多的代码的,只是判断admin是否为空,这一点是远远不够的。

    下面放一个已经写完的成品
    //在请求之前做,下面的return true代表的是可以正常访问

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
    		Object arg2) throws Exception {
    	String requestURI = request.getRequestURI();
    	Object admin = request.getSession().getAttribute("admin");
    	if(admin == null){
    		//表示未登录或者登录失效
    		System.out.println("链接"+requestURI+"进入拦截器!");
    		String header = request.getHeader("X-Requested-With");
    		//判断是否是ajax请求
    		if("XMLHttpRequest".equals(header)){
    			//表示是ajax请求,ajax的使用就是不想刷新整个页面,所以我们不用重定向,只用返回ajax需要的判断信息
    			Map<String, String> ret = new HashMap<String, String>();
    			ret.put("type", "error");
    			ret.put("msg", "登录会话超时或还未登录,请重新登录!");
    			response.getWriter().write(JSONObject.fromObject(ret).toString());
    			return false;
    		}
    		//表示是普通链接跳转,直接重定向到登录页面
    		response.sendRedirect(request.getServletContext().getContextPath() + "/system/login");
    		return false;
    	}
    	//获取菜单id
    	String mid = request.getParameter("_mid");
    	if(!StringUtils.isEmpty(mid)){
    		List<Menu> allThirdMenu = MenuUtil.getAllThirdMenu((List<Menu>)request.getSession().getAttribute("userMenus"), Long.valueOf(mid));
    		request.setAttribute("thirdMenuList", allThirdMenu);
    	}
    	return true;
    }
    
    展开全文
  • 在该项目中添加拦截器即可实现该功能。   首先新建一个interceptor拦截器。 package com.qust.shbz.interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSer...
  • SSM登录拦截器Interceptor例子

    千次阅读 2018-01-19 11:51:14
    这是一个SSM(Spring,SpringMVC,Mybatis)项目前台使用拦截器进行登录的例子,可实现指定页面(需要登录的页面)进行拦截,其他的页面不拦截, 方法的实现由两步: 1.写一个拦截器类 2.在spring-mvc.xml中配置拦截...
  • SSM+拦截器分页

    2018-11-30 17:04:43
    SSM+拦截器分页 - 详情:https://blog.csdn.net/Dream_Weave/article/details/84660302
  • -- 配置要拦截的资源请求 /* :拦截一级所有请求 /isnert.do /delte.do /update.do /** :拦截多级多请求 /user/insert.do /user/delte.do 拦截器只会拦截SpringMVC的【控制器方法】,不会拦截jsp,html等其他资源...
  • SSM要拦截资源首先要有一个拦截器 springmvc中声明拦截器 在springmvc的配置文件中声明要拦截的请求和处理拦截的拦截器 <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/lanjie/**"/&...
  • 项目包链接:...1.登录实现 mapper接口: Employee login (@Param("username")String username,@Param("password")String password); mapper.xml: <select id="logi...
  • ssm配置登录拦截器

    2019-08-22 16:50:58
    interceptor类创建完后,在springmvc.xml中配置拦截器 <!-- 配置需要拦截的方法--> *"/> <!-- 配置拦截器对象--> <bean class="com.wb.interceptor.LoginInterceptor"></bean>  
  • SSM架构:登录拦截器

    2019-05-12 14:39:46
    1.定义登录拦截器 public class LoginInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) ...
  • ssm_拦截器demo

    2019-04-26 20:08:06
    这个小demo里面有ssm的基本框架和配置,还有一个简易版的拦截器的实现
  • SSM笔记-SpringMVC的自定义拦截器,简单实现拦截器,只需要跟着步骤写就好了,没有特别要注意的地方
  • SSM拦截器的使用

    千次阅读 2018-05-13 23:56:40
    拦截器在一个Controller中使用和在多个Controller中的跳转是不同的情况,下面来一一的介绍。1.在一个controller中使用(1)定义拦截器类package cn.bishe.interceptor; import javax.servlet....
  • ssm-拦截器.zip

    2020-09-20 17:05:16
    ssm-拦截器.zip
  • SSM+拦截器+Mysql基础性框架(适合新手研究)
  • 问题: 在ssm项目中实现未登录拦截...-- 配置拦截器 --> <mvc:interceptors> <mvc:interceptor> <!-- 拦截所有目录下面的页面 --> <mvc:mapping path="/**"/> <!-- mvc:exclude-ma
  • SSM 拦截器的配置和具体实现

    千次阅读 2017-11-03 15:37:09
    Controller层中,在登录时,将判断用户名是否存在的结果,放入了session中,在拦截器作用时,会get出session,根据是否有值判断是否拦截。 package com.jk.login.controller; import java.util.HashMap; import ...
  • SSM拦截器应用之登录权限认证

    千次阅读 2018-12-27 09:57:19
    SSM拦截器应用之登录权限认证 拦截器: 拦截到某路径,进行操作。 1.DispatcherServlet:拦截到路径之后交给DispatcherServlet操作,用controller跳转。 SpringMVC具有统一的入口DispatcherServlet,...
  • 我的主要思路是:使用过滤器filter实现对前台页面的拦截(包括.jsp、css、images、js),使用拦截器interceptor实现对后台所有请求的拦截(登陆请求除外)。 文件位置如下,下图是过滤器和拦截器类的位置: web.xml...
  • 最终版:SSM拦截器校验JSON数据(3) -- 解决拦截器获取json后,controller参数为空​​​​​​​ 上一篇:设置拦截器 发送json数据格式 用postman发送json数据,注意这里是raw-json方式,两种不同方式会再谈论。 ...
  • SSM使用拦截器功能

    2019-12-02 16:29:01
    SSM是我们平时用的比较多的框架,拦截器的配置操作,用我的项目小小总结一下 web.xml配置 首先我们再项目的web.xml文件中配置我们的filter <filter> <filter-name>CharacterEncodingFilter</...
  • 这篇文章如果能给你带来帮助 不胜荣幸,如果有错误 ,欢迎批评指正,共同进步。...说实话,本人因为实力有限,并没有深入的去挖拦截器的源代码,会使用也是很久之前的了,每次用的时候,采用ctrl+c,ctrl+...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,698
精华内容 6,679
关键字:

ssm登录拦截器