Spring MVC
简介
作用:用于开发Java Web程序,搭建MVC结构。
Spring Web MVC具体实现
Spring Web MVC的底层实现过程
Spring Web MVC使用
搭建Spring Web MVC框架环境
- 引入spring ioc、webmvc核心包
- 引入applicationContext.xml
根据需求设计一个流程
需求:发出一个hello.do,响应一个hello.jsp界面
流程:hello.do–DispatcherServlet–>HandlerMapping–>HelloController–>ViewResolver–>/hello.jsp
编写HelloController和hello.jsp
- HelloController要实现Controller接口,实现约定handleRequest方法
HelloController返回ModelAndView,包含视图名和视图需要的数据
public class HelloController implements Controller{ public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("调用M模型组件,DAO/Service"); // Map<String, Object> data = new HashMap<String, Object>(); // data.put("msg", "Spring Web MVC示例"); // data.put(key, value) // ModelAndView av = new ModelAndView("hello",data); ModelAndView av = new ModelAndView(); av.setViewName("hello"); av.getModel().put("msg","Spring Web MVC示例"); return av; } }
配置流程
配置DispatcherServlet
<servlet> <servlet-name>springmvc</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <!-- 指定spring容器配置文件,contextConfigLocation约定名 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
配置HandlerMapping
<bean id="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <!-- <prop key="请求">Controller对象id</prop> --> <prop key="hello.do">helloController</prop> </props> </property> </bean>
配置HelloController
<bean id="helloController" class="com.xdl.web.controller.HelloController"> </bean>
配置ViewResolver
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 指定视图文件位置 --> <property name="prefix" value="/WEB-INF/"></property> <!-- 指定视图文件类型 --> <property name="suffix" value=".jsp"></property> </bean>
Spring Web MVC扩展案例(列表显示)
需求:发出一个list.do请求,显示一个部门列表list.jsp
设计
list.do–>DispatcherServlet–>HandlerMapping–>ListController–>ViewResolver–>list.jsp
编写ListController和list.jsp
配置MVC流程
- 配置HanlderMapping组件的mappings属性
- 配置ListController
Spring Web MVC注解配置
XML配置
注解配置
与XML配置不同点:1.采用RequestMappingHandlerMapping、2.取消Controller接口约定
RequestMapping配置如下
<!-- 配置HandlerMapping --> <mvc:annotation-driven />
Controller组件编写如下
@Controller public class HelloController{ /** * 处理请求方法,自动调用 * ModelAndView:封装模型数据和视图名信息 */ @RequestMapping("/hello.do") public ModelAndView execute() throws Exception { System.out.println("调用M模型组件,DAO/Service"); ModelAndView av = new ModelAndView(); av.setViewName("hello"); av.getModel().put("msg","Spring Web MVC示例"); return av; } }
Controller配置如下
<!-- 配置Controller --> <context:component-scan base-package="com.xdl"/>
其他DispatcherServlet和ViewResolver与XML配置相同