1. DispatcherServlet配置
-
作用 :
DispatcherServlet
是Spring MVC的核心前端控制器,用于接收所有HTTP请求,并将请求分发给对应的处理器(Controller)。 -
配置方式:
-
在
web.xml
中配置DispatcherServlet
,并指定springmvc-servlet.xml
作为其配置文件。 -
示例:
xml复制
<servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/springmvc-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
-
2. 组件扫描(Component Scanning)
-
作用 :自动扫描指定包路径下的注解(如
@Controller
、@Service
、@Repository
、@Component
等),并将这些类注册为Spring容器中的Bean。 -
配置方式:
xml复制
<context:component-scan base-package="com.example.controller" />
-
常用属性:
-
base-package
:指定需要扫描的包路径。 -
use-default-filters
:是否启用默认过滤器(默认为true
,会扫描@Component
等注解)。 -
annotation-config
:是否启用注解支持。
-
3. 视图解析器(View Resolver)
-
作用:将处理器返回的逻辑视图名解析为实际的视图资源(如JSP文件)。
-
常见类型:
-
InternalResourceViewResolver:用于解析JSP视图。
xml复制
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> </bean>
-
prefix
:视图文件的前缀路径。 -
suffix
:视图文件的后缀。
-
-
其他视图解析器 :如
FreeMarkerViewResolver
(FreeMarker模板)、ThymeleafViewResolver
(Thymeleaf模板)等。
-
4. 请求映射(Handler Mapping)
-
作用:定义请求与处理器之间的映射关系。
-
默认行为 :Spring MVC使用
RequestMappingHandlerMapping
,结合@RequestMapping
注解来映射请求。 -
示例:
java复制
@Controller public class MyController { @RequestMapping("/hello") public String hello(Model model) { model.addAttribute("message", "Hello, Spring MVC!"); return "hello"; } }
/hello
请求会被映射到MyController
的hello
方法。
5. 数据绑定(Data Binding)
-
作用:将请求参数绑定到Java对象中。
-
常用注解:
-
@RequestParam
:绑定请求参数到方法参数。java复制
public String getUser(@RequestParam("name") String name) { ... }
-
@ModelAttribute
:绑定请求参数到对象属性。java复制
public String saveUser(@ModelAttribute("user") User user) { ... }
-
@RequestBody
:绑定请求体到对象(通常用于JSON或XML数据)。java复制
public String saveUser(@RequestBody User user) { ... }
-
6. 数据校验(Validation)
-
作用:对用户输入的数据进行校验。
-
常用注解:
-
@Valid
:触发校验。 -
@NotNull
、@Size
、@Email
等:定义校验规则。
-
-
示例:
java复制
public String register(@Valid @ModelAttribute("user") User user, BindingResult result) { if (result.hasErrors()) { return "register"; } return "success"; }
7. 拦截器(Interceptor)
-
作用:在请求处理过程中进行拦截,执行一些通用逻辑(如权限检查、日志记录等)。
-
配置方式:
xml复制
<mvc:interceptors> <bean class="com.example.MyInterceptor" /> </mvc:interceptors>
-
方法:
-
preHandle()
:在处理器执行前调用。 -
postHandle()
:在处理器执行后、视图解析前调用。 -
afterCompletion()
:在请求完成时调用。
-
8. 静态资源访问
-
作用:允许访问静态资源(如CSS、JS、图片等)。
-
配置方式:
xml复制
<mvc:resources mapping="/static/**" location="/static/" />
-
mapping
:请求路径。 -
location
:资源存放路径。
-
9. 异常处理(Exception Handling)
-
作用:统一处理异常,返回友好的错误页面或错误信息。
-
配置方式:
-
使用
@ControllerAdvice
或@ExceptionHandler
注解。 -
示例:
java复制
@ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) public String handleException(Exception e, Model model) { model.addAttribute("errorMessage", e.getMessage()); return "error"; } }
-
10. 其他常用配置
-
启用注解驱动:
xml复制
<mvc:annotation-driven />
- 启用
@RequestMapping
、@RequestParam
等注解支持。
- 启用
-
配置全局配置文件:
xml复制
<context:property-placeholder location="classpath:application.properties" />
总结
springmvc-servlet.xml
是Spring MVC的核心配置文件,通过它,可以定义请求处理的流程、视图解析方式、组件扫描范围、拦截器、异常处理等。这些配置使得Spring MVC能够高效地处理HTTP请求,并组织项目中的资源和组件。