Spring MVC (一)

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

猜你喜欢

转载自sosop.iteye.com/blog/2044344