程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

Spring MVC的整合支持--学习12

发布于2021-05-29 20:29     阅读(892)     评论(0)     点赞(0)     收藏(0)


一、

二、Spring MVC 功能拓展实现

1、创建项目

在这里插入图片描述

2、添加依赖

在这里插入图片描述

3、初始化

在这里插入图片描述

4、把Thymeleaf18N里html模板文件,国际化配置文件,全局配置文件和相关Java文件拷贝过来

在这里插入图片描述

5、运行查看效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6、编写登录控制器

在这里插入图片描述

在这里插入图片描述

6、在main/java下创建net.tp.lesson.config子包

在这里插入图片描述

7、创建 自定义MVC配置 --MyMvcConfig.java

在这里插入图片描述

package net.tp.lesson11.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;


@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
    /**
     * 添加视图控制器
     * @param registry
     */
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        // 当通过login.html访问时,直接跳转到login视图对应的页面,即login.html页面
        registry.addViewController("login.html").setViewName("login");
        // 通过toLoginPage访问时,也直接跳转到视图名login对应的页面,login.html页面
        registry.addViewController("toLoginPage").setViewName("login");
    }
}

8、运行查看效果

  • 访问:http://localhost:8080/toLoginPage
    在这里插入图片描述

9、在main/java下创建net.tp.lesson11.interceptor子包

在这里插入图片描述

10、创建自定义拦截器-- MyInterceptor

在这里插入图片描述

package net.tp.lesson11.interceptor;

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

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Calendar;

/**
 * 功能:自定义拦截器
 * 作者:tp
 * 日期:2021年05月26日
 */
@Component
public class MyInterceptor implements HandlerInterceptor {
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response,
                           Object handler, ModelAndView modelAndView) throws Exception {
        request.setAttribute("currentYear", Calendar.getInstance().get(Calendar.YEAR));
    }
}

11、编写MyMvcConfig

在这里插入图片描述

在这里插入图片描述

package net.tp.lesson11.config;
import net.tp.lesson11.interceptor.MyInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;


@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
    @Autowired
    private MyInterceptor interceptor;
    /**
     * 添加视图控制器
     * @param registry
     */
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        // 当通过login.html访问时,直接跳转到login视图对应的页面,即login.html页面
        registry.addViewController("login.html").setViewName("login");
        // 通过toLoginPage访问时,也直接跳转到视图名login对应的页面,login.html页面
        registry.addViewController("toLoginPage").setViewName("login");
    }
    /**
     * 添加拦截器
     * @param registry
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //拦截器所有路径,除login.html外
        registry.addInterceptor(interceptor).addPathPatterns("/**").excludePathPatterns("login.html");
    }
}

12、修改登录页面

在这里插入图片描述

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org/">
<head>
    <meta charset="UTF-8">
    <title>用户登录</title>
    <link th:href="@{/bootstrap-4.0.0/css/bootstrap.css}" rel="stylesheet">
    <javascript th:src="@{/bootstrap-4.0.0/js/jquery-3.4.1.min.js}"></javascript>
    <javascript th:src="@{/bootstrap-4.0.0/js/bootstrap.bundle.js}"></javascript>
    <javascript th:src="@{/bootstrap-4.0.0/js/bootstrap.js}"></javascript>
</head>
<body>
<div class="col-6 m-auto" style="margin-top:30px!important;">
    <div class="text-center">
        <span th:text="${currentYear}">今年</span> -
        <span th:text="${currentYear} + 1">明年</span>
    </div>
    <div class="border border-info bg-light p-2" style="border-radius: 5px">
        <form action="/login" method="post">
            <h3 class="text-center" th:text="#{login.title}">用户登录</h3>
            <div class="mt-1">
                <input type="text" id="username" name="username" class="form-control" th:placeholder="#{login.username}" required
                       autofocus>
            </div>
            <div class="mt-1">
                <input type="password" id="password" name="password" class="form-control" th:placeholder="#{login.password}" required>
            </div>
            <div class="checkbox text-center">
                <label>
                    <input class="form-check-input text-center" type="checkbox" id="remember-me">[[#{login.rememberme}]]
                </label>
            </div>
            <div>
                <button class="btn btn-lg btn-primary btn-block" id="login" type="submit" th:text="#{login.button}">登录</button>
            </div>
            <div class="text-center">
                <a class="btn btn-sm" th:href="@{/toLoginPage(flag='zh_CN')}">中文</a>
                <a class="btn btn-sm" th:href="@{/toLoginPage(flag='en_US')}">English</a>
            </div>
        </form>
    </div>
</div>
</body>
</html>

13、运行查看效果

在这里插入图片描述

访问:http://localhost:8080/toLoginPage
在这里插入图片描述

14、编写toLoginPage方法

在这里插入图片描述

15、编写MyMvcConfig

  • 释掉相应的视图控制器
    在这里插入图片描述

16、编写登录控制器

在这里插入图片描述

17、编写自定义拦截器

在这里插入图片描述

18、编写MyMvcConfig

在这里插入图片描述

19、运行查看效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述



所属网站分类: 技术文章 > 博客

作者:我是小豆丁

链接:http://www.javaheidong.com/blog/article/207326/bc0d9c9c8d90a7998f32/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

0 0
收藏该文
已收藏

评论内容:(最多支持255个字符)