SpringMVC基础操作:第一个SpringMVC程序
1、在SpringMVC之中把每一个控制层的代码成为一个Action,这个Action不需要去继承任何一个类,利用注解就可以表示我们所需要的控制器定义。
定义一个com.gwolf.action.EmpAction程序类:
package com.gwolf.action;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/pages/emp/*")
public class EmpAction {
Logger logger = LoggerFactory.getLogger(this.getClass());
@RequestMapping("echo")
@ResponseBody
public String echo(String msg) {
return "ECHO " + msg;
}
}

2、通过这个时候的Action的定义可以充分的发现以下特点:
1、SpringMVC里面对于参数的接收直接在方法上定义即可;
2、里面所有使用的方法可以由永不自己来定义是否需要返回数据;
3、整体的路径配置以及多业务的配置都分厂的简化;
测试:http://localhost:8080/SpringMVC/pages/emp/echo.action?msg=hello

3、在SpringMVC中,控制层的处理逻辑如下图:召侧
4、为了更加符合于MVC的设计,我们认为这个时候应该把处理后的数据发送回jsp页面来显示,而有一个控制层跳转到jsp页面需要进行参数传递,往往使此蚊用request属性范围,而这个request属性范围可以直接通过ModelAndView来控制,加入说现在希望其跳转到"/pages/show.jsp"页面;
package com.gwolf.action;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
@RequestMapping("/pages/emp/*")
public class EmpAction {
Logger logger = LoggerFactory.getLogger(this.getClass());
@RequestMapping("echo")
public ModelAndView echo(String msg) {
ModelAndView md = new ModelAndView("/pages/show.jsp");
md.addObject("info","Echo:" + msg);
return md;
}
}

5、ModelAndView就相当于替代了之前的request.getRequestDispatcher()里面的一些方法。

6、定义show.jsp页面,显示request属性范围中的内容。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>争国珠Insert title here</title>
</head>
<body>
<h1>${info }</h1>
</body>
</html>

7、在浏览器中访问地址就可以看到页面的访问结果
