<servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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-4.3.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd"> <!-- 开启SpringMVC注解模式 简化配置: 1. 自动注册 DefaultAnnotationHandlerMapping,AnnotationMethodHandlerAdapter 2. 提供一系列默认支持:数据绑定、日期格式转换,xml&json支持 --> <mvc:annotation-driven> </mvc:annotation-driven> <!-- servlet-mapping映射路径:/ 静态资源默认servlet配置 1. 加入对静态资源的处理:js,css,gif 2. 容许使用“/”作总体映射 --> <mvc:default-servlet-handler> </mvc:default-servlet-handler> <!-- 配置JSP,显示ViewResolver --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"> </property> <property name="prefix" value="/WEB-INF/jsp"> </property> <property name="suffix" value=".jsp"> </property> </bean> <!-- 扫描web相关的bean --> <context:component-scan base-package="com.mbq.seckill.web"> </context:component-scan> </beans>
@RequestMapping:css
springmvc的form表单标签,支持自动回显java
请求转发与重定向web
使用@RequestParam 绑定请求参数值
使用@RequestHeader绑定请求报头的属性值
使用@CookieValue绑定请求中的Cookie值ajax
在web.xml中配置HiddenHttpMethodFilter过滤器,将普通的post请求转换为指定的put或delete请求(post请求中需有参数:_method=put)
1. 带{}占位符的URL
2. @PathVariablespring
ajax直接发送put/delete请求时,后台会获取不到请求中的参数,此为tomcat内部编码的问题,若是不是get/post请求,则直接返回。json
Controller乱码问题解决:在web.xml中配置一个过滤器spring-mvc
<filter> <filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
数据类型转换
数据格式化:日期类型:在属性上添加注解@DateTimeFormat(pattern="yyyy-MM-dd")tomcat
@NotNull private String ename; @RequestMapping(value="/save", method=RequestMethod.POST) @ResponseBody public Msg save(@Valid Employee emp, BindingResult result) { if(result.hasErrors()) { List<FieldError> fieldErrors = result.getFieldErrors(); Map<String, Object> map = new HashMap<>(); for(FieldError fieldError : fieldErrors) { //错误字段名,错误信息 map.put(fieldError.getField(), fieldError.getDefaultMessage()); } return new Msg().fail().add("errorField", map); } employeeService.save(emp); return new Msg().success(); }
ajax返回json:@ResponseBody,须要jackson的支持(将java对象转换为json对象),能够封装一个通用的Json对象类restful
配置视图解析控制器:<mvc:view controller ...>,直接转发页面,不通过Handlermvc
1.首先须要进行配置
<!-- 必定要写id,对应文件上传的拦截器 --> <bean id="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="utf-8"></property> <property name="maxUploadSize" value="2048000"></property> </bean>
2.使用MultipartFile接收上传的文件,transferTo()方法实现文件上传操做
继承HandlerInterceptorAdapter
实现HandlerInterceptor接口
在配置文件中进行配置
<mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <mvc:exclude-mapping path="/admin/**"/> <bean class="com.ma.shop.interceptor.AutoLoginInterceptor"></bean> </mvc:interceptor> </mvc:interceptors>
@RunWith(SpringRunner.class) @WebAppConfiguration @ContextConfiguration({ "classpath:spring-web.xml", "classpath:spring-service.xml", "classpath:spring-dao.xml", }) public class ControllerTest { @Autowired private WebApplicationContext context; //虚拟MVC请求,获取处理结果 private MockMvc mockMvc; @Before public void initMockMvc() { mockMvc = MockMvcBuilders.webAppContextSetup(context).build(); } @Test public void testPage() throws Exception{ //模拟请求添加参数并获取返回值 MvcResult result = mockMvc.perform(MockMvcRequestBuilders.get("/emp/list").param("pageNo", "1")).andReturn(); MockHttpServletRequest request = result.getRequest(); Employee emp = (Employee) request.getAttribute("emp"); } }