1,SpringMVC全貌
2,控制层(Controller)
在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用@RequestMapping 和@RequestParam 等一些注解用以定义URL 请求和Controller 方法之间的映射,这样的Controller 就能被外界访问到。
(1)简单的Controller代码
@Controller
@RequestMapping("/test")
public class HomeController {
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Model model) {
return "index";
}
}
@Controller 定义这个类是一个控制器类
@RequestMapping(“/test”) 映射 Request 请求,比如
http://localhost:8080/test/showInputPage
,就会映射到这个类上,之后根据
showInputPage
去匹配具体方法。
@RequestMapping(value = “/showInputPage”, method = RequestMethod.GET) 往往具体类方法上会这么写,和之前类上面定义的上下文结合,如本例,就会把
http://localhost:8080/test/showInputPage
映射的本方法上做request请求。这里特意定义了请求方法(method = RequestMethod.POST)为POST请求,也可以直接用@PostMapping注解直接表面映射Post请求。
return “index”会直接返回给SpringMVC框架,框架根据定义,去调用index.jsp
(2)控制层和展示层之间的数据传递
控制层获取前端传过来的数据,如下面例子,我们定义的入参String info,那么前端调用时,参数名和变量名相同状况下,SpringMVC和自动匹配,我们只需要直接使用就可以了,如下面代码变量名为info,那么我们在前端调用的时候,如下面URL,使用info=12344向后端传送数据,后端就可以直接在变量中回去前端传送的值,12344
http://localhost:8080/test/InputData?info=12344
那么前端如何获取后端返回数据呢?
方法有很多种,在SpringMVC框架下,向JSP传送数据,主要靠Model方式,如上面代码 model.addAttribute(“infoView”,info); 定义了名字为infoView的参数的内容为info字符串。之后model内容就会传送给JSP。
JSP如何使用model呢?
如下面代码,需要使用model内容的地方${infoView},用${}标记起来,JSP就会去找大括号种保住的参数名的对应值,放到页面中。
<HTML>
<HEAD>
<TITLE>hello world</TITLE>
<meta charset="utf-8">
</HEAD>
<BODY>
<P>Get value from server ${infoView}</P>
</BODY>
</HTML>