ModelAndView
ModelAndView 是 Spring MVC 框架中的一个类,用于在控制器中返回模型数据和视图信息。
模型: 包含应用程序的数据,这些数据将被传递到视图层进行渲染。模型数据通常以键值对的形式存储在一个 map 中。
视图: 指定要渲染的视图名称或视图对象。(页面,要跳转的页面:转发)。
创建对象 :
ModelAndView modelAndView = new ModelAndView();
设置视图 :
modelAndView.setViewName("url");
添加模型数据 :
modelAndView.addObject("key", value);
配置web.xml
<!--请求和响应中文乱码-->
<filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param>
</filter>
<filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern>
</filter-mapping><!--配置前端控制器-->
<!--servlet映射-->
<servlet><!--指定servlet名称--><servlet-name>dispatcherServlet</servlet-name><!--Servlet类所在路径--><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--contextConfigLocation classpath 加载spring-mvc.xml --><init-param><!--初始化参数,用于配置Servlet的行为。--><param-name>contextConfigLocation</param-name><param-value>classpath:spring-*.xml</param-value></init-param><!--启动tomcat就加载servlet--><load-on-startup>1</load-on-startup>
</servlet><servlet-mapping><servlet-name>dispatcherServlet</servlet-name><!--定义Servlet的URL映射--><url-pattern>/</url-pattern>
</servlet-mapping>
引入jar包
<!--lombok-->
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.22</version>
</dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version>
</dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version>
</dependency>
注解
@Controller
标注一个普通的JavaBean成为可以处理请求的控制器。
@RequestMapping
将请求URL进行映射特定的方法或类上。
@RequestMapping(value = "url",method = ,params = {"param1","param2",....} )
value:映射的路径
method:请求方式,不用加"",默认get,post都能进去RequestMethod.POST、RequestMethod.GET
params:传递参数,内容是数组(请求的URL地址需要带那些参数)param1、param2:使参数名,写入的参数名是必填项
类级别的注解:你已经在类级别使用了@RequestMapping("/index")注解 ,这意味着这个控制器类中的所有方法都会以 /index 作为基础路径。
方法级别的注解:你需要为每个方法指定不同的路径,以便区分不同的请求。
@Controller //控制器类
public class IndexController {@RequestMapping("/index")//将请求URL进行映射public ModelAndView index(){ModelAndView modelAndView = new ModelAndView();//要跳转的页面modelAndView.setViewName("/demo01.jsp");System.out.println("这是index方法!");return modelAndView;}@RequestMapping("/test")public ModelAndView test(){ModelAndView modelAndView = new ModelAndView();modelAndView.setViewName("/demo02.jsp");System.out.println("这是test方法!");return modelAndView;}
}
@RequestParam
参数传递.
@RequestParam(value = "别名",required = false,defaultValue = "")
value : 属性名用于起别名
required : 是否必须,false为否
defaultValue :默认值
@Controller //控制器类
public class IndexController {@RequestMapping(value = "/test")public ModelAndView test(@RequestParam(value = "uid") Integer id,@RequestParam("uname") String name){ModelAndView modelAndView = new ModelAndView();modelAndView.setViewName("/demo02.jsp");System.out.println("这是test方法!");System.out.println("id==="+id);System.out.println("name==="+name);return modelAndView;}
}
参数传递
传对象
@Data
public class SmbmsUser {private String name;private Integer id;
}
@Controller //控制器类
public class IndexController {@RequestMapping(value = "/index1")//将请求URL进行映射public String index1(SmbmsUser smbmsUser){System.out.println("这是index1方法!");System.out.println(smbmsUser.toString());return null;}
}
传对象直接使用属性名进行传递。
@Controller
@RequestMapping("/user")
public class DemoController {@RequestMapping("/demo01")public String demo01(SmbmsUser smbmsUser){System.out.println(smbmsUser);return "/demo03.jsp";}
}
<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false" language="java" %><html><head><title>Title</title><meta charset="utf-8"></head><body>${smbmsUser.id}=======${smbmsUser.name}</body></html>
ModelAndView
包含视图信息和模型数据信息。
@Controller //控制器类
public class IndexController {@RequestMapping("/index2")public ModelAndView index2(SmbmsUser smbmsUser){ModelAndView modelAndView = new ModelAndView();modelAndView.setViewName("/demo03.jsp");modelAndView.addObject("smbmsUser",smbmsUser);return modelAndView;}
}
<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false" language="java" %><html><head><title>Title</title><meta charset="utf-8"></head><body>${smbmsUser.id}=======${smbmsUser.name}</body></html>