网站建设包括哪些技术,网上做网站网站代理赚钱吗,微网页制作软件手机版,网站建设费用选择网络专业文章目录 零、学习目标一、Spring MVC 自动配置#xff08;一#xff09;自动配置概述#xff08;二#xff09;Spring Boot整合Spring MVC 的自动化配置功能特性 二、Spring MVC 功能拓展实现#xff08;一#xff09;创建Spring Boot项目 - SpringMvcDemo2021#xff… 文章目录 零、学习目标一、Spring MVC 自动配置一自动配置概述二Spring Boot整合Spring MVC 的自动化配置功能特性 二、Spring MVC 功能拓展实现一创建Spring Boot项目 - SpringMvcDemo2021二改造当前项目 - 移植上一讲项目的内容三写MVC配置文件定义视图跳转1、注释掉登录控制器toLoginPage()方法上的注解2、创建自定义MVC配置类 - MyMvcConfig3、修改登录页面注释掉显示年份的代码3、启动应用测试效果 四编写拦截器让登录页面显示年份1、创建自定义拦截器 - MyInterceptor2、在自定义MVC配置类里加载自定义拦截器3、修改登录页面取消显示年份的注释4、启动应用测试效果 五编写登录拦截器防止非登录用户查看全部用户信息1、还原登录控制器中的toLoginPage方法的注解2、在自定义MVC配置中注释掉相应的视图控制器3、在登录控制里修改login()方法4、在自定义拦截器里重写preHandle()方法5、在自定义MVC配置文件里排除不能拦截的路径6、启动应用测试效果 三、课后拓展练习1、改造用户实体类添加password字段2、把session中保存的user字符串改造成user对象3、使用JPA等方式把用户保存到数据库中使用数据库查询用户信息后进行登录判断 零、学习目标
了解Spring Boot中Spring MVC自动配置掌握Spring Boot中Spring MVC功能扩展和定制 在Web开发中会涉及到静态资源的访问支持、视图解析器的配置、转换器和格式化器的定制、文件上传下载等功能甚至还需要考虑到与Web服务器关联的Servlet相关组件的定制Spring Boot框架支持整合一些常用Web框架从而实现Web开发并默认支持Web开发中的一些通用功能。 一、Spring MVC 自动配置
一自动配置概述
在Spring Boot项目中一旦引入了Web依赖启动器spring-boot-starter-web那么Spring Boot整合Spring MVC框架默认实现的一些XxxAutoConfiguration自动配置类就会自动生效几乎可以在无任何额外配置的情况下进行Web开发。
二Spring Boot整合Spring MVC 的自动化配置功能特性
内置了两个视图解析器ContentNegotiatingViewResolver和BeanNameViewResolver支持静态资源以及WebJars自动注册了转换器和格式化器支持Http消息转换器自动注册了消息代码解析器支持静态项目首页index.html支持定制应用图标favicon.ico自动初始化Web数据绑定器ConfigurableWebBindingInitializer。
二、Spring MVC 功能拓展实现 一创建Spring Boot项目 - SpringMvcDemo2021
使用Spring Initializr方式创建Spring Boot项目并在Dependencies依赖选择中选择Web依赖启动器和Thymeleaf依赖启动器
二改造当前项目 - 移植上一讲项目的内容 复制第10讲案例【Thymeleaf18N】的html模板文件国际化配置文件全局配置文件和相关Java文件除入口文件到当前项目的相应位置 启动应用查看是否成功 访问登录页面 - http://localhost:8080/toLoginPage 访问显示全部用户页面 - http://localhost:8080/allUsers
三写MVC配置文件定义视图跳转
1、注释掉登录控制器toLoginPage()方法上的注解 2、创建自定义MVC配置类 - MyMvcConfig
实现接口WebMvcConfigurer并重写addViewControllers方法
package net.hw.lesson11.config;import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;/*** 功能自定义MVC配置类* 作者华卫* 日期2021年05月26日*/
Configuration // 配置类
public class MyMvcConfig implements WebMvcConfigurer {/*** 添加视图控制器* * param registry*/Overridepublic void addViewControllers(ViewControllerRegistry registry) {// 通过login.html访问时直接跳转到login逻辑视图对应的页面即login.html页面registry.addViewController(login.html).setViewName(login);// 通过toLoginPage访问时也直接跳转到login逻辑视图对应的页面即login.html页面registry.addViewController(toLoginPage).setViewName(login);}
}注意自定义MVC配置类一定要添加注解Configuration说明toLoginPage()方法里通过model设置了属性currentYear会在跳转到登录页面传递给前端但是直接通过刚才定义的视图控制器来跳转就没有数据的传递因此得修改登录页面代码暂时不要显示年份以免程序报错。
3、修改登录页面注释掉显示年份的代码 3、启动应用测试效果 访问http://localhost:8080/toLoginPage 访问http://localhost:8080/login.html 两种方式都可跳转到login.html页面当然此时都没有显示年份。
四编写拦截器让登录页面显示年份 拦截器作用就是在访问请求前或后进行相关的处理比如访问资源前判断用户是否登录如果登录则可以访问否则不能进行访问。本案例是在访问请求后获取当年年份数据带到登录页面去显示出来。 1、创建自定义拦截器 - MyInterceptor
实现接口HandlerInterceptor并实现postHandle()方法 说明请求前要处理就得重写preHandle()方法请求后要处理就得重写postHandle()方法请求完成之后要处理就得重写afterCompletion()方法
package net.hw.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;/*** 功能自定义拦截器* 作者华卫* 日期2021年05月26日*/
Component
public class MyInterceptor implements HandlerInterceptor {Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {request.setAttribute(currentYear, Calendar.getInstance().get(Calendar.YEAR)); }
}2、在自定义MVC配置类里加载自定义拦截器
在MyMvcConfig重写addInterceptors()方法加载自定义拦截器
3、修改登录页面取消显示年份的注释 编译会报错说无法解析currentYear不用管它因为数据不是来自控制器而是来自拦截器要运行时请求后才能获取数据因此编译会报错。
4、启动应用测试效果
访问http://localhost:8080/toLoginPage 访问http://localhost:8080/login.html 两种方式都可以显示出年份说明自定义拦截器中的postHandle()生效了。
五编写登录拦截器防止非登录用户查看全部用户信息
要求未登录用户不能查看用户信息但是定义拦截器前通过路径http://localhost:8080/allUsers是可以看到所有用户信息的。
1、还原登录控制器中的toLoginPage方法的注解 2、在自定义MVC配置中注释掉相应的视图控制器 3、在登录控制里修改login()方法 4、在自定义拦截器里重写preHandle()方法 拦截非登录用户直接重定向到登录页面强制其登录
5、在自定义MVC配置文件里排除不能拦截的路径 6、启动应用测试效果 未登录前访问http://localhost:8080/allUsers直接跳转到登录页面。登录成功后才可以查看全部用户信息。
三、课后拓展练习
1、改造用户实体类添加password字段
2、把session中保存的user字符串改造成user对象
3、使用JPA等方式把用户保存到数据库中使用数据库查询用户信息后进行登录判断