一、提交数据的处理
- 提交的域名称和处理方法的参数一致即可
提交的数据 | |
处理方法
|
@RequestMapping(value="/hello")
public String hello(
String name) {
System.out.println(name);
return "index.jsp";
}
|
- 如果域名称和参数名不一致
提交的数据 | |
处理方法
|
@RequestMapping(value="/hello")
//@RequestParam("uname")中uname是提交的域的名称
public String hello(
@RequestParam("uname") String name) {
System.out.println(name);
return "index.jsp";
}
|
- 提交是一个对象
要求提交的表单
域名和对象的属性名一致,
参数使用对象即可。
提交的数据 | |
处理方法
|
@RequestMapping(value="/user")
public String user(User user) {
System.out.println(user);
return "index.jsp";
}
|
实体类
|
public class User {
private int id;
private String name;
private String pwd;
//省略了get/set方法
}
|
二、将数据显示到UI层
- 通过ModelAndView-需要视图解析器
@RequestMapping(value="/hello")
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
//新建一个ModelAndView对象
ModelAndView mv = new ModelAndView();
//封装要显示到视图中的数据
//相当于request.setAttribute("msg", "Hello, spring mvc!");
mv.addObject("msg", "Hello, spring mvc!");
//设置视图名
mv.setViewName("hello");//WEB-INF/jsp/hello.jsp
return mv;
}
<!-- 配置渲染器 视图解析器 -->
<bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<!-- 结果视图的前缀 -->
<property name="prefix" value="/WEB-INF/jsp/" />
<!-- 结果视图的后缀 -->
<property name="suffix" value=".jsp" />
<!-- 例:视图名为:hello 渲染后:/WEB-INF/jsp/hello.jsp 该页面-->
</bean>
- 通过ModelMap-不需要视图解析器
@RequestMapping(value="/hello")
public String user(String uname, ModelMap model) {
//相当于request.setAttribute("name", uname);
model.addAttribute("name", uname);
return "index.jsp";
}
ModelMap需要作为处理方法的参数
|
- ModelAndView和ModelMap的区别
相同点 | 都可以将数据封装显示到表示层页面中 |
不同点 |
ModelAndView可以指定跳转的视图(通过配置视图解析器),而ModelMap不能;
ModelAndView需要配置视图解析器,而ModelMap不需要配置。
|
三、Spring MVC使用的是单例模式
//证明spring mvc是单例的
public HelloController() {
System.out.println("HelloController constructor");
}
在服务器启动后不管对HelloController.java中的@RequestMapping(value="/hello")访问多少次,里面的构造方法都只是在服务器启动的时候执行了一次。 |