以下是关于“简单了解SpringMVC常用组件作用解析”的完整攻略,其中包含两个示例。
简单了解SpringMVC常用组件作用解析
SpringMVC是一个基于MVC构架的Web框架,它提供了一种灵活、高效的方式来开发Web应用程序。在SpringMVC中,有一些常用的组件,下面我们来简单了解一下这些组件的作用。
DispatcherServlet
DispatcherServlet是SpringMVC的核心组件,它负责接收所有的请求,并将请求分发给对应的控制器进行处理。在SpringMVC中,我们需要在web.xml文件中配置DispatcherServlet。
以下是一个web.xml文件的示例:
<web-app>
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/dispatcherServlet-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
在本示例中,我们定义了一个名为dispatcherServlet的Servlet,并将其映射到根路径"/"。我们使用
HandlerMapping
HandlerMapping用于将请求映射到对应的控制器方法上。在SpringMVC中,HandlerMapping是一个接口,它有多个实现类,如RequestMappingHandlerMapping、SimpleUrlHandlerMapping等。
以下是一个使用RequestMappingHandlerMapping的示例:
@Configuration
@EnableWebMvc
public class AppConfig implements WebMvcConfigurer {
@Override
public void configureHandlerMapping(HandlerMappingRegistry registry) {
registry.addMapping("/user/**").allowedMethods("GET", "POST");
}
}
在本示例中,我们使用@Configuration注解定义了一个名为AppConfig的配置类,并使用@EnableWebMvc注解启用了SpringMVC。我们实现了WebMvcConfigurer接口,并重写了configureHandlerMapping()方法。在configureHandlerMapping()方法中,我们使用HandlerMappingRegistry来指定了请求路径和允许的HTTP方法。
HandlerAdapter
HandlerAdapter用于将请求交给控制器方法进行处理。在SpringMVC中,HandlerAdapter是一个接口,它有多个实现类,如RequestMappingHandlerAdapter、SimpleControllerHandlerAdapter等。
以下是一个使用RequestMappingHandlerAdapter的示例:
@Configuration
@EnableWebMvc
public class AppConfig implements WebMvcConfigurer {
@Override
public void configureHandlerAdapter(HandlerAdapterRegistry registry) {
registry.addAdapter(new MyHandlerAdapter());
}
}
在本示例中,我们使用@Configuration注解定义了一个名为AppConfig的配置类,并使用@EnableWebMvc注解启用了SpringMVC。我们实现了WebMvcConfigurer接口,并重写了configureHandlerAdapter()方法。在configureHandlerAdapter()方法中,我们使用HandlerAdapterRegistry来添加了一个自定义的HandlerAdapter。
ViewResolver
ViewResolver用于将控制器方法的返回值解析为视图。在SpringMVC中,ViewResolver是一个接口,它有多个实现类,如InternalResourceViewResolver、FreeMarkerViewResolver等。
以下是一个使用InternalResourceViewResolver的示例:
@Configuration
@EnableWebMvc
public class AppConfig implements WebMvcConfigurer {
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp("/WEB-INF/views/", ".jsp");
}
}
在本示例中,我们使用@Configuration注解定义了一个名为AppConfig的配置类,并使用@EnableWebMvc注解启用了SpringMVC。我们实现了WebMvcConfigurer接口,并重写了configureViewResolvers()方法。在configureViewResolvers()方法中,我们使用ViewResolverRegistry来指定了视图的前缀和后缀。
示例1
以下是一个使用SpringMVC的示例:
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping(value = "/list", method = RequestMethod.GET)
public String list(Model model) {
List<User> userList = userService.getUserList();
model.addAttribute("userList", userList);
return "userList";
}
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public String detail(@PathVariable("id") Long userId, Model model) {
User user = userService.getUserById(userId);
model.addAttribute("user", user);
return "userDetail";
}
}
在本示例中,我们使用@Controller注解标识UserController类为控制器,并使用@RequestMapping注解指定了请求路径、请求方法、请求参数等信息。
示例2
以下是另一个使用SpringMVC的示例:
@RestController
@RequestMapping("/api/user")
public class UserApiController {
@Autowired
private UserService userService;
@GetMapping("/{id}")
public User getUserById(@PathVariable("id") Long userId) {
return userService.getUserById(userId);
}
@PostMapping("/")
public User addUser(@RequestBody User user) {
return userService.addUser(user);
}
}
在本示例中,我们使用@RestController注解标识UserApiController类为控制器,并使用@RequestMapping注解指定了请求路径、请求方法、请求参数等信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:简单了解SpringMVC常用组件作用解析 - Python技术站