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>