1.spring MVC的核心:DispatcherServlet,通过前端Servlet接收请求,将工作委托给其他组建。
在web.xml中配置DispacherServlet
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> </web-app>
WebApplicationContext作为ApplicationContext的子类,web容器作为业务层容器的子容器,web层可以访问到业务层的bean,而业务层无法访问到web层的bean.
servlet的<init-param></init-param>指定参数:
namespace:默认WEB-INF/<servlet-name>-servlet.xml
contextConfigLocation、publishContext、publishEvents
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd "> <context:component-scan base-package="com.sosop.controller"/> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:viewClass="org.springframework.web.servlet.view.JstlView" p:prefix="/WEB-INF/jsp/" p:suffix=".jsp"/> </beans>
2.控制器的注解
@Controller:类定义上标注
@RequestMapping:类定义及方法定义上标注,通过映射路径访问。(value,method,params,header)
@PathVariable:参数定义,路径占位符。
方法签名:
@RequestParam:value required defaultValue
@CookieValue
@RequestHeader
将Servlet API作为参数
HttpServletRequest HttpServletResponse HttpSession
WebUtils.findParameterValue(request, key)
将IO作为参数 OutputStream InputStream
3.HttpMessageConverter<T>:将请求信息转换成对象
StringHttpMessageConverter
FormHttpMessageConverter
XmlAwareFormHttpMessageConverter
ResourceHttpMessageConverter
BufferedImageHttpMessageConverter
ByteArrayHttpMessageConverter
SourceHttpMessageConverter
MappingJacksonHttpMessageConverter
AnnotationMethodHandlerAdapter默认安装了
StringHttpMessageConverter
XmlAwareFormHttpMessageConverter
BufferedImageHttpMessageConverter
ByteArrayHttpMessageConverter
@RequestBody和@ResponseBody
HttpEntity<T>和ResponseEntity<T>
4.ModelAndView
addObject(String, Object)
addAllObject(Map<String,?>)
@ModelAttribute如参对象添加到模型中
@ModelMap隐含模型对象
@SessionAttributes