###一.SpringMVC理论

它始终是围绕 handler、

数据模型 model、

页面view进行开发的。

运行流程图:

通过mvc配置文件,配置“中央处理器”dispatchservlet,当用户请求一个url,dispatchservlet通过handlerMapping(通过注解的形式)将url给对应的handleradapter,handleradapter的具体业务逻辑是controller即我们需要实现的部分,实现具体的业务逻辑之后,需要返回modelandview给dispatchservlet,dispatchservlet再返回具体的数据或者jsp给用户。

二.http请求地址映射

http请求 -> sringmvc handler mapping注解 -> handler处理

1.注解映射:

@RequestMapping

  • 支持标准url
  • ant风格url (? * 字符形式)
  • {xxx}占位符 restful 形式

2.请求方法细节

  • 请求参数绑定
  • 请求方式限制
  • 请求转发和重定向
  • 数据模型赋值
  • 返回joson数据

举个列子:


  1. @RequestMapping(value="/{seckillId}/detail",method = RequestMethod.GET)
  2. public String detail(@PathVariable("seckillId") Long seckillId, Model model){
  3. if(seckillId==null){
  4. return "redirect:/seckill/list";
  5. }
  6. Seckill seckill=seckillService.getById(seckillId);
  7. if(seckill==null){
  8. return "redirect:/seckill/list";
  9. }
  10. model.addAttribute("seckill",seckill);
  11. return "detail";
  12. }

@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:

  1. <servlet>
  2. <servlet-name>seckill-dispatcher</servlet-name>
  3. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  4. <init-param>
  5. <param-name>contextConfigLocation</param-name>
  6. <param-value>classpath:spring/spring-*.xml</param-value>
  7. </init-param>
  8. </servlet>
  9. <servlet-mapping>
  10. <servlet-name>seckill-dispatcher</servlet-name>
  11. <!--默认匹配所有的请求-->
  12. <url-pattern>/</url-pattern>
  13. </servlet-mapping>

创建spring-web.xml配置SpringMvc,在代码中有详细的注解:


  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. 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"
  7. >
  8. <!--配置springMVC-->
  9. <!--1:开启springMVC注解模式-->
  10. <!--简化配置
  11. (1)自动注册DefautAnnotationHandlerMapping,AnnotationMethodHandlerAdapter
  12. (2) 提供一系列:数据绑定,数字和日期的format @NumberFormat,@DataTimeFormat,
  13. xml,json默认读写支持
  14. -->
  15. <mvc:annotation-driven/>
  16. <!--2:静态资源默认servlet配置
  17. 1:加入对静态资源的处理:js,gif,png
  18. 2:允许使用"/"做整体映射
  19. -->
  20. <mvc:default-servlet-handler/>
  21. <!--3:配置jsp 显示viewResolver-->
  22. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  23. <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
  24. <property name="prefix" value="/WEB-INF/jsp/"/>
  25. <property name="suffix" value=".jsp"/>
  26. </bean>
  27. <!--4:扫描web相关的bean-->
  28. <context:component-scan base-package="org.forezp.web"/>
  29. </beans>

四.controller的实现

通过@Controller 注解将controller注入到spring ioc中

@RequestMapping url映射

model用来存放数据的。

例子:

  1. @Controller
  2. @RequestMapping("/seckill") //url:/模块/资源/{id}/细分 /seckill/list
  3. public class SeckillController {
  4. private final Logger logger= LoggerFactory.getLogger(this.getClass());
  5. @Autowired
  6. private SeckillService seckillService;
  7. @RequestMapping(value="/list",method = RequestMethod.GET)
  8. public String list(Model model){
  9. //获取列表页
  10. List<Seckill> list=seckillService.getSerkillList();
  11. model.addAttribute("list",list);
  12. //list.jsp+model=ModelAndView
  13. return "list";///WEB-INF/jsp/"list".jsp
  14. }
  15. }

###五.view的实现

直接上代码:

  1. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  2. <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
  3. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <title>秒杀列表页</title>
  8. <%@include file="common/head.jsp" %>
  9. </head>
  10. <body>
  11. <!--页面显示部分-->
  12. <div class="container">
  13. <div class="panel panel-default">
  14. <div class="panel-heading text-center">
  15. <h2>秒杀列表</h2>
  16. </div>
  17. <div class="panel-body">
  18. <table class="table table-hover">
  19. <thead>
  20. <tr>
  21. <th>名称</th>
  22. <th>库存</th>
  23. <th>开始时间</th>
  24. <th>结束时间</th>
  25. <th>创建时间</th>
  26. <th>详情页</th>
  27. </tr>
  28. </thead>
  29. <tbody>
  30. <tr>
  31. <c:forEach var="sk" items="${list}">
  32. <tr>
  33. <td>${sk.name}</td>
  34. <td>${sk.number}</td>
  35. <td>
  36. <fmt:formatDate value="${sk.startTime}" pattern="yyyy-MM-dd HH:mm:ss"/>
  37. </td>
  38. <td>
  39. <fmt:formatDate value="${sk.endTime}" pattern="yyyy-MM-dd HH:mm:ss"/>
  40. </td>
  41. <td>
  42. <fmt:formatDate value="${sk.createTime}" pattern="yyyy-MM-dd HH:mm:ss"/>
  43. </td>
  44. <td>
  45. <a class="btn btn-info" href="/minnkill/seckill/${sk.seckillId}/detail" target="_blank">link</a>
  46. </td>
  47. </tr>
  48. </c:forEach>
  49. </tr>
  50. </tbody>
  51. </table>
  52. </div>
  53. </div>
  54. </div>
  55. </body>
  56. <!-- jQuery文件。务必在bootstrap.min.js 之前引入 -->
  57. <script src="http://apps.bdimg.com/libs/jquery/2.0.0/jquery.min.js"></script>
  58. <!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
  59. <script src="http://apps.bdimg.com/libs/bootstrap/3.3.0/js/bootstrap.min.js"></script>
  60. </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的知识,也算是一次小的冲刺,大家一起加油,一起进步。

源码下载




扫码关注公众号有惊喜

(转载本站文章请注明作者和出处 方志朋的博客

一篇SSM框架整合友好的文章(三)的更多相关文章

  1. 一篇SSM框架整合友好的文章(一)

    转载请标明出处: http://blog.csdn.net/forezp/article/details/53730333 本文出自方志朋的博客 最近实在太忙,之前写的<rxjava系列文章&g ...

  2. 一篇SSM框架整合友好的文章(二)

    上一篇讲述了DAO 层,mybatis实现数据库的连接,DAO层接口设计,以及mybtis和spring的整合.DAO层采用接口设计方式实现,接口和SQL实现的分离,方便维护.DAO层所负责的仅仅是接 ...

  3. 接入上一篇SSM框架整合示例

    需要创建相应的包与文件夹 Book数据表作为本示例数据 搭建项目开始 首先有bean后 private int id; private String name; private int cnt; 第一 ...

  4. SSM框架整合练习——一个简单的文章管理系统

    使用SSM框架搭建的简易文章管理系统,实现了简单的增删改查功能. @ 目录 开发工具版本: 最终的项目结构 IDEA+Maven搭建项目骨架 1. 新建Maven项目: 2. 在新建的项目中添加所需要 ...

  5. SpringMVC--从理解SpringMVC执行流程到SSM框架整合

    前言 SpringMVC框架是SSM框架中继Spring另一个重要的框架,那么什么是SpringMVC,如何用SpringMVC来整合SSM框架呢?下面让我们详细的了解一下. 注:在学习SpringM ...

  6. SSM框架整合环境构建——基于Spring4和Mybatis3

    目录 环境 配置说明 所需jar包 配置db.properties 配置log4j.properties 配置spring.xml 配置mybatis-spring.xml 配置springmvc.x ...

  7. springmvc(二) ssm框架整合的各种配置

    ssm:springmvc.spring.mybatis这三个框架的整合,有耐心一步步走. --WH 一.SSM框架整合 1.1.整合思路 从底层整合起,也就是先整合mybatis与spring,然后 ...

  8. ssm框架整合-过程总结(第二次周总结)

    距离上次写博客已经有4.5天的时间了. 这次写博客目的是总结一下项目开始到现在,过程中遇到的问题.和学到的知识.经验. 初略总结下自己从中学到的: Spring :在学习中被反复强调的Ioc(反转控制 ...

  9. SSM框架整合项目 :租房管理系统

    使用ssm框架整合,oracle数据库 框架: Spring SpringMVC MyBatis 导包: 1, spring 2, MyBatis 3, mybatis-spring 4, fastj ...

随机推荐

  1. DexClassLoader和PathClassLoader

    Android的ClassLoader体系 在Android中可以跟java一样实现动态加载jar,但是Android使用Dalvik VM,不能直接加载java打包jar的byte code,需要通 ...

  2. Indexing the World Wide Web: the Journey So Far阅读笔记

    文献文档用google搜索标题即可. term预处理:用空格切分,去除标点,去除撇号,归一化小写,去除变音符号,词干还原(?),去除停用词,挖掘词组. 索引选型工程最佳实践:term粒度.按doc分块 ...

  3. Monkey King(左偏树 可并堆)

    我们知道如果要我们给一个序列排序,按照某种大小顺序关系,我们很容易想到优先队列,的确很方便,但是优先队列也有解决不了的问题,当题目要求你把两个优先队列合并的时候,这就实现不了了 优先队列只有插入 删除 ...

  4. E. Swapping Characters 一个喳喳的做法

    http://codeforces.com/contest/903/problem/E 题意是,对于每个字符串都要交换两个位置的字符(id),使得结果所有字符串是一样的,输出那个字符串. 正解是,先比 ...

  5. 性能测试工具Jmeter10-Jmeter集合点与关联

    集合点 操作步骤: 注意:集合点要放在需要集合的元件前面 关联 正则表达式提取器 配置说明 引用名称:下一个请求要引用的参数名称,如token,则可用${token}引用它 正则表达式: () 括起来 ...

  6. [转]Using the HTML5 and jQuery UI Datepicker Popup Calendar with ASP.NET MVC - Part 4

    本文转自:http://www.asp.net/mvc/overview/older-versions/using-the-html5-and-jquery-ui-datepicker-popup-c ...

  7. redis开机启动,有密码

    #!/bin/sh # chkconfig: # description: Start and Stop redis REDISPORT= EXEC=/usr/local/redis/src/redi ...

  8. ZK典型应用场景

    1. 数据发布/订阅--动态获取数据 2.Master选举 a). 利用Zk会保证无法重复创建一个已经存在的节点 b). 多个客户端同时创建,创建成功的即是master,并监控master节点,一旦m ...

  9. 多ComboBox实现复杂查询

    关键是,你是要实现什么功能:是四个条件都有内容时查询,还是哪个内容有查哪个? 如果四个组合框都有内容,相对简单些: string s = "select * from 表名 where 身份 ...

  10. Maven常用插件整理

    maven内置变量 ${basedir}表示项目根目录,即包含pom.xml文件的目录; ${version}表示项目版本; ${project.basedir}同${basedir}; ${proj ...