1.Springmvc是什麼?
Springmvc是一個web層mvc框架,類似struts2.
2.Springmvc入門程序
2.1創建一個maven工程
2.2配置web.xml
2.3配置springmvc.xml
2.4自定義Controller
2.5定義視圖頁面
2.6根據代碼分析springmvc執行流程
2.7適配器源碼
3.中文亂碼解決
-3.1Get請求亂碼
- 3.2Post亂碼
Spring編碼過濾器:在web.xml配置
<filter>
<filter-name>characterEncoding</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>characterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
4.註解開發
- 4.1創建一個web工程,並導入jar,配置web.xml
<!-- Spring編碼過濾器 -->
<filter>
<filter-name>characterEncoding</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>characterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 配置前端控制器DispatcherServlet -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--
默認加載方式:默認加載文件必須規範
文件命名:servlet-name-servlet.xml======springmvc-servlet.xml
路徑規範:必須在WEB-INF目錄下面
-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/springmvc.xml</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
- 4.2配置springmvc.xml
<context:component-scan base-package="com.springmvc.assess" />
<mvc:annotation-driven />
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
- 4.3測試Controller,在瀏覽器中輸入http://localhost:8080/springmvcDemo/toLogin.do
@Controller
public class LoginController {
@RequestMapping("/toLogin")
public String toLogin(){
return "login";
}
}
5.封裝參數
基本類型,int,String等等基本類型、Pojo類型、包裝類型。Springmvc默認支持類型:HttpSession,HttpRequstServlet,Model等等。Springmvc參數封裝:基於方法進行封裝。
- 5.1封裝int類型參數
頁面傳遞參數都是字符串。
接受參數方法
- 5.2接受字符串類型
接受參數方法
- 5.3接受數組
checkbox複選框,Value必須有值。
接受參數方法
5.4接受Pojo
注意:input框中的name的名稱需要和pojo中的屬性保持一致
5.5接受包裝類型參數
public class userCustom{
private user user;
private List<User> userList;
private Map<K,V> maps;
private items items;
......
省略getXxx()和setXxx()
}
接受參數方法
- 5.6接受集合類型參數
接受list集合
接受參數方法
- 5.7接受map
接受參數方法
6.springmvc和struts2區別
實現機制:
Struts2是基於過濾器實現的;Springmvc基於servlet實現,Servlet比過濾器快。
運行速度:
Struts2是多列,請求來了以後,struts2創建多少個對象:ActionContext,valuestack,UserAction,ActionSuport,ModelDriven,UserAction裏面屬性:User對象,userlist集合等;Springmvc是單列。
參數封裝來分析:
Struts基於屬性進行封裝;Springmvc基於方法封裝。
7.頁面回顯
//查詢所有
@RequestMapping("list")
public String list(Model model){
//model 相當於application域對象
List<User> userList = new ArrayList<User>();
User user1 = new User();
user1.setId(1);
user1.setSex("男");
user1.setUsername("張山峯");
user1.setAddress("武當山");
user1.setBirthday(new Date());
User user2 = new User();
user2.setId(2);
user2.setSex("男");
user2.setUsername("張無忌");
user2.setAddress("武當山");
user2.setBirthday(new Date());
userList.add(user1);
userList.add(user2);
model.addAttribute("userList", userList);
return "list";
}
頁面獲取:
8.URL模版映射
- 8.1url模版映射過程
- Restfull風格設計
Web.xml攔截方式:在rest目錄下所有請求都被攔截,servlet可以攔截目錄。
{}:匹配接受頁面Url路徑參數
@Pathariable:{}裏面參數注入後面參數裏面
9.轉發和重定向
9.1 轉發forward
本類進行轉發:本類方法與方法之間進行forward。
方式一:return ”forward:list.do“;
方式二:return ”forward:/user/list.do“;
注意:user根路徑前面必須有/.跨類進行轉發,轉發方式:return ”forward:/items/list.do“;
9.2重定向redirect
重定向方式:return ”redirect:list.do“;