响应数据和结果视图

响应数据和结果视图

	* (ModelAndView,Model,Map,ModelMap)---request域对象中
  1. 返回字符串

     	1. Controller方法返回字符串可以指定逻辑视图的名称,根据视图解析器为物理视图的地址。
     		@Controller
     		@RequestMapping("/user")
     		public class UserController {
    
     			@RequestMapping("/testString")
     			//返回类型是String,默认将String类型的返回值作为视图名;处理器中的类类型参数会自动实例化
     			public String testString(Model model) {
     				System.out.println("testString方法执行力...");
     				// 模拟从数据库中查询出User对象
     				User user = new User();
     				user.setUsername("美美");
     				user.setPassword("123");
     				user.setAge(30);
     				// model对象
     				model.addAttribute("user", user);
     				System.out.println(111);
     				return "success";
     			}
    
     			@RequestMapping("d2")//返回类型是String,默认将String类型作为视图名;处理器中的类类型参数会自动实例化
     			public String demo2(Map m) {
     				m.put("msg", "通过map将数据传到前端页面");
     				return "main";
     			}
     			
     			@RequestMapping("d3")//返回类型是String,默认将String类型作为视图名;处理器中的类类型参数会自动实例化
     			public String demo3(ModelMap mm) {
     				mm.addAttribute("msg", "通过ModelMap将数据传到前端页面");
     				return "main";
     			}
    
     			@RequestMapping("d4")//返回类型是String,默认将String类型作为视图名;处理器中的类类型参数会自动实例化
     			public String demo5(HttpSession session) {
     				session.setAttribute("msg", "session作用域的值");
     				return "main";
     			}
     		}
    
     		在success.jsp页面
     			${user.username}
     			${user.password}
     	2. String字符串直接作为Http响应内容返回
     		@RequestMapping("r1")//方法返回的字符串作为http响应内容返回
     		@ResponseBody
     		public String demos() {
     			return "<h1>main</h1>";
     		}
    
     		//return 乱码解决
     			* 第一种方法
     				@RequestMapping(value="r1",produces="text/html;charset=UTF-8")
     				public @ResponseBody String testResponse1() {
     					return "<h1>你要干嘛</h1>";
     				}
     			* 第二种方法 在 springmvc.xml 中配置
     				<mvc:annotation-driven conversion-service="myconverService">
     		    	<mvc:message-converters register-defaults="true">
     		    		<bean class="org.springframework.http.converter.StringHttpMessageConverter">
     		    			<property name="supportedMediaTypes">
     		    				<value>text/html;charset=UTF-8</value>
     		    			</property>
     		    		</bean>
     		    	</mvc:message-converters>
     		    </mvc:annotation-driven>
    
  2. 返回值是void

     	1. 如果控制器的方法返回值编写成void,执行程序报404的异常,默认查找JSP页面没有找到。
     		1.  默认将(前缀+请求名+后缀)作为默认视图,也可以不跳转页面直接在当前页面返回字符串。
     				例如: @RequestMapping(value="/initUpdate") 默认会跳转到 initUpdate.jsp的页面。
     					@RequestMapping("r3")//默认跳转的页面:前缀+请求名+后缀  /r3.jsp
     					public void r3() {
     						
     					}
     		2. 可以使用请求转发或者重定向跳转到指定的页面
     			/**
     		     * 是void
     		     * 请求转发一次请求,不用编写项目的名称
     		     */
     		    @RequestMapping("/testVoid")
     		    public void testVoid(HttpServletRequest request, HttpServletResponse response) throws Exception {
     		        System.out.println("testVoid方法执行了...");
     		        // 编写请求转发的程序
     		        // request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response);
    
     		        // 重定向
     		        // response.sendRedirect(request.getContextPath()+"/index.jsp");
    
     		        // 设置中文乱码
     		        response.setCharacterEncoding("UTF-8");
     		        response.setContentType("text/html;charset=UTF-8");
    
     		        // 直接会进行响应 到默认jsp页面 testVoid.jsp
     		        response.getWriter().print("你好");
    
     		        return;
     		    }
    
  3. 返回值是ModelAndView对象

     	1. ModelAndView对象是Spring提供的一个对象,可以用来调整具体的JSP视图
     		可以直接new 这个对象,
     		addobject()存储到 request域中
     		setViewName() 用于跳转页面
     	2. 具体的代码如下
     		@RequestMapping("/testModelAndView")
     		public ModelAndView testModelAndView() {
     			// 创建ModelAndView对象
     			ModelAndView mv = new ModelAndView();
     			System.out.println("testModelAndView方法执行了...");
     			// 模拟从数据库中查询出User对象
     			User user = new User();
     			user.setUsername("小凤");
     			user.setPassword("456");
     			user.setAge(30);
    
     			// 把user对象存储到mv对象中,也会把user对象存入到request对象
     			mv.addObject("user", user);
    
     			// 跳转到哪个页面
     			mv.setViewName("success");
    
     			return mv;
     		}
    
  4. Model,Map:默认将(前缀+请求名+后缀)作为默认视图

     	@RequestMapping("r5")//默认跳转的页面:前缀+请求名+后缀  
     	public Model r5(Model m) {
     		m.addAttribute("msg", "klnk");
     		return m;
     	}
     	
     	@RequestMapping("r6")//默认跳转的页面:前缀+请求名+后缀  
     	public Map r6(Map m) {
     		m.put("msg", "klnksss");
     		return m;
     	}
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值