<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/"/>