<init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-servlet-config.xml</param-value> </init-param>
类型 | 说明 | 描述 |
ServletRequest | 请求 | |
HttpServletRequest | HTTP请求 | |
ServletResponse | 响应 | |
HttpServletResponse | HTTP响应 | |
InputStream | 请求正文(字节流) | 等价于request.getInputStream() |
OutputStream | 响应正文(字节流) | 等价于response.getOutputStream() |
Reader | 请求正文(字符流) | 等价于request.getReader() |
Writer | 响应正文(字符流) | 等价于response.getWriter() |
WebRequest | 统一请求访问接口 | ①webRequest.getParameter:访问请求参数区的数据,能够经过getHeader()访问请求头数据; ② webRequest.setAttribute/getAttribute:到指定的做用范围内取/放属性数据,Servlet定义的三个做用范围分别使用以下常量表明:css SCOPE_REQUEST :表明请求做用范围;html SCOPE_SESSION :表明会话做用范围;web SCOPE_GLOBAL_SESSION :表明全局会话做用范围,即ServletContext上下文做用范围。spring
|
NativeWebRequest | 额外提供访问本地servlet API | ③nativeWebRequest.getNativeRequest/nativeWebRequest.getNativeResponse:获得本地的Servlet API。 |
HttpSession | 会话 | 此处的session永远不为null。
注意:session访问不是线程安全的,若是须要线程安全,须要设置AnnotationMethodHandlerAdapter或RequestMappingHandlerAdapter的synchronizeOnSession属性为true,便可线程安全的访问session。json |
命令对象/表单对象 | 一个自定义类 | Spring Web MVC可以自动将请求参数绑定到功能处理方法的命令/表单对象上。 |
Model | 同一个对象 | 渲染视图须要的模型数据 注意和ModelAndView中model的关系 |
Map | ||
ModelMap | ||
RedirectAttributes | return "redict:xxx/xxx" 相关类 | addFlashAttribute() |
SessionStatus | .setComplete() |
2. spring-servlet.xml文件中须要配置转换的bean安全
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <util:list id="beanList"> <ref bean="mappingJacksonHttpMessageConverter" /> </util:list> </property> </bean> <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> </bean>
3. 最后,别忘了还要声明util的schema文件和地址,在spring-servlet.xml文件的头部声明部分加入以下三行便可session
xmlns:util="http://www.springframework.org/schema/util"
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.0.xsd
@RequestMapping(value="/model1") //② public String test1(@ModelAttribute("user") UserModel user, Model model) { System.out.println(model.containsAttribute("cityList")); System.out.println(user); return "success"; }
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"> <property name="interceptors"> <list> <ref bean="handlerInterceptor1"/> <ref bean="handlerInterceptor2"/> </list> </property> </bean> <bean id="handlerInterceptor1" class="ssm.intercapter.HandlerInterceptor1"/> <bean id="handlerInterceptor2" class="ssm.intercapter.HandlerInterceptor2"/>
<!-- 配置拦截器 --> <mvc:interceptors> <!-- 多个拦截器,按顺序执行 --> <mvc:interceptor> <mvc:mapping path="/**"/> <!-- 表示拦截全部的url包括子url路径 --> <bean class="ssm.interceptor.HandlerInterceptor1"/> </mvc:interceptor> <mvc:interceptor> <mvc:mapping path="/**"/> <bean class="ssm.interceptor.HandlerInterceptor2"/> </mvc:interceptor> <mvc:interceptor> <mvc:mapping path="/**"/> <bean class="ssm.interceptor.HandlerInterceptor3"/> </mvc:interceptor> </mvc:interceptors>
若是配置拦截相似于*.do格式的拦截规则,则对静态资源的访问是没有问题的,可是若是配置拦截了全部的请求(如咱们上面配置的“/”),就会形成js文件、css文件、图片文件等静态资源没法访问。mvc
拦截器的主要做用是是用于权限管理,拦截不合理的URL,因此不对静态资源进行拦截app
方案:使用<mvc:resources/> (mapping:请求,location:映射地址,注意必须是webapp根目录下的路径。) 框架
springMVC配置文件<mvc:resources mapping="/css/**" location="/css/"/> <mvc:resources mapping="/images/**" location="/img/"/> <mvc:resources mapping="/js/**" location="/js/"/>