web程序基本架构:
入门程序
需求:点击超链接,发送请求,转发到成功JSP页面
搭建开发环境
加快 maven 项目构建速度键值对属性:
archetypeCatalog internal
- 在 pom.xml 中配置项目依赖:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<spring.version>5.0.2.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
```
2. 在 web.xml 中配置前端控制器
配置servlel
```xml
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
部署 tomcat,然后在 resources 资源文件夹下新建 springmvc 的配置文件,文件名随意,这里为”springmvc”:
1 |
|
新建java类:com.test.controller.HelloController.class,并加上注解
1 | package com.test.controller; |
现在还没加载 springmvc.xml 配置文件,所以需要在 web.xml 中配置:init-param 和 load-on-startup:
1 | <servlet> |
常用注解
一. RequestParam
作用:把请求中指定名称的参数给控制器中的形参赋值
属性:value:请求参数中的名称,required:请求参数中是否必须提供此参数。默认值:true,表示必须提供,如果不提供将报错。
1 | "/testRequestParam") ( |
二. RequestBody
作用:用于获取请求体内容。直接使用得到的是 key=value&key=value…结构的数据,get请求方式不适用
属性:required: 是否必须有请求体,默认值是true。当取值为true时,get 请求方式会报错。如果取值为false,get请求得到的是null。
1 | "/testRequestBody") ( |
三. PathVarbale
作用:用于绑定url中的占位符。例如:请求 url 中 /delete/{id},这个{id}就是 url 占位符。url 支持占位符是 spring3.0 之后加入的。是 springmvc 支持 rest 风格 url 的一个重要标志。
属性:value: 用于指定 url 中占位符名称。required: 是否必须提供占位符。
1 | "/testPathVarbale/{sid}") ( |
四. RequestHeader
作用:用于获取请求消息头
属性:value:提供消息投名称,required: 是否必须有此消息头
注:在实际开发中一般不怎么使用。
1 | "/testRequestHeader") ( |
五. CookieValue
作用:用于把指定 cookie 名称的值传入控制器方法参数
属性:value:指定 cookie 的名称,required: 是否必须有此cookie
1 | "/testCookieValue") ( |
六. ModelAttribute
作用:该注解是 springMVC4.3 版本后新加入的。它可以用于修饰方法和参数。
- 出现在方法上,表示当前方法会在控制器的方法执行前执行。可以修饰没有返回值的方法,也可以修饰有具体返回值的方法。
- 出现在参数上,获取指定的数据给参数赋值。
属性: value:用于获取数据的 key。 key 可以是POJO的属性名称,也可以是map结构的key
应用场景:当表单提交数据不是完整的实体类数据时,保证没有提交数据字段使用数据库对象原来的数据。
1 | "/testModelAttribute") ( |
七. SessionAttribute
作用:用于多次执行控制器方法间的参数共享
属性: value:用于指定存入的属性名称,type:用于指定存入的数据类型