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

首先是一个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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我可以给你提供一些参考,但具体的实现还是要靠你自己。SpringMVC的控制器可以接收用户提交的表单信息,然后根据你的需求实现注册的业务逻辑。你可以使用JSP页面来渲染注册的表单信息,以及使用AJAX来提交表单信息,以实现前后端的交互。 ### 回答2: 使用SpringMVC编写一个注册页面有以下步骤: 1. 首先,创建一个表单页面register.jsp,包含用于输入用户名、密码、邮箱等注册信息的表单。可以使用HTML表单元素如input、select等。 2. 创建一个注册表单的类RegisterForm,用于封装用户输入的注册信息。该类需要包含与表单中输入框对应的字段,以及对应的setter和getter方法。 3. 在SpringMVC配置文件中添加对/register请求的映射,并配置相应的控制器类。可以通过@Controller注解定义该类,并使用@RequestMapping注解将请求映射到指定的方法。 4. 在控制器类中创建一个方法用于处理/register请求。可以通过@RequestMapping注解指定处理请求的URL路径,并使用@RequestParam注解获取表单中的值,并使用ModelAndView类封装处理结果。 5. 在处理/register请求的方法中,首先创建一个RegisterForm对象,并通过@RequestParam注解将请求参数自动绑定到该对象的字段上。 6. 然后可以进行一些对输入数据的验证,如检查用户名是否已存在、邮箱格式是否正确等。如果验证不通过,可以通过ModelAndView对象返回错误信息,并将相应的错误信息显示在register.jsp页面上。 7. 如果验证通过,可以将注册信息保存到数据库或其他数据存储中,并返回注册成功的提示信息。可以通过ModelAndView对象设置相应的视图名称和返回的数据。 8. 在register.jsp页面中,根据ModelAndView对象中返回的视图名称和数据,进行相应的处理。可以使用EL表达式获取并展示返回的数据。 通过以上步骤,我们可以使用SpringMVC编写一个简单的注册页面,并实现用户注册功能。当用户填写完注册信息并提交时,注册信息会被传递到后台进行处理和验证,并返回相应的结果给前台页面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值