用Springmvc做一个小小的登录检测

原创 2016年08月28日 21:33:58

首先是一个Action,也就是控制类,里面有一个拦截去a页面的方法“/ToA”,一个跳转到a页面的方法“ToA1”,目的是只有登陆后点击按钮才会跳转到a页面,否则会跳转到登陆页面


package com.action;
import java.util.List;
import net.sf.json.JSON;
import net.sf.json.JSONArray;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.bind.support.SessionStatus;
import org.springframework.web.servlet.ModelAndView;
import com.DaoAndEntity.User;
import com.DaoAndEntity.UserDAO;
import com.interpoter.Token;
@Controller
@SessionAttributes("user")//定义一个名为user的sessionattributes
public class Action {   
        @RequestMapping("/ToRegister")//去注册页面
        @Token(save=true)//获取token之存入attribute
        public String register(){
            return "register";
        }
        @RequestMapping("/ToA")//拦截a页面
        public String toa(){
            return "login";
        }
        @RequestMapping("/ToA1")//去a页面
        public String toa1(){
            return "a";
        }
        @RequestMapping("/tosport")//去首页
        public String Index(){
            return "sport";
        }
        @RequestMapping({ "/", "" })//启动时打开主页
        public String tosport(){
            return "sport";
        }
        @RequestMapping("/tologin")//跳转至登录页面
        @Token(save=true)//这里的token是为了防止注册后刷新导致表单重复提交
        public String login(){      
            return "login";
        }
        @RequestMapping("/Register")//注册方法
        @Token(remove=true)//清除token值
        public String register(User user){
            UserDAO userdao = new UserDAO();            
            if(userdao.findbyname(user.getUserName()).size()==0){               
                userdao.save(user);//将user对象添加至数据库
                System.out.println("添加成功!!!"+user.getUserNickname());               
            }
            return "success";
        }
        @RequestMapping("/findname")//注册检测,判断用户名是否重复
        public @ResponseBody JSON findname(String name){        
            JSONArray jsonarray = new JSONArray();
            UserDAO u = new UserDAO();
            List list = u.findbyname(name);
            System.out.println(list.size());
            jsonarray.add(list.size());         
            ModelAndView mv = new ModelAndView();           
            mv.setViewName("register");
            return jsonarray;
        }
        @RequestMapping("/findname1")//登陆检测,判断用户名是否注册
        public @ResponseBody JSON findname1(String name){
            //User user = new User();           
            JSONArray jsonarray = new JSONArray();
            UserDAO u = new UserDAO();
            List list = u.findbyname(name);
            System.out.println(list.size());
            jsonarray.add(list.size());         
            ModelAndView mv = new ModelAndView();           
            mv.setViewName("/tologin");
            return jsonarray;
        }
        @RequestMapping("/out")//注销用户
        public String Out(SessionStatus sessionStatus){
            sessionStatus.setComplete();
            return "redirect:/tosport";
        }
        @RequestMapping("/login")//登陆方法
        @Token(save=true)
        public ModelAndView login(User user, Model model1,String preurl){
            UserDAO u = new UserDAO();
            System.out.println(user.getUserNickname()+"bbbbbbbbb");
            System.out.println(user.getUserName()+"bbbbbbbbb");
            ModelAndView model = new ModelAndView();
            model.addObject(user);
            model1.addAttribute("user", user);
            List list = u.findbyname(user.getUserNickname());
            int flag=0;
            System.out.println(list.size()+"     aaaaaaaaaa"+user.getUserNickname());
            System.out.println(user.getUserName()+"1212121212121");
            for(int i =0;i<list.size();i++){
                System.out.println(list.get(i));
                if(((List) list.get(i)).get(1).equals(user.getUserPassword()))
                    flag=i+1;
            }
            if(list.isEmpty()||flag==0){
                System.out.println(user.getUserNickname());
                System.out.println(user.getUserPassword());
                model.setViewName("error");
                System.out.println(list);
                model.addObject("error", "用户名或密码错误");           
            }else{
                model.addObject("name", ((List) list.get(flag-1)).get(3));
                model.addObject("password", ((List) list.get(flag-1)).get(1));
                model.addObject("phone", ((List) list.get(flag-1)).get(2));
                model.setViewName("sport");
            }
            return model;
        }   
    }

接下来就要写拦截器类了
这里我们选择重写HanderInterceptor接口里面preHandle的方法
在预处理之前我们通过判断SessionAttributes里面的user对象是否为空
如果为空则拦截返回false若不为空则重定向到a页面返回true


package com.interpoter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

public class Interptor 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 {
        System.out.println("处理之前");
        // TODO Auto-generated method stub
        String url = request.getRequestURI();//获取地址栏uri     
        //toA
        String preurl=request.getServletPath().substring(1);
    /////////////   
        if (!url.isEmpty()) {
            if (request.getSession() != null && request.getSession().getAttribute("user") != null) {                
                response.sendRedirect(request.getContextPath() + "/ToA1");//重定向至页面a
                System.out.println("1111111");
            } else {
                System.out.println("null");
                return true;
            }
        }
///////////
        if (request.getSession() != null && request.getSession().getAttribute("user") != null) {

            System.out.println("2222222");
            return true;
        }
        System.out.println("3333333");
        return false;   
}
}

最后则是拦截器的配置

<mvc:interceptors>
 <mvc:interceptor>
 <mvc:mapping path="/ToA"/> <!-- 指定拦截ToA方法-->
 <bean class="com.interpoter.Interptor"></bean>
 </mvc:interceptor>
 </mvc:interceptors>
版权声明:本文为博主原创文章,未经博主允许不得转载。

一个简单登录的SpringMVC的示例

一.框架图二.步骤1./WebRoot/WEB-INF/lib下添加SpringMVC必须的jar包; 2.在com.xml.models包中创建User类,该类包含两个属性:username和pas...
  • Decorator2015
  • Decorator2015
  • 2016年12月29日 13:46
  • 439

MVC 用户登录状态检测

所有的web系统,只要是有用户登录这一块有权限这个的需求的就要处理用户登录状态保存这个问题,如果没有登录,那么跳转到登录页面让用户登录。 在webform中,一般是通过让页面继承System.Web...
  • chenqiangdage
  • chenqiangdage
  • 2015年10月22日 18:16
  • 4927

基于SpringMVC的登录拦截器

基于SpringMVC的登录拦截器   1.Struts2的核心过滤器配置 struts2 org.apache.struts2.di...
  • wp1603710463
  • wp1603710463
  • 2016年03月09日 21:48
  • 1781

spring mvc + mybatis + mysql 整合的一个简单的登录例子

今天用spring跟mybatis整合写了一个简单的登录例子,第一次整合,给自己做个笔记,可能注释写的有点少,做的不足的地方谢谢指出,也分享给需要的朋友,下面给出登录失败和成功的效果图:   ...
  • u011102206
  • u011102206
  • 2014年03月16日 13:48
  • 10144

使用IntelliJ IDEA开发SpringMVC网站(四)用户管理

转载自:Guassic(一个致力于AI却不得不兼顾项目的研究生) 七、用户管理     既然我们要做一个博客管理系统,当然要首先实现我们的用户管理。在上一文中,我们已经配置好了数据...
  • chenxiao_ji
  • chenxiao_ji
  • 2016年03月10日 19:23
  • 1917

Spring学习之SpringMVC框架快速搭建实现用户登录功能

引用自:http://blog.csdn.net/qqhjqs/article/details/41683099?utm_source=tuicool&utm_medium=referral  的博客...
  • chongxin1
  • chongxin1
  • 2017年08月07日 20:53
  • 1677

SpringMVC注解实现登录验证

拦截器抽象类继承spring的HandlerInterceptorAdapter package com.hsr.component.auth; import com.hsr.core.annota...
  • super_yu123
  • super_yu123
  • 2017年04月27日 13:20
  • 1054

springmvc拦截器实现对用户登录状态的判断

之前对用户登录状态一直使用的是过滤器filter实现的,今天尝试了下使用springmvc的拦截器interceptor来实现对用户登录状态的判断。 1.spring-mvc.xml配置文件中加入下...
  • yangyuscript
  • yangyuscript
  • 2017年05月29日 16:05
  • 2905

Spring MVC - 拦截器实现 和 用户登陆例子

1.拦截器   SpringMvc中的拦截器实现了HandlerInterceptor接口,通常使用与身份认证,授权和校验,模板视图,统一处理等;    public class HanderIn...
  • LABLENET
  • LABLENET
  • 2016年01月08日 16:09
  • 28246

SpringMVC拦截器实现登录认证(2017修正版)

当使用到springmvc的做网页工程的时候,总会遇到需要判断登陆权限的,一般的做法是每次登陆的话,发送给后台,后台返回一个唯一的token,以便标识用户每一次请求的权限,如果没有登陆成功,则toke...
  • omayyouhappy
  • omayyouhappy
  • 2017年01月18日 16:46
  • 1364
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用Springmvc做一个小小的登录检测
举报原因:
原因补充:

(最多只允许输入30个字)