核心代码
controller层
package controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import pojo.Student;
//@Controller标注是一个类是Web控制器,
//url可以对这个类进行访问
@Controller
public class TestController {
//因为web.xml里面定义了“映射路径.do”
//所以,URL路径为t9.do
@RequestMapping("t9")
public String test9(Student stu) {//pojo自动传递参数到页面
//测试路径:http://localhost:8080/testSpringMVC0/t9.do?name=zhangsan&age=10
//返回值类型是String,因为在SpringMVC中配置了前缀和后缀,
//所以,默认跳转到 “前缀+映射路径+后缀”页面,即/WEB-INF/returnString2.jsp页面
/*
* 注意:这里pojo是Student,Model会自动在addAttribute方法中创建student的对象,并携带student数据
* 即,即使什么也不写,只要使用了pojo(这里pojo是Student),就会自动创建一个m.addAttribute("student",stu);
*
* pojo会自动调用addAttribute(name,value)方法,创建一个和类名相同首字母小写的name,value是pojo对象
*/
return "returnString";//默认转发
}
@RequestMapping("t10")
public ModelAndView test10(Student stu) {//pojo自动传递参数到页面
//测试路径:http://localhost:8080/testSpringMVC0/t9.do?name=zhangsan&age=10
//返回值类型是String,因为在SpringMVC中配置了前缀和后缀,
//所以,默认跳转到 “前缀+映射路径+后缀”页面,即/WEB-INF/returnString2.jsp页面
/*
* 注意:这里pojo是Student,ModelAndView会自动在addObject()方法创建student的对象,并携带student数据
* 即,即使什么也不写,只要使用了pojo(这里pojo是Student),就会自动创建一个mv.addObject("student",stu);
*/
// ModelAndView mv = new ModelAndView();//创建ModelAndView集合对象
// mv.setViewName("returnModelAndView");//指定要转发的View的名称,这里是“前缀+指定name+后缀”
//简化上面两步的写法
ModelAndView mv =new ModelAndView("returnModelAndView");//创建ModelAndView对象,并指定要跳转到的View路径
return mv;//默认转发
}
}
returnString.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%-- 是否忽略EL表达式 如果值为ture 那么 像 ${..}这样的直接会原样输出,不会进行EL表达式运算 --%>
<%@ page isELIgnored="false" %>
<!-- 下面报错,说明缺少jstl包,需要在pom.xml里面导入包的坐标-->
<!-- prefix="c"定义的是前缀的名字,通常用c,但也可以使用别的-->
<%-- <c:forEach ...> --%>
<%-- prefix="x" <x:forEach ...>--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>欢迎进入t9页面</h2>
${student.age}
${student.getName()}
</body>
</html>
关键注释
在t9路径下,返回String,自动调用Model对象
- 注意:这里pojo是Student,Model会自动在addAttribute方法中创建student的对象,并携带student数据
- 即,即使什么也不写,只要使用了pojo(这里pojo是Student),
就会自动创建一个m.addAttribute(“student”,stu); - m.addAttribute(“pojo类名首字母小写”,pojo对象);
pojo会自动调用addAttribute(name,value)方法,创建一个和类名相同首字母小写的name,value是pojo对象
补充
- 这个原理是在代码调用过程中发现的,如果有大神知道原理,敬请告知
- 下面是关键部分截图
版权声明:本文为wgx_0504原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。