MVC流程图:控制器
什么是SpringMVC:
SpringMVC核心组件:
1.DispatcherServlet:前置控制器——整个流程控制的核心,用来控制其他组件的执行,进行统一的调度。降低了各个组件的耦合性,相当于总指挥的一个位置。
2.Handler:处理器,完成具体业务逻辑。DispatcherServlet将请求分发到不同的Handler之中
3.HandlerMapping:将请求映射到Handler,根据不同的请求找到不同的Handler。
4.HandlerInterceptor:处理器拦截器。这是一个接口,如果需要做一些了拦截处理,可以实现这个接口来完成处理。
5.HandlerExecutionChain:处理器执行链。
6.HandlerAdapter:处理器适配器——Handler执行方法之前需要做一系列的操作,包括表单数据的验证,表单数据的转换以及表单数据封装到Javabean当中,这些操作其实都是通过HandlerAdapter来执行完成的。DispatcherServlet通过不同的HandlerAdapter来执行不同的Handler。
7.ModelAndView:装载模型数据和视图信息——视图信息:指的是逻辑视图,将Handler的处理结果返回给DispatcherServlet。
8ViewResolver:视图解析器——将逻辑视图解析为物理视图,将结果渲染给客户端。
SpringMVC实现流程:
SpringMVC实现流程
1.客户端请求被DispatcherServlet接收。
2.DispatcherServlet将请求映射到Handler。
3.生成Handler以及HandlerInterceptor.
4.返回HandlerExecutionChain(Handler+HandlerInterceptor)
5.DispatcherServlet通过HandlerAdapter执行Handler。
6.返回一个ModelAndView
7.DispatcherServlet通过ViewResolver进行解析
8.返回填充了模型数据的View,响应给客户端。
基于XML配置的使用:
案例:
MyHandler.java
package com.imooc.handler;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Created by 003 on 2018/7/11.
*/
public class MyHandler implements Controller {
public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
//装载模型数据和逻辑视图
ModelAndView modelAndView=new ModelAndView();
//添加模型数据
modelAndView.addObject("name","Tom");
//添加逻辑视图
modelAndView.setViewName("show");
return modelAndView;
}
}
springmvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!--<!–配置HandlerMapping,将url请求映射到Handler–>-->
<bean id="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<!--配置mapping-->
<property name="mappings">
<props>
<!--配置test请求对应的handler-->
<prop key="/test">testHandler</prop>
</props>
</property>
</bean>
<!--配置Handler-->
<bean id="testHandler" class="com.imooc.handler.MyHandler"></bean>
<!--配置视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--配置前缀-->
<property name="prefix" value="/"></property>
<!--配置后缀-->
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
web.xml
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>SpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet </servlet-class>
<!--配置springmvc.xml的路径-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
show.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false" %>
<html>
<head>
<title>Title</title>
</head>
<body>
${name}
</body>
</html>
访问/test即可跳入MyHandler 再跳到jsp显示 ${name}
基于注解的使用:
案例: 三种实现方式
AnnotationHandler.java
package com.imooc.handler;
import com.imooc.entity.Goods;
import com.sun.org.apache.xpath.internal.SourceTree;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import java.util.Map;
/**
* Created by 003 on 2018/7/11.
*/
@Controller
public class AnnotationHandler {
/**
* 业务方法:ModelAndView完成数据的传递,视图的解析
*/
@RequestMapping("/modelAndViewTest")
public ModelAndView modelAndViewTest(){
//创建ModelAndView对象
ModelAndView modelAndView=new ModelAndView();
//填充模型数据
modelAndView.addObject("name","Tom");
//设置逻辑视图
modelAndView.setViewName("show");
return modelAndView;
}
/**
* 业务方法:Map传值,String进行视图解析
*/
@RequestMapping("/MapTest")
public String MapTest(Map<String,String> map){
//填充模型数据
map.put("name","Cat");
//设置逻辑视图
return "show";
}
/**
* 添加商品并展示
*/
@RequestMapping("/addGoods")
public ModelAndView addGoods(Goods goods){
System.out.println(goods.getName()+"---"+goods.getPrice());
ModelAndView modelAndView=new ModelAndView();
modelAndView.addObject("goods",goods);
modelAndView.setViewName("show");
return modelAndView;
}
}
springmvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!--将AnnotationHandler自动扫描到IOC容器中-->
<context:component-scan base-package="com.imooc.handler"/>
<!--配置视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--配置前缀-->
<property name="prefix" value="/"></property>
<!--配置后缀-->
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
add.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>add</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
<style type="text/css">
body{
overflow-x:hidden;
}
</style>
</head>
<body>
<form class="form-horizontal" role="form" action="addGoods" method="post">
<div class="form-group">
<label class="col-sm-1 control-label">名称</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="name" placeholder="请输入商品名称">
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">价格</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="price" placeholder="请输入商品价格">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-1 col-sm-3">
<button type="submit" class="btn btn-default">提交</button>
</div>
</div>
</form>
</body>
</html>
show.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%-- ${name}--%>
商品名称:${requestScope.goods.name}<br/>
商品价格:${requestScope.goods.price}
</body>
</html>
SpringMVC数据绑定原理:
原理图:
常用的数据绑定类型:
@ResponseBody:可以将业务方法的返回值直接返回给客户端,不需要跳转JSP页面了。
DataBindController.java
package com.imooc.controller;
import com.imooc.dao.CourseDAO;
import com.imooc.entity.Course;
import com.imooc.entity.CourseList;
import com.imooc.entity.CourseMap;
import com.imooc.entity.CourseSet;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
/**
* Created by Administrator.
*/
@Controller
public class DataBindController {
@Autowired
private CourseDAO courseDAO;
@RequestMapping(value = "/baseType")
@ResponseBody // @RequestParam可以将http请求中的参数绑定到名为id的参数中。
public String baseType(@RequestParam(value = "id") int id){
return "id:"+id;
}
@RequestMapping(value = "/packageType")
@ResponseBody // @RequestParam可以将http请求中的参数绑定到名为id的参数中。
public String packageType(@RequestParam(value = "id") Integer id){
return "id:"+id;
}
@RequestMapping(value = "/arrayType")
@ResponseBody
public String arrayType(String[] name){
StringBuffer sbf = new StringBuffer();
for (String item:name){
sbf.append(item).append(" ");
}
return sbf.toString();
}
//前端在from表单里将输入框的name的值和实体类的属性名对应,框架就会将信息自动封装到实体类里。
@RequestMapping(value = "/pojoType")
public ModelAndView pojoType(Course course){
courseDAO.add(course);
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("index");
modelAndView.addObject("courses",courseDAO.getAll());
return modelAndView;
}
@RequestMapping(value = "/listType")
public ModelAndView listType(CourseList courseList){//包装类要创建一个实体类才行 CourseList
for(Course course:courseList.getCourses()){
courseDAO.add(course);
}
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("index");
modelAndView.addObject("courses",courseDAO.getAll());
return modelAndView;
}
@RequestMapping(value = "/mapType")
public ModelAndView mapType(CourseMap courseMap){
for(String key:courseMap.getCourses().keySet()){
Course course = courseMap.getCourses().get(key);
courseDAO.add(course);
}
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("index");
modelAndView.addObject("courses",courseDAO.getAll());
return modelAndView;
}
@RequestMapping(value = "/setType")
public ModelAndView setType(CourseSet courseSet){
for (Course course:courseSet.getCourses()){
courseDAO.add(course);
}
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("index");
modelAndView.addObject("courses",courseDAO.getAll());
return modelAndView;
}
@RequestMapping(value = "/jsonType")
@ResponseBody
public Course jsonType(@RequestBody Course course){//@RequestBody可以将json格式的数据绑定到这个形参当中
course.setPrice(course.getPrice()+100);
return course;
}
}
springmvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">
<context:component-scan base-package="com.imooc"></context:component-scan>
<!--json格式数据消息转换器-->
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>
</mvc:message-converters>
</mvc:annotation-driven>
<!--配置视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--配置前缀-->
<property name="prefix" value="/"></property>
<!--配置后缀-->
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
CourseList.java
package com.imooc.entity;
import java.util.List;
/**
* Created by Administrator.
*/
public class CourseList {
private List<Course> courses;
public List<Course> getCourses() {
return courses;
}
public void setCourses(List<Course> courses) {
this.courses = courses;
}
}
CourseSet.java
set集合实体类 数据绑定比较特殊
package com.imooc.entity;
import java.util.HashSet;
import java.util.Set;
/**
* Created by Administrator.
*/
public class CourseSet {
private Set<Course> courses = new HashSet<Course>();
public void setCourses(Set<Course> courses) {
this.courses = courses;
}
public Set<Course> getCourses() {
return courses;
}
public CourseSet(){
courses.add(new Course());
courses.add(new Course());
}
}
add.jsp
<%--
Created by IntelliJ IDEA.
User: Administrator.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>add</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
<style type="text/css">
body{
overflow-x:hidden;
}
#main{
width:1200px;
height:600px;
margin-left:500px;
}
</style>
</head>
<body>
<div id="main">
<!-- 标题 -->
<div class="row">
<div class="col-md-12">
<h1>imooc-添加课程</h1>
</div>
</div>
<form class="form-horizontal" role="form" action="pojoType" method="post">
<div class="form-group">
<label class="col-sm-1 control-label">课程编号</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="id" placeholder="请输入课程编号">
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">课程名称</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="name" placeholder="请输入课程名称">
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">课程价格</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="price" placeholder="请输入课程价格">
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">讲师编号</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="author.id" placeholder="请输入讲师编号">
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">讲师姓名</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="author.name" placeholder="请输入讲师姓名">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-1 col-sm-3">
<button type="submit" class="btn btn-default">提交</button>
</div>
</div>
</form>
</div>
</body>
</html>
addList.jsp
<%--
Created by IntelliJ IDEA.
User: Administrator.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>add</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
<style type="text/css">
body{
overflow-x:hidden;
}
#main{
width:1200px;
height:600px;
margin-left:500px;
}
</style>
</head>
<body>
<div id="main">
<!-- 标题 -->
<div class="row">
<div class="col-md-12">
<h1>imooc-添加课程</h1>
</div>
</div>
<form class="form-horizontal" role="form" action="listType" method="post">
<div class="form-group">
<label class="col-sm-1 control-label">课程1编号</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="courses[0].id" placeholder="请输入课程编号">
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">课程1名称</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="courses[0].name" placeholder="请输入课程名称">
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">课程1价格</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="courses[0].price" placeholder="请输入课程价格">
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">讲师编号</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="courses[0].author.id" placeholder="请输入讲师编号">
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">讲师姓名</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="courses[0].author.name" placeholder="请输入讲师姓名">
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">课程2编号</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="courses[1].id" placeholder="请输入课程编号">
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">课程2名称</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="courses[1].name" placeholder="请输入课程名称">
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">课程2价格</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="courses[1].price" placeholder="请输入课程价格">
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">讲师编号</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="courses[1].author.id" placeholder="请输入讲师编号">
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">讲师姓名</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="courses[1].author.name" placeholder="请输入讲师姓名">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-1 col-sm-3">
<button type="submit" class="btn btn-default">提交</button>
</div>
</div>
</form>
</div>
</body>
</html>
addMap.jsp
<%--
Created by IntelliJ IDEA.
User: Administrator.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>add</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
<style type="text/css">
body{
overflow-x:hidden;
}
#main{
width:1200px;
height:600px;
margin-left:500px;
}
</style>
</head>
<body>
<div id="main">
<!-- 标题 -->
<div class="row">
<div class="col-md-12">
<h1>imooc-添加课程</h1>
</div>
</div>
<form class="form-horizontal" role="form" action="mapType" method="post">
<div class="form-group">
<label class="col-sm-1 control-label">课程1编号</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="courses['one'].id" placeholder="请输入课程编号">
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">课程1名称</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="courses['one'].name" placeholder="请输入课程名称">
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">课程1价格</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="courses['one'].price" placeholder="请输入课程价格">
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">讲师编号</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="courses['one'].author.id" placeholder="请输入讲师编号">
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">讲师姓名</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="courses['one'].author.name" placeholder="请输入讲师姓名">
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">课程2编号</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="courses['two'].id" placeholder="请输入课程编号">
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">课程2名称</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="courses['two'].name" placeholder="请输入课程名称">
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">课程2价格</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="courses['two'].price" placeholder="请输入课程价格">
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">讲师编号</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="courses['two'].author.id" placeholder="请输入讲师编号">
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">讲师姓名</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="courses['two'].author.name" placeholder="请输入讲师姓名">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-1 col-sm-3">
<button type="submit" class="btn btn-default">提交</button>
</div>
</div>
</form>
</div>
</body>
</html>
addSet.jsp
<%--
Created by IntelliJ IDEA.
User: Administrator.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>add</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
<style type="text/css">
body{
overflow-x:hidden;
}
#main{
width:1200px;
height:600px;
margin-left:500px;
}
</style>
</head>
<body>
<div id="main">
<!-- 标题 -->
<div class="row">
<div class="col-md-12">
<h1>imooc-添加课程</h1>
</div>
</div>
<form class="form-horizontal" role="form" action="setType" method="post">
<div class="form-group">
<label class="col-sm-1 control-label">课程1编号</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="courses[0].id" placeholder="请输入课程编号">
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">课程1名称</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="courses[0].name" placeholder="请输入课程名称">
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">课程1价格</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="courses[0].price" placeholder="请输入课程价格">
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">讲师编号</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="courses[0].author.id" placeholder="请输入讲师编号">
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">讲师姓名</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="courses[0].author.name" placeholder="请输入讲师姓名">
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">课程2编号</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="courses[1].id" placeholder="请输入课程编号">
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">课程2名称</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="courses[1].name" placeholder="请输入课程名称">
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">课程2价格</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="courses[1].price" placeholder="请输入课程价格">
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">讲师编号</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="courses[1].author.id" placeholder="请输入讲师编号">
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">讲师姓名</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="courses[1].author.name" placeholder="请输入讲师姓名">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-1 col-sm-3">
<button type="submit" class="btn btn-default">提交</button>
</div>
</div>
</form>
</div>
</body>
</html>
index.jsp
<%--
Created by IntelliJ IDEA.
User: Administrator.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<title>课程列表</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container">
<!-- 标题 -->
<div class="row">
<div class="col-md-12">
<h1>imooc-课程管理</h1>
</div>
</div>
<!-- 显示表格数据 -->
<div class="row">
<div class="col-md-12">
<table class="table table-hover" id="emps_table">
<thead>
<tr>
<th>
<input type="checkbox" id="check_all"/>
</th>
<th>编号</th>
<th>课程名</th>
<th>价格</th>
<th>讲师</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<c:forEach items="${courses}" var="course">
<tr>
<td><input type='checkbox' class='check_item'/></td>
<td>${course.id}</td>
<td>${course.name}</td>
<td>${course.price}</td>
<td>${course.author.name}</td>
<td>
<button class="btn btn-primary btn-sm edit_btn">
<span class="glyphicon glyphicon-pencil">编辑</span>
</button>
<button class="btn btn-danger btn-sm delete_btn">
<span class="glyphicon glyphicon-trash">删除</span>
</button>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</div>
</div>
</body>
</html>
json.jsp
<%--
Created by IntelliJ IDEA.
User: Administrator.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
<script type="text/javascript">
$(function(){
var course = {
"id":"8",
"name":"SSM框架整合",
"price":"200"
};
$.ajax({
url:"jsonType",
data:JSON.stringify(course),
type:"post",
contentType:"application/json;charse=UTF-8",
dataType:"json",
success:function(data){
alert(data.name+"---"+data.price);
}
})
})
</script>
<body>
</body>
</html>
JSON格式数据传输
第一步:导包第二步:在springmvc.xml 配置JSON数据转换器
<!--json格式数据消息转换器-->
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>
</mvc:message-converters>
</mvc:annotation-driven>