它始终是环绕 handler、 数据模型 model、 页面view进行开拓的。
运行流程图:
通过mvc配置文件,配置“中心处理器”dispatchservlet,当用户要求一个url,dispatchservlet通过handlerMapping(通过表明的形式)将url给对应的handleradapter,handleradapter的详细业务逻辑是controller即我们须要实现的部分,实现详细的业务逻辑之后,须要返回modelandview给dispatchservlet,dispatchservlet再返回详细的数据或者jsp给用户。
二.http要求地址映射
http要求 -> sringmvc handler mapping表明 -> handler处理
1.表明映射: @RequestMapping
支持标准urlant风格url (? 字符形式){xxx}占位符 restful 形式2.要求方法细节
要求参数绑定要求办法限定要求转发和重定向数据模型赋值返回joson数据举个列子:
@RequestMapping(value=\"大众/{seckillId}/detail\公众,method = RequestMethod.GET) public String detail(@PathVariable(\"大众seckillId\"大众) Long seckillId, Model model){ if(seckillId==null){ return \"大众redirect:/seckill/list\"大众; } Seckill seckill=seckillService.getById(seckillId); if(seckill==null){ return \"大众redirect:/seckill/list\公众; } model.addAttribute(\"大众seckill\公众,seckill); return \"大众detail\"大众; }
@PathVariable(“seckillId”) 要求参数绑定
method = RequestMethod.GET) 要求办法限定
return “redirect:/seckill/list”; return “redirect:/seckill/list”;要求转发和重定向
model.addAttribute(“seckill”,seckill);数据模型赋值
返回json通过produces = {“application/json;charset=UTF-8”}/ @ResponseBody表明
###三.整合springMVC框架 在webapp 的web-inf下的web.xml配置。 配置DisatchServlet:
<servlet> <servlet-name>seckill-dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/spring-.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>seckill-dispatcher</servlet-name> <!--默认匹配所有的要求--> <url-pattern>/</url-pattern> </servlet-mapping>
创建spring-web.xml配置SpringMvc,在代码中有详细的表明:
<?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:mvc=\公众http://www.springframework.org/schema/mvc\"大众 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/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd\"大众> <!--配置springMVC--> <!--1:开启springMVC表明模式--> <!--简化配置 (1)自动注册DefautAnnotationHandlerMapping,AnnotationMethodHandlerAdapter (2) 供应一系列:数据绑定,数字和日期的format @NumberFormat,@DataTimeFormat, xml,json默认读写支持 --> <mvc:annotation-driven/> <!--2:静态资源默认servlet配置 1:加入对静态资源的处理:js,gif,png 2:许可利用\公众/\公众做整体映射 --> <mvc:default-servlet-handler/> <!--3:配置jsp 显示viewResolver--> <bean class=\公众org.springframework.web.servlet.view.InternalResourceViewResolver\公众> <property name=\"大众viewClass\"大众 value=\"大众org.springframework.web.servlet.view.JstlView\"大众/> <property name=\公众prefix\"大众 value=\"大众/WEB-INF/jsp/\"大众/> <property name=\公众suffix\"大众 value=\公众.jsp\公众/> </bean> <!--4:扫描web干系的bean--> <context:component-scan base-package=\"大众org.forezp.web\"大众/></beans>
四.controller的实现
通过@Controller 表明将controller注入到spring ioc中
@RequestMapping url映射
model用来存放数据的。
例子:
@Controller@RequestMapping(\"大众/seckill\公众) //url:/模块/资源/{id}/细分 /seckill/listpublic class SeckillController { private final Logger logger= LoggerFactory.getLogger(this.getClass()); @Autowired private SeckillService seckillService; @RequestMapping(value=\公众/list\公众,method = RequestMethod.GET) public String list(Model model){ //获取列表页 List<Seckill> list=seckillService.getSerkillList(); model.addAttribute(\"大众list\公众,list); //list.jsp+model=ModelAndView return \"大众list\公众;///WEB-INF/jsp/\公众list\"大众.jsp } }
###五.view的实现
直接上代码:
<%@ taglib prefix=\"大众c\"大众 uri=\"大众http://java.sun.com/jsp/jstl/core\"大众 %>
<%@ taglib prefix=\"大众fmt\"大众 uri=\"大众http://java.sun.com/jsp/jstl/fmt\公众 %>
<%@ page contentType=\公众text/html;charset=UTF-8\"大众 language=\"大众java\"大众 %>
<!DOCTYPE html>
<html>
<head>
<title>秒杀列表页</title>
<%@include file=\"大众common/head.jsp\"大众 %>
</head>
<body>
<!--页面显示部分-->
<div class=\"大众container\"大众>
<div class=\公众panel panel-default\"大众>
<div class=\公众panel-heading text-center\公众>
<h2>秒杀列表</h2>
</div>
<div class=\"大众panel-body\"大众>
<table class=\"大众table table-hover\"大众>
<thead>
<tr>
<th>名称</th>
<th>库存</th>
<th>开始韶光</th>
<th>结束韶光</th>
<th>创建韶光</th>
<th>详情页</th>
</tr>
</thead>
<tbody>
<tr>
<c:forEach var=\"大众sk\"大众 items=\公众${list}\"大众>
<tr>
<td>${sk.name}</td>
<td>${sk.number}</td>
<td>
<fmt:formatDate value=\"大众${sk.startTime}\"大众 pattern=\"大众yyyy-MM-dd HH:mm:ss\公众/>
</td>
<td>
<fmt:formatDate value=\"大众${sk.endTime}\"大众 pattern=\"大众yyyy-MM-dd HH:mm:ss\"大众/>
</td>
<td>
<fmt:formatDate value=\公众${sk.createTime}\"大众 pattern=\"大众yyyy-MM-dd HH:mm:ss\"大众/>
</td>
<td>
<a class=\"大众btn btn-info\公众 href=\"大众/minnkill/seckill/${sk.seckillId}/detail\"大众 target=\公众_blank\"大众>link</a>
</td>
</tr>
</c:forEach>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</body>
<!-- jQuery文件。务必在bootstrap.min.js 之前引入 -->
<script src=\"大众http://apps.bdimg.com/libs/jquery/2.0.0/jquery.min.js\"大众></script>
<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src=\"大众http://apps.bdimg.com/libs/bootstrap/3.3.0/js/bootstrap.min.js\公众></script>
</html>
运行tomacat,http://localhost:8080/minnkill/seckill/list页面内容的展示:
通过url:http://localhost:8080/minnkill/seckill/list;做事端通过springmvc-mybatis框架从数据库拿到了数据并展示在页面上。
本系列文章到此结束,它属于我学习完秒杀api的课程的一个总结,由于个人水平和精力的有限,并不能做到面面俱到,也没有深入的的讲解SSM这个框架,再未来的三到四个月里,我会不断的学习,j2ee框架,servelet\jsp\mysql,以及html\css\js的知识,也算是一次小的冲刺,大家一起加油,一起进步。