介绍
SpringMVC是一款Web MVC框架。它跟Struts框架类似,是目前主流的Web MVC框架之一。
配置
在web.xml中配置入口servlet:
<servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springConfig/dispatcher-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>入口参数 contextConfigLocation,表示的是配置文件的路径。
url-pattern表示的是所有的路径/,都可以跳转到servlet下面的DispatcherServlet,从这里也可以看出,springMVC也就是一个servlet服务器。
现在我们来编写Controller类(类似于Struts2中的Action)
@Controller @RequestMapping("/") public class IndexController { @RequestMapping public ModelAndView index() { ModelAndView view = new ModelAndView("index"); view.addObject("welcome", "hello"); return view; } }这里有两个注解: @Controller和@RequestMapping
@Controller注解就是表明这是一个Controller,且会被spring容器进行初始化。
在dispatcher-servlet.xml中的扫描包配置语句:
<context:component-scan base-package="org.format.demo.controller" />这条语句是扫描org.format.demo.controller下被@Controller(还有其他的如 @Component, @Service, @Repository)注解的那些类,并进行实例化。
@RequestMapping 顾名思义,就是请求映射。
我们看到@RequestMapping("/")中的"/"的意义就是contextPath后面的路径;也就是 http://host:port/contextPath 后面的路径。 (这里不一定都要以"/"开头,比如 "/employee", 我们可以写成 "employee" )
ModelAndView对象就是一个带模型的视图对象。我们看到IndexController返回了1个index名称的ModelAndView对象。
addObject对象就类似HttpServletRequest的setAttribute对象,也就是视图里面丢数据。 我们看到丢了一个key为welcome的对象。
最后的视图代码:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <h2>Welcome to user SpringMVC</h2> <h3>your welcome param: ${welcome}</h3> </body> </html>