beannameurlhandlermapping
时间: 2023-04-26 13:01:44 浏览: 53
beannameurlhandlermapping是一个Spring框架中的类,用于将URL映射到处理程序bean。它是一种基于bean名称的URL处理程序映射器,可以将请求的URL与已定义的处理程序bean进行匹配,并将请求转发到相应的处理程序。
相关问题
`BeanNameUrlHandlerMapping` + `HttpRequestHandlerAdapter` 配置xml文件
以下是使用`BeanNameUrlHandlerMapping`和`HttpRequestHandlerAdapter`配置XML文件的示例:
```xml
<bean name="/hello" class="com.example.HelloController"/>
<bean id="urlMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean id="handlerAdapter" class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"/>
```
在上面的示例中,我们定义了一个名为`/hello`的`HelloController`,并使用`BeanNameUrlHandlerMapping`将其映射到URL路径`/hello`。然后,我们使用`HttpRequestHandlerAdapter`来适配处理程序,以便它可以与Spring MVC框架一起使用。
请注意,我们已经将`/hello`控制器的名称作为URL路径的一部分进行了显式定义,这意味着我们没有使用默认的控制器名称生成算法。如果你没有指定控制器名称,Spring将使用默认的算法生成一个控制器名称,该算法将去掉类名中的`Controller`后缀并将其转换为小写字母。例如,一个名为`HelloController`的控制器将默认映射到`/hello`路径。
希望这可以回答你的问题。
SimpleServletHandlerAdapter 和 BeanNameUrlHandlerMapping 搭配 controller 层的代码应该怎么写
为您提供一份基本的范例,具体代码实现可以依据您的具体业务场景进行适当修改。
SimpleServletHandlerAdapter:
```java
public class SimpleServletHandlerAdapter implements HandlerAdapter {
private static final Logger logger = LoggerFactory.getLogger(SimpleServletHandlerAdapter.class);
@Override
public boolean supports(Object handler) {
return (handler instanceof Servlet);
}
@Override
public ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
((Servlet) handler).service(request, response);
logger.info("SimpleServletHandlerAdapter处理请求成功!");
return new ModelAndView();
}
@Override
public long getLastModified(HttpServletRequest request, Object handler) {
return -1;
}
}
```
BeanNameUrlHandlerMapping:
```java
public class BeanNameUrlHandlerMapping extends AbstractUrlHandlerMapping {
private static final Logger logger = LoggerFactory.getLogger(BeanNameUrlHandlerMapping.class);
@Override
protected Object lookupHandler(String urlPath, HttpServletRequest request) throws Exception {
String beanName = namesForUrlPath(urlPath)[0];
logger.info("BeanNameUrlHandlerMapping成功匹配Handler:{}", beanName);
return getApplicationContext().getBean(beanName);
}
}
```
Controller层的代码:
```java
@Controller
@RequestMapping(value = "/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping(value = "/{id}")
@ResponseBody
public User getUserById(@PathVariable("id") Integer id) {
return userService.getUserById(id);
}
@RequestMapping(value = "/list")
@ResponseBody
public List<User> getUserList() {
return userService.getUserList();
}
}
```
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)