1 註解案例
- DispatcherServlet-servlet.xml
<!--註解配置控制器-->
<!--1.配置掃描包-->
<context:component-scan base-package="com.tzb.backoffice.web.controller"></context:component-scan>
<!--2.配置註解處理映射-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>
<!--3.配置適配器-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>
<!--4. 配置資源視圖解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--前綴-->
<property name="prefix" value="/WEB-INF/views/"></property>
<!--後綴-->
<property name="suffix" value=".jsp"></property>
</bean>
- 控制器
package com.tzb.backoffice.web.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping("/list")
public String list() {
return "user/userlist";
}
}
2 RequestMapping
配置請求路徑映射路徑
@RequestMapping(“list”)
@RequestMapping(“/list.do”)
@RequestMapping(value=”/list.do”)
@RequestMapping(value = "/list3",method=RequestMethod.POST) 只能使用POST方法
@RequestMapping(value = "/list3",method=RequestMethod.Get) 只能使用GET方法
2.1 自定義根路徑
3 請求參數
3.1 封裝參數分析
- 參數類型有:基本類型,int,String等等基本類型, Pojo類
- Struts2參數:基於屬性封裝,在action會添加屬性,提供set方法。
- Springmvc參數封裝:基於方法進行封裝。
3.2 接收int,String,Date,數組類型
- 添加頁面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>註冊頁面</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/user/register.do" method="post">
用戶名:<input type="text" name="username"><br>
密碼:<input type="text" name="password"><br>
性別:<input type="text" name="gender"><br>
年齡:<input type="text" name="age"><br>
生日:<input type="text" name="birthday"><br>
愛好:<input type="checkbox" name="hobbyIds" value="1">足球
<input type="checkbox" name="hobbyIds" value="2">籃球
<input type="checkbox" name="hobbyIds" value="3">羽毛球<br>
<input type="submit">
</form>
</body>
</html>
3.2.1 第一種接收參數方式
@Controller
@RequestMapping("/user")
public class UserController {
// 也可以不加 /, 或者寫成 value = "list"
@RequestMapping("/list")
public String list() {
return "user/userlist";
}
@RequestMapping("toRegister")
public String toRegister() {
return "user/register";
}
/**
* 第一種接收表單參數的方式
* 默認日期格式: 月/日/年
* */
@RequestMapping("register")
public String register(String username,String password,
int age,String gender, Date birthday,
String[] hobbyIds){
System.out.println(username);
System.out.println(password);
System.out.println(age);
System.out.println(birthday);
System.out.println(ArrayUtils.toString(hobbyIds));
return "user/info";
}
}
3.2.2 接收pojo類型
- UserController.java
/*
* 第二種接收表單參數的方式
* */
@RequestMapping("/register2")
public String register2(User user){
System.out.println(user);
return "user/info";
}
3.2.3 接收包裝類型參數
- 模型
package com.tzb.backoffice.model;
public class UserExt {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String toString() {
return "UserExt{" +
"user=" + user +
'}';
}
}
3.2.4 接收集合類型
3.2.5 接收 Map 類型
4 Spring與Struts的區別
4.1 實現機制
Struts2是基於過濾器實現的。
Springmvc基於servlet實現。
4.2 運行速度
-
Servlet比過濾器快。
-
Struts2是多例
每一次請求,都會創建一個Action對象
請求來了以後,struts2創建多少個對象:ActionContext,valuestack,UAction,ActionSuport,ModelDriven -
Springmvc是單例。
同一個Controller請求,只會創建一個Controller
4.3 參數封裝
- Struts基於屬性進行封裝,Action有參數屬性。
- Springmvc基於方法封裝,參數是寫在Controller的方法
5 頁面回顯
- 導入 jstl jar
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>用戶列表</title>
</head>
<body>
用戶列表
<table border="1">
<tr>
<td>名字</td>
<td>性別</td>
<td>日期</td>
</tr>
<c:forEach items="${userList}" var="user">
<tr>
<td>${user.username}</td>
<td>${user.gender}</td>
<td>${user.birthday}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
5.1 修改數據