Spring Boot与Web开发

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

前言

一、静态资源访问

1.默认配置

 2.webjars的使用

(1).在webjars官网 查找相关依赖 pom文件引用

(2). 请求访问相关资源

3.自定义静态资源目录

(1).配置文件中配置

 (2).定义配置类配置

 二、用户请求和响应处理

1、用户请求与响应处理流程

 2、用户请求参数传递

 (1).前端页面可以通过表单、url传值、ajax方式等传输数据到控制端。

 方式1:若传送form表单数据,表单属性名称与Controller中方法参数名保持一致,这时可以不用注解,直接传参。

方式2:前端的参数名与Controller方法中的参数名不一致时,可以使用@RequestParam注解来指定URL参数与方法参数之间的映射关系 。

方式3:在RESTFul风格的请求中,常将参数在url中以“/param”的方式进行传递,这时就需要使用@PathVariable注解从url中获取相应的参数值。

3、用户响应处理

(1).返回对应视图页面

(2).返回数据

三、Thymeleaf简介

1.Thymeleaf简介

(1).引入依赖

(2). 模板文件中 加入引用

(3).进行基础配置

2、Thymeleaf基本语法

(1).标准表达式

① 变量表达式

 ② 选择(星号)表达式

③ 消息表达式

④ 链接网址表达式

(2).常用th标签属性

① th:text属性

② th:object标签

③ th:if和th:unless标签

④ th:switch和th:case标签

⑤ th:each标签

总结



前言

 使用Spring Boot进行Web项目开发,一般会使用MVC模式,主要包括模型端、视图层和控制端。在使用Spring MVC框架进行Web应用开发时,视图层主要由HTML和JSP承担,Spring Boot提供了一些视图技术支持,官网建议使用Thymeleaf模板引擎。


一、静态资源访问

1.默认配置

ResourceProperties类里面,描述了默认的静态资源映射路径,路径数组描述了相关路径。

默认配置的/**会映射到相应路径,访问路径为:当前项目根路径+/静态资源名。

private static final String[] CLASSPATH_RESOURCE_LOCATIONS = new String[]{
"classpath:/META-INF/resources/",
 "classpath:/resources/",
 "classpath:/static/", 
"classpath:/public/"
};

若在默认的路径下有同名的文件,则访问时优先高的先响应,优先级顺序为:

 META-INF/resources > resources > static > public。

根据默认的配置(/**)拦截所有请求,若要访问 http://localhost:8080/js/index.js

(1).先去controller中找有没有相对应的请求来处理index.js,有则处理,没有则将请求交给静态资源处理器;

(2) .静态资源处理器映射到默认路径下找资源,若找到则显示,若找不到则响应404页面。

 2.webjars的使用

webjars可以将前端的各种框架、组件以jar包的形式来使用。webjars将通用的Web前端资源(如js,css等)打成jar包文件,部署在Maven中央仓库上,借助Maven工具对其进行统一依赖管理,保证这些Web资源版本唯一性,升级也比较容易。

(1).在webjars官网 查找相关依赖 pom文件引用

<!--  引入webjars依赖  -->
<dependency>
    <groupId>org.webjars</groupId>
    <artifactId>jquery</artifactId>
    <version>3.6.0</version>
</dependency>

(2). 请求访问相关资源

请求META-INF/resources下的/webjars/jquery/3.6.0/下的jquery.js资源:http://localhost:8080/webjars/jquery/3.6.0/jquery.js 

3.自定义静态资源目录

(1).配置文件中配置

在项目中用户自己定义静态资源加载的位置,需要进行配置才能正常访问到,可以在配置文件中配置或定义一个配置类配置。

项目的resources下创建文件夹mystatic,其中放置静态文件index.js

spring.resources.static-locations=classpath:/mystatic/,classpath:/METAINF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/

 (2).定义配置类配置

项目的resources目录下,新建文件夹res,在res中创建静态资源文件index2.js

 二、用户请求和响应处理

1、用户请求与响应处理流程

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

 2、用户请求参数传递

 (1).前端页面可以通过表单、url传值、ajax方式等传输数据到控制端。

       控制端:@RequestParam、@PathVariable、@ RequestBody、@ ModelAttribute

 方式1:若传送form表单数据,表单属性名称与Controller中方法参数名保持一致,这时可以不用注解,直接传参。

 

使用url请求传参,请求的url为: http://localhost:8080/user?username=aaa&telephone =1111,参数名和方法的属性名保持一致,同样可以将值传输到Controller方法中。

方式2:前端的参数名与Controller方法中的参数名不一致时,可以使用@RequestParam注解来指定URL参数与方法参数之间的映射关系 。

默认参数值不能为空,否则会出现异常信息,可以使用required属性指明参数是否允许为空。

方式3:在RESTFul风格的请求中,常将参数在url中以“/param”的方式进行传递,这时就需要使用@PathVariable注解从url中获取相应的参数值。

@PathVariable注解的value属性值和地址中的第一个参数名一致,表示把此参数值传给方法的第一个参数。

方式4: 若content-type不是默认的application/x-www-form-urlcoded编码,而是application/json或者application/xml等,则可以使用@RequestBody注解。

@RequestMapping("/login")
public String login(@RequestBody User user){
    return user.getUsername()+" :"+user.getPwd();
}

3、用户响应处理

(1).返回对应视图页面

如html页面或jsp页面,类名使用@Controller注解,即返回对应的页面。

(2).返回数据

如JSON格式的数据,若在类名或方法上结合使用了@ResponseBody注解,则返回 JSON格式的数据。

.可以在类名直接 使用@RestController注解,替代@Controller+@ResponseBody这两个注解

三、Thymeleaf简介

1.Thymeleaf简介

Thymeleaf是一款支持html、xml、text、javascript、css、raw等的模板引擎。

包含两种标记模板模式:html和xml,三种文本模板板式:text、javascript、css,一个无操作模板模式raw。

(1).引入依赖

<!-- 引入Thymeleaf依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

(2). 模板文件中 加入引用

<html lang="zh" xmlns:th="http://www.thymeleaf.org">
@Controller
public class HelloController {
    @GetMapping("/test1")
    public String test1(Model model){
         model.addAttribute("message"," 新闻");
         return "test1";
    }
}
<h2 th:text="${message}">标题2 </h2>

(3).进行基础配置

#设置模板模式
spring.thymeleaf.mode=HTML5
#设置模板编码
spring.thymeleaf.encoding=UTF-8
#设置文档响应类型
spring.thymeleaf.content-type=text/html
#关闭缓存,不然开发时没法看到实时页面
spring.thymeleaf.cache=false

2、Thymeleaf基本语法

(1).标准表达式

① 变量表达式

变量表达式实际上是将上下文中包含的变量映射到OGNL表达式或Spring EL表达式,使用格式为:${…},一般用在html标签的元素属性中。

<input type="text" name="username" value="admin" th:value="${user.username}">

user.username表示引用用户对象user的username属性,若当前项目服务未启动或user.username值不存在,则文本输入框中显示值admin,若当前项目服务启动并且user.username值存在,则替换静态默认值admin,达到模板引擎动态替换数据。

 ② 选择(星号)表达式

一般来说,选择表达式和变量表达式使用效果一样,主要区别是:选择表达式计算所选对象而不是整个上下文,使用格式为:*{…}。

<div th:object="${user}">
         <span th:text="*{username}"></span>
   </div>

div th:object="${user}"选择表达式可以和标签th:object一起使用,完成对象属性的简写,表示直接获取object对象中的属性。 表示先取到用户对象user,再获取用户名属性。

③ 消息表达式

消息表达式主要用于模板页面国际化资源的动态替换和展示,使用格式为:#{…}。需要先定义国际化的资源文件(*.properties),再使用#{}格式动态获取资源文件的值。

 #英文资源文件resource_en_US.properties:
home.welcome=Welcome!
 
#中文资源文件resource_zh_CN.properties:
home.welcome=欢迎!
<p th:text="#{home.welcome}">hello</p>
④ 链接网址表达式

链接网址表达式可以把有用的上下文或会话信息添加到URL中,使用格式为:@{...},一般和th:href、th:src等标签结合使用,显示Web应用中的URL链接,支持绝对路径和相对路径。

 <a href="detail.html" th:href="@{/user/detail(id=${userId})}">show</a>

                                                        

   <a href="/unit4demo /user/detail?id=1}">show</a>

在Thymeleaf的表达式中,可以取各种类型的数据如:文本(‘one text’,‘hello!’)、数值(0,12.3,4.5)、布尔类型(true,false)、空值(null)。在进行各种运算时,主要有使用“+”进行字符串连接、使用“+、-、*、/、%”等进行算术运算、使用“!、not、and、or”等进行逻辑运算、使用“>、<、>=、<=、==、!=(gt、lt、ge、le、eq、ne)”等进行关系运算、使用“?:”进行条件运算。

(2).常用th标签属性

① th:text属性
#控制端存储数据代码
map.put("message","<h3>test</h3>");
#前台获取代码
<p th:text="${message}">th:text</p>
    <p th:utext="${message}">th:utext</p>
② th:object标签

用于表单数据对象绑定,将表单绑定到后台控制端的一个JavaBean参数,一般与th:field一起使用进行表单数据绑定。

#控制端存储数据代码
<form th:action="@{/test2}" th:object="${user}" method="post">
<input type="text" th:field="*{username}"/>
<input type="submit"/>
</form>

th:field表示绑定数据到表单元素,使用*{username}表示获取user对象中的属性username的值

th:object标签获取后台传过来的上下文中的user对象。

th:action表示后台控制器路径,使用@{}表达式进行路径处理

③ th:if和th:unless标签

th:if和th:unless表示条件判断,th:if是当条件成立时显示,th:unless则是条件不成立时显示。

<p th:if="${message}!=null" th:text="${message}">对象不空,则显示信息</p>
<p th:unless="${message}==null" th:text="${message}">对象为空,没有数据显示</p>

${message}!=null判断message是否为空对象,若不为空,则显示其内容。th:if的属性值若为非0数值、非0字符值、非“false”“off”“no”字符串等,则认为条件成立。

④ th:switch和th:case标签

th:switch和th:case标签类似于Java的switch-case结构

<div th:switch="${user.role}">
<p th:case="admin">管理员用户</p>
<p th:case="nuser">普通用户</p>
<p th:case="*">其他用户</p>
</div>

用th:switch进行用户角色判断,使用th:case进行匹配,若没有匹配成功,用th:case="*"表示,类似于Java中的default。

⑤ th:each标签

th:each标签用于循环遍历,遍历的对象可以为普通对象、列表、数组等。

#控制端在用户对象中存储了数据,并存在了map中
<div th:each="u:${user}">
<p th:text="${u.id}">id</p> 
<p th:text="${u.username}">username</p> 
</div>

这里使用th:each迭代获取对象,u代表迭代出的某一个具体对象,使用th:text显示u对象的id和username属性值。

例如:

#控制端在users列表中存储了user对象,并存在了map中
<tr  th:each="user,iterStat: ${users}">
        <td th:text="${iterStat.index+1}">index</td>
        <th th:text="${user.id}">id</th>
        <td th:text="${user.username}">name</td>
    </tr>

th:each遍历users列表中的user对象,iterStat表示状态变量,其属性主要有:

index:当前迭代对象的index(从0开始计算)

count:当前迭代对象的index(从1开始计算)

size:被迭代对象的大小 current:当前迭代变量

even/odd:布尔值,当前循环是否是偶数/奇数(从0开始计算)

first:布尔值,当前循环是否是第一个 last:布尔值,当前循环是否是最后一个


总结

以上就是今天要讲的内容,本文仅仅简单介绍了spring和web的项目开发,主要包括模型端、视图层和控制端。

  • 25
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spring Boot是一种基于Java的快速应用程序开发框架,旨在简化新Spring应用程序的创建和部署。它提供了自动配置、开箱即用的功能和简单的Maven配置,使您能够使用Spring框架来开发Web应用程序。 要使用Spring Boot开发Web应用程序,首先需要在pom.xml文件中添加spring-boot-starter-web依赖: ``` <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> ``` 然后,您可以创建一个Spring控制器来处理Web请求。例如,以下是一个简单的控制器,它响应'/hello'路径的GET请求: ``` @RestController public class HelloController { @GetMapping("/hello") public String sayHello() { return "Hello, Spring Boot!"; } } ``` 最后,您可以使用Spring Boot提供的内置Tomcat服务器在本地运行应用程序。只需在应用程序的main方法中添加@SpringBootApplication注解并调用SpringApplication.run方法即可启动应用程序: ``` @SpringBootApplication public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } } ``` 这就是使用Spring Boot开发Web应用程序的基本流程。希望这些信息对您有帮助。 ### 回答2: Spring Boot 是一个开源的Java开发框架,它可以帮助开发者快速构建基于Spring框架的应用程序。用Spring Boot开发Web应用非常方便。 首先,Spring Boot提供了自动配置功能,简化了应用程序的配置过程。通过使用注解和约定,Spring Boot能够自动配置应用程序所需的各种组件和依赖项,例如数据库连接、Web服务器等。这样开发人员不需要手动编写大量的配置代码,提高了开发效率。 其次,Spring Boot具有内嵌的Web服务器(如Tomcat、Jetty等)和Servlet容器。这意味着开发者无需部署额外的Web服务器,只需打包应用程序为可执行的JAR文件,即可直接运行。这样可以减少运维工作和服务器资源的消耗。 另外,Spring Boot还提供了丰富的开发工具和插件,如Spring Boot DevTools和Spring Boot Actuator等。这些工具可以帮助开发人员快速开发和调试应用程序,还可以监控和管理应用程序的各种指标和状态。 除此之外,Spring Boot还支持使用Spring MVC快速构建RESTful API,同时也能与其他框架如Thymeleaf、Freemarker、Velocity等进行无缝集成,方便实现前后端分离的开发模式。 总之,Spring Boot是一个强大而简化的开发框架,它使得Spring应用程序的开发更加快速、高效。无论是开发小型项目还是大型复杂项目,都可以选择使用Spring Boot开发Web应用。 ### 回答3: Spring Boot是一个用于简化Spring应用程序开发的框架。它提供了一个快速开发的环境,并且具有自动化的配置,减少了开发人员的工作量。在使用Spring Boot开发Web应用程序时,可以遵循以下步骤: 1. 配置pom.xml:在项目的pom.xml文件中,添加Spring Boot相关的依赖项。通常包括Spring WebSpring Data JPA、Spring Security等。 2. 创建Controller:使用注解方式创建Controller类,处理来自客户端的请求。通过@RestController注解,可以将Controller类中的处理方法的返回值直接作为响应体返回给客户端。 3. 创建Service:在Service类中,编写业务逻辑代码。可以使用注解@Service将类标记为Service组件,并且使用@Autowired注解注入其他的依赖。 4. 创建Repository:在Repository类中,编写数据库操作的代码。可以使用注解@Repository将类标记为Repository组件,并且使用Spring Data JPA提供的接口来实现对数据库的操作。 5. 定义实体类:根据业务需求,定义与数据库表对应的实体类。实体类中使用注解@Entity标记类为实体类,并且使用注解@Id标记主键字段。 6. 配置数据库连接:在application.properties文件中,配置数据库连接信息,包括数据库URL、用户名、密码等。 7. 运行应用程序:通过main方法启动Spring Boot应用程序。Spring Boot会自动创建并配置好相应的运行环境,并且根据配置的端口号监听客户端的请求。 8. 测试应用程序:使用工具如Postman发送HTTP请求,测试Controller中定义的接口。可以通过URL访问接口,并且根据请求的参数和响应的结果,验证应用程序的正确性。 通过上述步骤,使用Spring Boot开发Web应用程序能够快速简便地搭建一个可靠的系统。同时,Spring Boot还提供了自动化的配置和部署功能,让开发人员能够专注于业务逻辑的开发,而不需要关心复杂的配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值