SpringMVC登录案例

学习了一周的springMVC
今天搭建一个SpringMVC的登录案例
主要是用来巩固一下拦截器的是使用。

1.首先配置web.xml 配置
主要是配置encodingfilter和dispatcher

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <!--字符集设置-->
    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!--调度器配置-->
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>*.form</url-pattern>
    </servlet-mapping>
</web-app>

2.配置dispatcher指定的servlet.xml
主要配置拦截器的相关属性

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
    <!--指定注解解析的包-->
    <context:component-scan base-package="com.jsu.controller"/>
    <!--配置拦截器-->
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
           <!-- 指定拦截器的bean -->
            <bean class="com.jsu.intercepter.LoginIntercepter">

                <property name="allowAdress">
                    <!--允许通过的请求的列表-->
                    <list>
                        <value>login.form</value>
                        <value>add.form</value>
                    </list>
                </property>
            </bean>
        </mvc:interceptor>
    </mvc:interceptors>

</beans>

前车之鉴:千万不能使用如下配置不然会无法识别拦截器的拦截名单

<property name="allowAdress">
                    <!--允许通过的请求的列表-->
                    <list>
                        <value>
                            login.form
                        </value>
                        <value>
                            add.form
                        </value>
                    </list>
                </property>

3.配置intercepter的类
主要通过实现handlerintercepter接口

public class LoginIntercepter implements HandlerInterceptor {
    //拦截名单
    List<String> allowAdress;

    public void setAllowAdress(List<String> allowAdress) {
        this.allowAdress = allowAdress;
    }

    /**
     * 请求方法执行前所执行的方法
     * 返回true 则进行拦截
     * 否则不进行拦截
     */
    @Override
    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
        //获取请求的路径
        String url = httpServletRequest.getRequestURL().toString();
        //查看是否已经有请求
        Object user = httpServletRequest.getSession().getAttribute("user");

        if (user != null){
            return true;
        }
        for (String temp : allowAdress) {
            if (url.endsWith(temp)) {
                return true;
            }
        }
        //重定向到login页面
        httpServletResponse.sendRedirect(httpServletRequest.getContextPath()+"/login.jsp");
        return false;
    }

    @Override
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {

    }

    @Override
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {

    }
}

4.配置controller类

@Controller
public class LoginController {
    @RequestMapping("/login")
    public String login(User user,HttpSession session){
        //校验
        if ("zzz".equals(user.getName())&&"123".equals(user.getPassword())) {

            session.setAttribute("user", user);
            return "redirect:index.jsp";
        }
        return "redirect:login.jsp";
    }

    @RequestMapping("/add")
    public String add(){
        System.out.println("add");
        return "redirect:index.jsp";
    }
}

5.配置实体类

public class User{

    private String name;
    private String password;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

6.demo结果

错误结果就重定向到login.jsp页面

时间: 2024-11-08 21:49:06

SpringMVC登录案例的相关文章

ADO.NET制做一个登录案例_实用技巧

总体思路.根据用户输入的用户名和密码,来判断,和数据库里面存的是不是一样,如果一样就表明登录成功,否则就登录失败. 方案一:1.select* from 表名 where username="用户输入的用户名"  2.如果存在 reader.Read(),即用户名存在,接着就判断用户输入的密码,和取到的密码(reader.GetString(reader.GetOridinal("密码字段")))是不是一样,如果一样就登录成功,否则就登录失败. 方案二:  sele

Spring+SpringMVC+MongoDB案例

---------------------------------------------------------------------------------------------[版权申明:本文系作者原创,转载请注明出处] 文章出处:http://blog.csdn.net/sdksdk0/article/details/64948728作者:朱培      ID:sdksdk0     --------------------------------------------------

笔记 - Android - 4.登录案例

API总结:     CheckBox         boolean isChecked():返回一个布尔值,指示该复选框是否被选中

SpringMVC拦截器实现登录认证_java

博客以Demo的形式讲诉拦截器的使用 项目结构如图: 需要的jar:有springMVC配置需要的jar和jstl需要的jar SpringMVC包的作用说明: aopalliance.jar:这个包是AOP联盟的API包,里面包含了针对面向切面的接口.通常spring等其它具备动态织入功能的框架依赖这个jar spring-core.jar:这个jar 文件包含Spring 框架基本的核心工具类.Spring 其它组件要都要使用到这个包里的类,是其它组件的基本核心,当然你也可以在自己的应用系统

ajax-springmvc 登录拦截器

问题描述 springmvc 登录拦截器 拦截器起到了作用,跳到了登陆页面,登录页面是通过ajax提交请求给后台的,后台执行完了之后会返回一个map给ajax的success方法,从而进行页面的跳转.可是现在的问题是,后台执行了,但是跳不回前台,map也传回不去,更不说页面的跳转了. 解决方案 SpringMVC 登录拦截器实现springMVC之拦截器SpringMVC拦截器实现登录控制 解决方案二: 小机器人已经给你答案了: 1.不要拦截此跳转: 2.登录在后台执行了后,如果登录成功,直接更

Android开发登陆案例_Android

layout <?xml version="1.0"?> -<LinearLayout android:paddingTop="@dimen/activity_vertical_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingLeft="@dimen/activity_horizontal_margin&qu

SpringMVC+Mysql实例详解(附demo)_java

一直用的是ssh,因为公司要用到SpringMVC,以前也没接触过,所以今天来和大家一起学习一下这个框架,以便工作需要. 首先我们先来了解一下什么是模式,模式就是解决某一类问题的方法论,把解决这类问题的解决方法归总到理论的高度,这就是模式.模式是一种指导,在一个良好的指导下,有助于开发人员完成任务.做出一个优秀的设计方案,能达到事半功倍的效果.而且会得到解决问题的最佳办法. mvc模式起源于Smalltalk语言,mvc是Model-View-Controller的简写.mvc减弱了业务逻辑接口

微信扫码网站自动登录的实现方法

magento 微信扫码网站自动登录 案例仿照了微信联合登陆的做法,微信联合登陆介绍: https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&lang=zh_CN 查看授权后接口调用(UnionID),不难发现填写回调地址,用户确认登陆pc端即可跳转 获取UnionID方法 public function wcallbackAction(){   $c

web xml-web.xml中url-pattern中/*与/的区别?

问题描述 web.xml中url-pattern中/*与/的区别? 我在配置springMVC小案例时,在web.xml中配置/* 后, 结果请求执行到自己编写的controller并返回字符串逻辑视图名后,找不到我的jsp页面, 我的视图解析器都是配置正确的.当我把web.xml中的/* 改为/后,就可以找到视图了.所以,想问web.xml中配置/*和 /的不同? 解决方案 以"/"开头和以"/*"结尾的是用来做路径映射的."/"用来表明对应的