目录
一、创建webapp文件夹
文件目录包括templates,web.xml。
web.xml配置
<!-- 前端控制器-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 设置.xml资源位置 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!-- 启动服务器时加载 -->
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
二、创建配置.xml文件
<!--扫描controller包下的类-->
<context:component-scan base-package="com.powernode.controller"></context:component-scan>
<!--视图解析器-->
<bean id="thymeleafViewResolver" class="org.thymeleaf.spring6.view.ThymeleafViewResolver">
<!--作用于视图渲染的过程中,可以设置视图渲染后输出时采用的编码字符集-->
<property name="characterEncoding" value="UTF-8"/>
<!--如果配置多个视图解析器,它来决定优先使用哪个视图解析器,它的值越小优先级越高-->
<property name="order" value="1"/>
<!--当 ThymeleafViewResolver 渲染模板时,会使用该模板引擎来解析、编译和渲染模板-->
<property name="templateEngine">
<bean class="org.thymeleaf.spring6.SpringTemplateEngine">
<!--用于指定 Thymeleaf 模板引擎使用的模板解析器。模板解析器负责根据模板位置、模板资源名称、文件编码等信息,加载模板并对其进行解析-->
<property name="templateResolver">
<bean class="org.thymeleaf.spring6.templateresolver.SpringResourceTemplateResolver">
<!--设置模板文件的位置(前缀)-->
<property name="prefix" value="/WEB-INF/templates/"/>
<!--设置模板文件后缀(后缀),Thymeleaf文件扩展名不一定是html,也可以是其他,例如txt,大部分都是html-->
<property name="suffix" value=".html"/>
<!--设置模板类型,例如:HTML,TEXT,JAVASCRIPT,CSS等-->
<property name="templateMode" value="HTML"/>
<!--用于模板文件在读取和解析过程中采用的编码字符集-->
<property name="characterEncoding" value="UTF-8"/>
</bean>
</property>
</bean>
</property>
</bean>
三、Controller类的创建
1.类中的方法使用@RequestMapping进行注解
(1).value参数:
@RequestMapping(value = "/example")
public String index() {
// 返回逻辑视图
return "example";
}
@RequestMapping可以传递数组参数 :@RequestMapping(value = {"/example1","/example"})
可使用Ant风格进行模糊匹配,其中通配符包括
?:代表任意一个字符
*:代表0到N个任意字符
**:代表0到N个任意字符,并且路径中可以出现/
使用RESTFul参数传递方法示例
@RequestMapping(value = "/login/{username}/{password}")
public String login(
@PathVariable("username")
String username,
@PathVariable("password")
String password){
if(username.equals("admin") && password.equals("123456")){return "login";}
return "shop";
}
(2).method参数
通过该属性可以限制前端发送的请求方式,若是前端发送的请求方式与后端接收方式不同,则会出现405错误。
@RequestMapping(value="/login",method=RequestMethod.POST)
请求方式可以直接使用
@GetMapping
@PostMapping
(3).params参数
@RequestMapping(value="testParams",params={"username","password"})
public String testParams(){
return "ok";
}
当RequestMapping注解中添加了params,则表示有添加了新的约束条件。
当请求路径时/testParams,并且请求携带的参数有username和password的时候,才能映射成功!
关于thymeleaf中如何发送请求时携带数据:
<a th:href ="/testParams"?name=value&name=value></a>
<a th:href ="/testParams"?(name='admin',password='1234')></a>
(4).headers参数
数组,用来设置请求头的映射。
@RequestMapping(value="/login",headers={"Referer","Host"})
public String testHeaders(){
return "ok";
}
当请求路径时/login,并且请求投中包含Referer,也包含Host的时候,映射成功。
2.使用@RequestParam注解(请求参数)
@RequestParam注解中的属性:
value属性与name属性:传递参数
required属性:用来设置参数是否为必须。默认值为true,默认情况下参数是必须传递过来,若是前端没有提交该参数。报错:400错误。 类似与@RequestMapping中params属性。
defaultValue属性:通过设置defaultValue属性可以给参数赋默认值。
3.依靠控制器方法上形参名接受参数(请求参数)
如果 请求参数名 与 控制器方法上的形参名 保持一致,那么@RequestParam注解可以省略。
若是使用的为Spring6+版本,则需要在pom.xml文件中添加如下的编译配置。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.12.1</version>
<configuration>
<source>21</source>
<target>21</target>
<compilerArgs>
<arg>-parameters</arg>
</compilerArgs>
</configuration>
</plugin>
</plugins>
</build>
4.使用Bean类接受参数
要求:Bean类中的属性名需要与请求参数名相同。