Springboot Web开发

自动装配

xxxxAutoConfiguration…向容器中自动装配组件
xxxxProperties:自动装配类,装配配置文件中自定义的一些内容
我们根据源头打开spring.factories的配置文件 , 看到了很多自动配置的文件;这就是自动配置根源所在!

要解决的问题:

  • 导入静态资源
  • 首页
  • jsp,模板引擎Thymeleaf
  • 装配扩展SpringMVC
  • 增删改查
  • 拦截器
  • 国际化

静态资源

优先级从上到下

“classpath:/META-INF/resources/”,
“classpath:/resources/”,
“classpath:/static/”,
“classpath:/public/”,
“/” :当前项目的根目录

在templates目录下的所有页面,只能通过controller来跳转

thymeleaf模板引擎

th:可以绑定html的属性(使用表达式)

1.变量表达式${}
2.选择或星号表达式*{}
3.文字国际化表达式#{}
4.URL表达式@{}
server.port=8088
#关闭thymeleaf模板引擎的缓存
spring.thymeleaf.cache=false
#配置访问路径
server.servlet.context-path=/hzy

配置扩展MVC视图解析器(需要Thymeleaf模板)

@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("index");//访问首页
        registry.addViewController("/index").setViewName("index");
    }
}

项目的基本目录结构—templates存放页面(模板引擎),static存放js/css/img等静态资源
在这里插入图片描述

国际化

i18s
在这里插入图片描述#配置国际化文件的真实位置
spring.messages.basename=i18n.login
使用#{}

自定义国际化解析器

<a class="btn btn-sm" th:href="@{/index(l='zh_CN')}">中文</a>
<a class="btn btn-sm" th:href="@{/index(l='en_US')}">English</a>
package com.hzy.config;

import org.springframework.web.servlet.LocaleResolver;
import org.thymeleaf.util.StringUtils;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Locale;
//国际化解析
public class MyLocaleResolver implements LocaleResolver {
//    解析请求
    @Override
    public Locale resolveLocale(HttpServletRequest httpServletRequest) {
        String language=httpServletRequest.getParameter("l");
        Locale locale=Locale.getDefault();//如果没有就使用默认的
//        如果请求的链接携带了国际化的参数
        if(!StringUtils.isEmpty(language)){
            String[] split=language.split("_");
            locale=new Locale(split[0],split[1]);
        }
        return locale;
    }

    @Override
    public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {

    }
}
@Bean
    public LocaleResolver localeResolver(){
        return new MyLocaleResolver();
    }

拦截器

配置没有登录时不能通过路由访问其他页面,如果访问其他页面跳转到index登录页面

配置拦截器

package com.hzy.config;

import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginHandlerInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//        登录成功之后 ,应该有用户的session
        Object loginUser=request.getSession().getAttribute("loginUser");
        if(loginUser==null){
            request.setAttribute("message","没有权限,请先登录");
            request.getRequestDispatcher("/index").forward(request,response);
            return false;
        }else{
            return true;
        }
    }
}

在扩展MVC中使用拦截器
.addPathPatterns("/")表示访问哪些页面拦截
.excludePathPatterns("/","/index","/user/login","/css/
","/js/","/img/")表达访问哪些页面不拦截

使用拦截器

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/**")
                .excludePathPatterns("/","/index","/user/login","/css/**","/js/**","/img/**");
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值