1 URL模版映射
url模版映射可以restfull軟件架構。
配置接收url模版映射
{}:匹配接受頁面Url路徑參數
@Pathariable:{}裏面參數注入後面參數裏面
@RequestMapping("/edit1/{id}")
public String edit1(@PathVariable int id, Model model) {
System.out.println("修改的id:" + id);
// 通過 ID 查詢數據庫,返回一個 User 對象,把 user 對象存在model
User user = new User("曹操","男",new Date());
user.setId(1);
model.addAttribute("user",user);
return "user/useredit";
}
1.1 在web.xml中配置rest路徑
2 轉發和重定
2.1 轉發到同一個控制器的方法
2.2 轉發到不同一個控制器的方法
2.3 重定向,只需要把forward改成redirect
3 RequestParam
@Controller
@RequestMapping("/stu")
public class StudentController {
/**
* RequestParam參數描述
* value:參數名稱
* defaultValue:默認值
* required:參數是否必須有值,如果爲true,參數又爲空,會報錯
* */
@RequestMapping("test1")
public String test1(@RequestParam(value = "uid",required = true) Integer uid){
return "redirect:/user/list.do";
}
}
4 ResponseBody和RequestBody
@ResponseBody
把後臺pojo轉換json對象,返回到頁面。
@RequestBody
接受前臺json數據,把json數據自動封裝javaBean
- 導入 jar
- 配置文件
添加個json轉換器
<!--3.配置適配器-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<!--json轉換器-->
<property name="messageConverters">
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
</property>
</bean>
4.1 請求和響應都是 json
- 模型
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>添加用戶</title>
<script src="${pageContext.request.contextPath}/js/jquery-1.8.3.js"></script>
<script>
function register() {
// 表單提交
var url = '${pageContext.request.contextPath}/stu/save.do';
var name = $('#name').val();
var gender = $('#gender').val();
var jsonObj = {name: name, gender: gender};
var paramters = JSON.stringify(jsonObj);
console.log('jsonObj:' + jsonObj);
console.log('jsonStr:' + paramters);
$.ajax({
type: 'post',
url: url,
contentType: 'application/json;charset=utf-8',
data: paramters,
success: function (respData) {
console.log('resp: ' + respData);
}
})
}
</script>
</head>
<body>
<form action="${pageContext.request.contextPath}/stu/save.do" method="post">
用戶名:<input id="name" type="text" name="name"><br>
性別:<input id="gender" type="text" name="gender"><br>
<input type="button" value="提交 json 數據" onclick="register()">
<input type="submit">
</form>
</body>
</html>
4.1.1 普通版
- StudentController.java
@Controller
@RequestMapping("/stu")
public class StudentController {
@RequestMapping("/toReg")
public String toReg() {
return "stu/register";
}
/*
* @RequestBody : 把 json 數據轉成模型對象
* @ResponseBody : 返回 json 數據
* */
@RequestMapping("/save")
public String save(Student stu) {
System.out.println("stu:" + stu);
return "stu/list";
}
}
- 普通提交
4.1.2 json版
- 控制器
@Controller
@RequestMapping("/stu")
public class StudentController {
@RequestMapping("/toReg")
public String toReg() {
return "stu/register";
}
/*
* @RequestBody : 把 json 數據轉成模型對象
* @ResponseBody : 返回 json 數據
* */
@RequestMapping("/save")
public @ResponseBody Student save(@RequestBody Student stu) {
System.out.println("stu:" + stu);
return stu;
}
}
5 Springmvc多視圖
多視圖是一個方法可以返回json/xml等格式的數據
-
導入xml格式支持的jar包
-
配置支持多視圖
<!--配置多視圖-->
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<!-- 配置支持媒體類型 -->
<property name="contentNegotiationManager">
<bean
class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
<property name="mediaTypes">
<map>
<entry key="json" value="application/json"></entry>
<entry key="xml" value="application/xml"></entry>
</map>
</property>
</bean>
</property>
<!-- 指定默認視圖 -->
<property name="defaultViews">
<!-- 支持多個視圖 -->
<list>
<!-- 對josn格式視圖支持 -->
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"/>
<!-- xml格式視圖支持 -->
<bean class="org.springframework.web.servlet.view.xml.MarshallingView">
<constructor-arg>
<bean class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="classesToBeBound">
<list>
<value>com.tzb.backoffice.model.Student</value>
</list>
</property>
</bean>
</constructor-arg>
</bean>
</list>
</property>
</bean>
- 控制器提供接口
- 測試