SpringMVC后台往前台传递参数的方式

方式1:通过request设置

@RequestMapping("/data1")
	public ModelAndView data(HttpServletRequest request,HttpServletResponse response){
		request.setAttribute("data",data1);
		ModelAndView mv = new ModelAndView("/WEB-INF/view/data/data1.jsp");
		return mv;
	}

方式2:通过ModelAndView的addObject() 方法

@RequestMapping("/data2")
	public ModelAndView data2(){
		System.out.println("data2");
		ModelAndView mv = new ModelAndView();
		mv.addObject("msg", "明天休息");
		mv.addObject("后天看电影");//他的key就是默认为数据类型 (全小写) string
		mv.addObject(new Date());//key:date
		mv.addObject(new User("小明","12345"));//key:user
		mv.addObject(new User("小强","8888"));//key:user,相同key,后面覆盖前面的.
		mv.setViewName("data1.jsp");
		return mv;
	}

方式3:
如果参数中没有返回ModelAndView对象,这时候springMVC是不知道
处理的视图是哪个的?此时就需要配置视图解析器来告诉springMVC返回的视图是怎样的.
@RequestMapping("/data3")
@ModelAttribute(“myUser”)//通过这个注解为返回的数据定义key
public User data3(){
//这种直接返回值的方式,如何指定视图地址呢?
//需要配置视图解析器
//org.springframework.web.servlet.view.InternalResourceViewResolver
//配置视图解析器后
//默认为:前缀+请求路径+后缀
return new User(“小强”,“4321”);
}
如果返回值为String,此时默认视图的地址:前缀+返回值+后缀

在springMVC的配置文件添加这样的bean,在DispatcherServlet.properties中可以找到
prefix:前缀,suffix:后缀

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/view/"/>
		<property name="suffix" value=".jsp"></property>
</bean>

如果返回值为String,返回值前加上forward:可以去掉前缀和后缀,请求转发的方式到对应的视图

@RequestMapping("/data5")
	public String data5(){
		System.out.println("data5");
		return "forward:hello.jsp";
}

如果返回值为String,返回值前加上redirect:可以去掉前缀和后缀,重定向的方式到对应的视图

@RequestMapping("/data6")
	public String data6(){
		System.out.println("data6");
		return "redirect:hello.jsp";
}

方式四:可以通过传入Model进行传值

 @RequestMapping("/data4")
	public String data4(Model m){
		System.out.println("data4");
		m.addAttribute("user", new User("小乐","7878"));
		return "data3";
	}
发布了52 篇原创文章 · 获赞 2 · 访问量 218

猜你喜欢

转载自blog.csdn.net/weixin_41588751/article/details/103965792