SpringMVC学习之旅-应用掌握篇(13)

81 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第41天,点击查看活动详情


写在前面

当我们学习了spring框架之后,基本上来说,已经是打好了一个良好得基础了。

但是距离一个企业的基本开发需要掌握的框架,还是得经过不断得学习,才行。

这不,我们继续学习下一个框架SpringMVC

SpringMVC这个框架,一般来说,用来作为我们项目得Controller层,用来接收用户得输入,然后选择相应得视图回显展示给用户。

MVC作为WEB项目开发的核心环节,正如三个单词的分解那样,C(控制器)将V(视图、用户客户端)与M(javaBean:封装数据)分开构成了MVC。

对于以前得项目来说,还有出现Struts得,但现在基本都很少了。

Struts1(现在一般不用),Struts2(一般老项目使用)等等。

这不,接下来就是spring mvc框架的学习之旅了,希望可以帮助到大家。

一、拦截器应用

SpringMVC 的拦截器主要是针对特定处理器进行拦截的。

1.1 拦截器应用(实现登录认证)

1.1.1 需求

拦截器对访问的请求 URL 进行登录拦截校验。

分析如下:

1、 如果请求的URL是公开地址(无需登录就可以访问的URL,具体指的就是保护login字段的请求URL),采取放行。

2、 如果用户session存在,则放行。

3、 不放行,都要跳转到登录页面。

1.1.2 登录页面

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>登录页面</title>
    </head>
    <body>
        <form action="${pageContext.request.contextPath }/login" method="post">
            <table align="center" border="1" cellspacing="0" >
                <tr>
                <td>用户名:<input type="text" name="username"/></td>
                </tr>
                <tr>
                <td>密 码:<input type="text" name="password"/></td>
                </tr>
                <tr>
                <td><input type="submit" value="登录"/></td>
                </tr>
            </table>
        </form>
    </body>
</html>

1.1.3 Controller类

@Controller
public class LoginController {

    // 登录
    @RequestMapping("/login")
    public String login(HttpSession session, String username, String password) {
        // Service进行用户身份验证
        // 把用户信息保存到session中
        session.setAttribute("username", username);
        // 重定向到商品列表页面
        return "redirect:/item/findItem";
    }

    // 退出
    @RequestMapping("/logout")
    public String logout(HttpSession session) {
        //清空session
        session.invalidate();
        // 重定向到登录页面
        return "redirect:/login.jsp";
    }
}

1.1.4 HandlerInterceptor类

public class LoginInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request,
        HttpServletResponse response, Object handler) throws Exception {

        //获取请求的URI
        String requestURI = request.getRequestURI();
        System.out.println(requestURI);

        //1、 如果请求的URL是公开地址(无需登录就可以访问的URL),采取放行。
        if(requestURI.indexOf("login")>-1) return true;

        //2、 如果用户session存在,则放行。
        String username = (String)
        request.getSession().getAttribute("username");
        if(username !=null && !username.equals("")) return true;

        //3、 如果用户session中不存在,则跳转到登录页面。
        response.sendRedirect("/springmvc-demo/login.jsp");
        return false;
    }
    //其他代码略
}

1.1.5 HandlerInterceptor配置

<!-- 配置全局mapping的拦截器 -->
<mvc:interceptors>
    <!-- 拦截所有请求URL-->
    <bean class="com.llsydn.ssm.interceptor.LoginInterceptor" />
</mvc:interceptors>

好了,以上就是SpringMVC学习之旅-应用掌握篇(9) 的全部内容了。

今天就先到这里了,后面的内容,留下次分享了,先溜了!!!^_^

如果觉得写得不错的,帮忙点赞、评论、收藏一下呗!!!

image.png