1.什么是springMVC
springmvc是spirng框架的一個模塊,是一個基於MVC框架的web框架
2.springmvc的流程
a.客戶端發送請求
b.前端控制器DispatcherServlet 接收請求,並調用處理映射器HandlerMapping(可以根據xml配置、注解進行查找)
c.處理映射器找到具體的處理器進行處理,生成處理器對象Handler以及處理攔截器HandlerInterceptor(如果有則生成)返回到前端控制器
d.DispatcherServlet 調用處理適配器HandlerAdapter
e.處理適配器通過調用具體的處理器,處理器執行后生成ModelAndView,返回給處理適配器ModelAndView對象
f.處理適配器向DispatcherServlet 返回ModelAndView (ModelAndView是springmvc框架的一個底層對象,包括 Model和view)
g.DispatcherServlet 將ModelAndView 傳遞給視圖解析器 ViewReslover
h.視圖解析器解析后返回具體的view(根據邏輯視圖名解析成真正的視圖(jsp))
i.DispatcherServlet 根據View進行渲染視圖(視圖渲染將模型數據(在ModelAndView對象中)填充到request域)。
j.前端控制器向用戶響應結果
3.如何解決POST請求中文亂碼問題,GET的又如何處理呢?
1、針對Post方式提交的請求如果出現亂碼
可以每次在request解析數據時設置編碼格式:request.setCharacterEncoding("utf-8");
也可以使用編碼過濾器來解決,最常用的方法是使用Spring提供的編碼過濾器:
在Web.xml中增加如下配置(要注意的是它的位置一定要是第一個執行的過濾器):
<filter>
<filter-name>charsetFilter</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>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
該過濾器要做的其實就是強制為所有請求和響應設置編碼格式:
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
2、針對Get方式的亂碼問題,
由於參數是通過URL傳遞的,所以上面通過request設置的編碼格式是不起作用的,
此時可以在每次發生請求之前對URL進行編碼:例如:Location.href="/encodeURI"("http://localhost/test/s?name=中文&sex=女");
當然也有更簡便的方法,那就是在服務器端配置URL編碼格式:
修改tomcat的配置文件server.xml:
<ConnectorURIEncoding="UTF-8"
port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
connectionTimeout="20000" disableUploadTimeout="true" />
只需增加 URIEncoding="UTF-8" 這一句,然后重啟tomcat即可。
4.SpringMVC與Struts2的主要區別?
3.Struts采用值棧存儲請求和響應的數據,通過OGNL存取數據,
是單例模式,所以在多線程訪問的時候有線程安全問題,不要用同步,會影響性能的,解決方案是在控制器里面不能寫字段
6.SpringMVC怎么樣設定重定向和轉發的
在返回值前面加"forward:"就可以讓結果轉發,譬如"forward:user.do?name=method4"
在返回值前面加"redirect:"就可以讓返回值重定向,譬如"redirect:http://www.baidu.com"
7.SpingMvc中的控制器的注解一般用那個,有沒有別的注解可以替代
一般用@Conntroller注解,表示是表現層,不能用用別的注解代替.
8.
springMVC常用注解標簽詳情