thymeleaf + titles + Spring MVC 中文乱码

本文详细介绍了如何在Spring应用中配置Thymeleaf模板引擎和Tiles布局系统,解决乱码问题,并通过配置确保视图名正确解析到Tiles定义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

看了一下网上资料,居然没有说这个问题的...特来备注一下: 直接贴代码了,这样子直观


<!-- Thymeleaf template resolver -->
	<bean id="templateResolver" class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
		<property name="prefix" value="/WEB-INF/jsp" />
		<property name="suffix" value=".html"/>
		<property name="templateMode" value="HTML5" />
		<property name="cacheable" value="false" />  
        <property name="characterEncoding" value="UTF-8"/>
	</bean>
	
	<!-- Thymeleaf Template Engine -->
	<bean id="templateEngine" class="org.thymeleaf.spring3.SpringTemplateEngine">
        <property name="templateResolver" ref="templateResolver" />
        <property name="additionalDialects">
            <set>
                <bean class="org.thymeleaf.extras.tiles2.dialect.TilesDialect"/>
                <bean class="org.thymeleaf.extras.springsecurity3.dialect.SpringSecurityDialect"/>
                <bean class="org.thymeleaf.extras.conditionalcomments.dialect.ConditionalCommentsDialect"/>
            </set>
        </property>
    </bean>
    
	<!-- Resolves logical view names returned by Controllers to Tiles; a view name to resolve is treated as the name of a tiles definition -->
	<bean id="tilesViewResolver" class="org.thymeleaf.spring3.view.AjaxThymeleafViewResolver">
		<property name="viewClass" value="org.thymeleaf.extras.tiles2.spring.web.view.FlowAjaxThymeleafTilesView"/>
		<property name="templateEngine" ref="templateEngine"/>
		<property name="characterEncoding" value="UTF-8"/>
		<property name="order" value="0"/>
	</bean>
	
	<!-- Configures the Tiles layout system using a specific thymeleaf-enabled Tiles Configurer -->
	<bean id="tilesConfigurer" class="org.thymeleaf.extras.tiles2.spring.web.configurer.ThymeleafTilesConfigurer">
		<property name="definitions">
			<list>
				<value>/WEB-INF/**/views.xml</value>
			</list>
		</property>
	</bean>


html文件要utf-8这个就不多说了,关键是在于上面两个红色的配置.

templateEngine源码我看了一下,里面的process方法处理过程中是没有乱码的,所以只能够是说外层再做处理的时候出现的问题,然后就找到了..

tilesViewResolver , 果然配置之后,,一切正常了...


### Spring Boot 3、ThymeleafSpring Security 的应用开发教程 #### 一、项目初始化 为了使用 Spring Boot 3 开发基于 ThymeleafSpring Security 的应用程序,首先需要创建一个新的 Maven 或 Gradle 项目。以下是具体的依赖配置: 在 `pom.xml` 文件中添加以下依赖项来支持 ThymeleafSpring Security 功能: ```xml <dependencies> <!-- Spring Boot Starter Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Thymeleaf Template Engine --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <!-- Spring Security --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> </dependencies> ``` 这些依赖分别用于启用 Spring MVC[^1]、模板引擎 Thymeleaf[^1] 和安全框架 Spring Security[^4]。 --- #### 二、Spring Security 配置 在 Spring Boot 中集成 Spring Security 可以为应用程序提供身份验证和授权功能。可以通过编写一个自定义的安全配置类实现这一点。 创建名为 `MySecurityConfig.java` 的配置类并继承 `WebSecurityConfigurerAdapter`(注意:在 Spring Security 5.7.x 后已废弃此适配器,推荐直接注入 Bean)。以下是示例代码: ```java import org.springframework.context.annotation.Bean; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.web.SecurityFilterChain; public class MySecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeHttpRequests((requests) -> requests .requestMatchers("/", "/home").permitAll() .anyRequest().authenticated()) .formLogin((form) -> form .loginPage("/login") .defaultSuccessUrl("/dashboard", true)) .logout((logout) -> logout.logoutUrl("/logout")) .csrf().disable(); return http.build(); } @Bean public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } } ``` 这段代码实现了基本的身份验证逻辑,包括登录页面指定、成功重定向以及 CSRF 攻击防护关闭等功能[^4]。 --- #### 三、Thymeleaf 页面设计 Thymeleaf 是一种现代服务器端 Java 模板引擎,能够很好地与 HTML 结合工作。可以在项目的 `src/main/resources/templates/` 路径下创建 `.html` 文件作为视图层。 例如,创建一个简单的登录页面 `login.html` 如下所示: ```html <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <title>Login Page</title> </head> <body> <h1>Login to your account</h1> <form th:action="@{/login}" method="post"> <label for="username">Username:</label> <input type="text" id="username" name="username"/> <br/> <label for="password">Password:</label> <input type="password" id="password" name="password"/> <br/> <button type="submit">Log In</button> </form> </body> </html> ``` 这个表单会提交至 `/login` URL 地址,并由 Spring Security 处理认证请求[^2]。 --- #### 四、控制器设置 最后一步是为前端页面绑定对应的后端处理方法。可以创建一个基础的控制器类完成这一目标。 示例代码如下: ```java import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeController { @GetMapping("/") public String home() { return "index"; // 映射到 templates/index.html } @GetMapping("/login") public String login() { return "login"; // 映射到 templates/login.html } @GetMapping("/dashboard") public String dashboard() { return "dashboard"; // 用户登录后的主页映射 } } ``` 以上代码展示了如何通过注解的方式将 HTTP 请求路由到特定的方法上。 --- #### 总结 本教程介绍了如何利用 Spring Boot 3 构建集成了 ThymeleafSpring Security 的简单 Web 应用程序。涵盖了从项目搭建到核心组件配置的过程,帮助开发者快速入门此类技术栈的应用开发。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值