5.SpringMVC映射器和适配器配置(annotation)

 

项目工程目录:

项目依赖jar包:

Vo: User

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
package com.course.vo;

public class User {

private Integer id;
private String name;
private Integer age;

public User() {
super();
}

public User(Integer id, String name, Integer age) {
super();
this.id = id;
this.name = name;
this.age = age;
}

public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}

Controller

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
package com.course.controller;

import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import com.course.vo.User;

@Controller
@RequestMapping("user")
public class UserController {

@RequestMapping("getUserList5")
public ModelAndView getUserList5() {
List<User> userList = new ArrayList<>();
User user;
for (int i = 0; i < 5; i++) {
user = new User(i, "name" + i, 10 + i);
userList.add(user);
}

// 封装页面地址和发送到页面的数据
ModelAndView modelAndView = new ModelAndView();

// 相当于httpServletRequest.setAttribute();
modelAndView.addObject("userList", userList);

// 相当于httpServletRequest.getRequestDispatcher("/WEB-INF/view/UserList.jsp").forward(httpServletRequest, httpServletResponse);
modelAndView.setViewName("/WEB-INF/view/UserList.jsp");

return modelAndView;
}

@RequestMapping("getUserList10")
public ModelAndView getUserList10() {
List<User> userList = new ArrayList<>();
User user;
for (int i = 0; i < 10; i++) {
user = new User(i, "name" + i, 10 + i);
userList.add(user);
}

// 封装页面地址和发送到页面的数据
ModelAndView modelAndView = new ModelAndView();

// 相当于httpServletRequest.setAttribute();
modelAndView.addObject("userList", userList);

// 相当于httpServletRequest.getRequestDispatcher("/WEB-INF/view/UserList.jsp").forward(httpServletRequest, httpServletResponse);
modelAndView.setViewName("/WEB-INF/view/UserList.jsp");

return modelAndView;
}

@RequestMapping("getUserList20")
public ModelAndView getUserList20() {
List<User> userList = new ArrayList<>();
User user;
for (int i = 0; i < 20; i++) {
user = new User(i, "name" + i, 10 + i);
userList.add(user);
}

// 封装页面地址和发送到页面的数据
ModelAndView modelAndView = new ModelAndView();

// 相当于httpServletRequest.setAttribute();
modelAndView.addObject("userList", userList);

// 相当于httpServletRequest.getRequestDispatcher("/WEB-INF/view/UserList.jsp").forward(httpServletRequest, httpServletResponse);
modelAndView.setViewName("/WEB-INF/view/UserList.jsp");

return modelAndView;
}

@RequestMapping(value = {"searchUserList", "getUserList", "queryUserList"}, method = RequestMethod.GET)
public ModelAndView getUserList() {
List<User> userList = new ArrayList<>();
User user;
for (int i = 0; i < 2; i++) {
user = new User(i, "name" + i, 10 + i);
userList.add(user);
}

// 封装页面地址和发送到页面的数据
ModelAndView modelAndView = new ModelAndView();

// 相当于httpServletRequest.setAttribute();
modelAndView.addObject("userList", userList);

// 相当于httpServletRequest.getRequestDispatcher("/WEB-INF/view/UserList.jsp").forward(httpServletRequest, httpServletResponse);
modelAndView.setViewName("/WEB-INF/view/UserList.jsp");

return modelAndView;
}
}

springmvc.xml

控制器映射器、控制器适配器、视图解析器的<bean>节点配置可以去除,只保留<context:component-scan base-package=""></context:component-scan>节点。

添加了<mvc:annotation-driven></mvc:annotation-driven>之后,控制器映射器、控制器适配器、视图解析器的<bean>节点配置可以去除。

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
<?xml version="1.0" encoding="UTF-8"?>

<!-- 头文件 -->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">


<!--
配置控制器
包扫描
-->
<context:component-scan base-package="com.course.controller"></context:component-scan>

<!--
配置控制器映射器
在spring3.1之前使用org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping注解映射器。
在spring3.1之后使用org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping注解映射器。
-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>


<!--
配置控制器适配器
在spring3.1之前使用org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter注解适配器。
在spring3.1之后使用org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter注解适配器。
-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>

<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>

<!--
合并注解的控制器映射器和控制器适配器的配置
对控制器映射器和控制器适配器进行加强,如把对象转化为json字符串
-->
<mvc:annotation-driven></mvc:annotation-driven>

</beans>

web.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
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>01_springmvc_hello</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>

<!-- 配置前端控制器 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<!-- 加载springmvc.xml -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>

<!-- 启动加载 -->
<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

</web-app>

UserList.jsp

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
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>User List</h1>
<hr/>
<table align="center" width="60%" border="1" cellspacing="5">
<thead>
<tr>
<th>Id</th>
<th>Name</th>
<th>Age</th>
<tr>
</thead>
<tbody>
<c:forEach var="user" items="${userList}">
<tr>
<td>${user.id}</td>
<td>${user.name}</td>
<td>${user.age}</td>
</tr>
</c:forEach>
</tbody>
</table>
</body>
</html>

log4j.properties

1
2
3
4
5
6
7
8
# Global logging configuration
log4j.rootLogger=INFO, stdout
# MyBatis logging configuration...
log4j.logger.org.mybatis.example.BlogMapper=TRACE
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

启动Tomcat

浏览器访问: http://localhost:8080/01_springmvc_init/user/getUserList5.do

浏览器访问: http://localhost:8080/01_springmvc_init/user/getUserList10.do

浏览器访问: http://localhost:8080/01_springmvc_init/user/getUserList20.do

浏览器访问:

1
2
3
http://localhost:8080/01_springmvc_init/user/searchUserList.do
http://localhost:8080/01_springmvc_init/user/getUserList.do
http://localhost:8080/01_springmvc_init/user/queryUserList.do