开发前的准备:https://blog.csdn.net/netbar4/article/details/104124914

四、Web开发

1.引入静态资源


webjars导入静态资源,以jar包形式引入

“/**”访问当前项目的任何资源(静态资源文件夹)
“classpath:/resources/”,
“classpath:/static/”,
“classpath:/public/”,
去访问8080/asserts/js/Chart.min.js

欢迎页:静态资源文件夹中下index.html;被/**映射

所有的**/favicon.ico都是在静态资源文件下找

见图

SpringWeb开发

2.模版引擎Thymeleaf

引入Thymeleaf

       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-Thymeleaf</artifactId>
        </dependency>

这样导入的版本过低,以下办法修改默认的版本

    <properties>
        <java.version>1.8</java.version>
        <thymeleaf.version>3.0.11.RELEASE</thymeleaf.version>
        <thymeleaf-layout-dialect.version>2.1.1</thymeleaf-layout-dialect.version>
    </properties>

源代码:
public class ThymeleafProperties {
    private static final Charset DEFAULT_ENCODING;
    public static final String DEFAULT_PREFIX = "classpath:/templates/";
    public static final String DEFAULT_SUFFIX = ".html";
    private boolean checkTemplate = true;
    private boolean checkTemplateLocation = true;
    private String prefix = "classpath:/templates/";
    private String suffix = ".html";
    private String mode = "HTML";

只要把html页面放在classpath:/templates/,Thymeleaf就能自动渲染

@Controller
public class HelloController {

    @RequestMapping("/success")
    public String success() {
        //classpath:/templates/success.html
        return "success";
    }
}

classpath:/templates/success.html

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>成功了</h1>
</body>
</html>

 

3.语法规则


1)th:text;改变当前元素里面的文本内容
见图

SpringWeb开发
 

2)表达式
见图

SpringWeb开发

登录和拦截器

设置login为默认页面

MyMvcConfig:

@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        //添加视图映射
        registry.addViewController("/").setViewName("login");
        registry.addViewController("/main.html").setViewName("dashboard");

    }

LoginController:

@Controller
public class LoginController {

    //@RequestMapping(value = "/user/login" , method = RequestMethod.POST)

    @PostMapping(value = "/login")
    public String login(@RequestParam("username") String username,
                        @RequestParam("password") String password,
                        Map<String, Object> map) {

        if (!StringUtils.isEmpty(username) && "123456".equals(password)) {
            //防止表单重复提交,于是重定向
            return "redirect:/main.html";
        } else {
            map.put("msg", "用户名密码错误");
            return "login";
        }
    }
}

拦截处理器

LoginHandlerInterceptor类:

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        Object user = request.getSession().getAttribute("loginUser");
        if(user == null) {
            request.setAttribute("msg", "没有权限请登录");
            request.getRequestDispatcher("/index.html").forward(request, response);
            return false;
        } else {
            return true;
        }

注册拦截
   @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/**")
                .excludePathPatterns("/index.html","/","/static/**","/webjars/**","/login","/asserts/**");
    }

 

 

 

 

 

 

相关文章:

  • 2021-09-15
  • 2021-10-12
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-05-19
  • 2022-01-26
  • 2021-11-12
猜你喜欢
  • 2021-10-02
  • 2022-12-23
  • 2021-09-12
  • 2022-12-23
  • 2021-12-19
  • 2022-01-06
  • 2021-07-21
相关资源
相似解决方案