package com.zqkj.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; //在这里使用注解创建控制器对象 public class HelloController{ //在这里指定请求地址为 "/hello" public ModelAndView hello(HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView mv = new ModelAndView(); //为 mv 添加数据 Hello 为 Hello SpringMVC /******************begin****************/ /******************end******************/ mv.setViewName("/index.jsp"); return mv; } }
时间: 2025-06-03 11:19:40 浏览: 21
### 在Spring MVC中使用@Controller注解创建控制器对象并设置请求映射和模型数据
在Spring MVC框架中,`@Controller`注解用于标识一个类作为控制器,负责处理HTTP请求。通过`@RequestMapping`注解可以指定请求的路径和方法类型,同时可以通过`Model`或`ModelAndView`向视图传递数据[^1]。
以下是一个完整的示例代码,展示如何使用`@Controller`注解创建控制器对象,并通过`@RequestMapping`指定请求地址,同时向`Model`添加数据:
```java
package com.example.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping("/user") // 类级别的请求映射,相当于命名空间
public class UserController {
@RequestMapping(value = "/register", method = RequestMethod.GET) // 方法级别的请求映射
public String showRegisterPage(Model model) {
// 向Model中添加属性,供视图使用
model.addAttribute("title", "用户注册页面");
return "register"; // 返回逻辑视图名
}
@RequestMapping(value = "/login", method = RequestMethod.GET)
public String showLoginPage(Model model) {
model.addAttribute("title", "用户登录页面");
return "login"; // 返回逻辑视图名
}
}
```
#### 说明
- `@Controller`:将`UserController`类标记为Spring MVC的控制器[^3]。
- `@RequestMapping("/user")`:定义了类级别的请求映射,所有该类中的方法都需要以`/user`为前缀访问[^2]。
- `@RequestMapping(value = "/register", method = RequestMethod.GET)`:定义了方法级别的请求映射,指定GET请求方式下的`/user/register`路径。
- `model.addAttribute("title", "用户注册页面")`:向`Model`中添加数据,这些数据可以在JSP或其他视图技术中使用[^1]。
如果需要返回更复杂的视图信息,可以使用`ModelAndView`对象。例如:
```java
import org.springframework.web.servlet.ModelAndView;
@RequestMapping(value = "/profile", method = RequestMethod.GET)
public ModelAndView showProfilePage() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("username", "张三"); // 添加数据到ModelAndView
modelAndView.setViewName("profile"); // 设置逻辑视图名
return modelAndView;
}
```
### 注意事项
- `@RequestMapping`的`method`属性可以指定HTTP请求的方法类型,如`RequestMethod.GET`或`RequestMethod.POST`[^3]。
- 如果未指定`method`属性,默认支持所有HTTP方法。
- 配置文件(如`spring-servlet.xml`)中需要配置`InternalResourceViewResolver`,以便将逻辑视图名解析为实际的物理视图文件[^2]。
```xml
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
```
上述配置表示逻辑视图名`register`会被解析为`/WEB-INF/views/register.jsp`文件。
---
阅读全文
相关推荐






