MVC:
Model:负责业务逻辑。包括业务数据和业务处理逻辑。例如:实体类,DAO,Service.
View:负责显示界面,展示显示数据。例如:JSP,HTML
Controller:Model和View之间的桥梁。用于控制请求的分发。
SpringMVC提供了相关的实现组件:
1、DispatcherServlet 请求入口,前端控制器,在web.xml中配置。
<servlet>
<servlet-name>springmvc</servlet>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:application.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<pre name="code" class="java"> <servlet-name>springmvc</servlet>
<url-pattern>/*</url-pattern></servlet-mapping
2、HandlerMapping 控制器,请求派发
在Controller类和方法上使用@RequestMapping注解。注意的是开启@RequestMapping注解,需要在Spring的XML配置文件中定义<mvc:annotation-driven/>
3、Controller 控制器,请求处理流程 (@Controller方法定义为public String execute()throws Exception)
4、ModelAndView 模型,封装业务处理结果和视图
ModelAndView(String viewName),ModelAndView(String viewName,Map model)其中model存在request的attribute中。
5、ViewResolver 视图,视图显示处理器
Spring MVC Web请求提交数据到控制器有以下3中方法:
1、使用HttpServletRequest获取
2、使用RequestParam注解
3、使用自动机制封装成Bean对象
向页面传值:
1、使用HttpServletRequest和Session
2、使用ModelAndView对象 return new ModelAndView("Test",Map)
3、使用ModelMap参数对象 方法中(ModelMap model){ model.addAttribute("user",user)}
4、使用@ModelAttribute注解 例如:public String login(@ModelAttribute("user")User user)
Spring MVC默认使用转发的方式定位视图,如果使用重定向可以使用:RedirectView,或者使用redirect:前缀
例如:RedirectView view = new RedirectView("login.form"); return new ModelAndView(view)。
return "redirect:login.form";
Spring提供的表单提交方式为POST的乱码解决之道:
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value> UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
异常处理:@ExceptionHandler
拦截器:Spirng的HandlerMapping处理器支持拦截器的应用。
自定义拦截器:
1、实现HandlerInterceptor接口,重写preHandle(),postHnadle(),afterCompletion()
拦截器的配置:
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path=""/>
<mvc:exclude-mapping path="">
<bean class=""/>
</mvc:interceptor>
</mvc:interceptors>