亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

秒殺系統(tǒng)Web層設(shè)計(jì)的實(shí)現(xiàn)方法

2024-09-05 00:23:31
字體:
供稿:網(wǎng)友

秒殺系統(tǒng)Web層設(shè)計(jì)的實(shí)現(xiàn)方法

一、Restful接口設(shè)計(jì)

使用資源+名詞的方式來為url鏈接命名。例如:

訪問詳情頁的鏈接可以是: seckill/{seckillId}/detail

二、SpringMVC配置

1、首先要在web.xml中配置中央控制器。

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee           http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"  version="3.1" metadata-complete="true">  <!-- 修改servlet版本為3.1 -->  <!-- 配置中央控制器DispatcherServlet -->  <servlet>    <servlet-name>seckill-dispatcher</servlet-name>    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>    <!-- 配置springMVC需要加載的配置文件      spring-dao.xml,spring-service.xml,spring-web.xml      mybatis -> spring -> springMVC-->    <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>    <!-- 默認(rèn)匹配所有的請(qǐng)求 -->    <url-pattern>/</url-pattern>  </servlet-mapping></web-app>

2、為了讓Spring管理Controller層的bean,需要新建一個(gè)spring-web.xml配置文件,

<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:conext="http://www.springframework.org/schema/context"   xsi:schemaLocation="http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans-3.1.xsd   http://www.springframework.org/schema/mvc   http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd   http://www.springframework.org/schema/context   http://www.springframework.org/schema/context/spring-context-3.1.xsd">   <!--配置Spring MVC-->   <!--開啟SpringMVC注解模式-->   <!--簡(jiǎn)化配置   1、自動(dòng)注冊(cè)DefaultAnnotationHandlerMapping,AnnotationMethodHandlerAdapter   2、提供一系列功能:數(shù)據(jù)綁定,數(shù)字和日期的轉(zhuǎn)化@NumberFormat,@DataTimeFormat     xml,json默認(rèn)讀寫支持   -->   <mvc:annotation-driven/>   <!--servlet-mapping映射路徑-->   <!--靜態(tài)資源默認(rèn)servlet配置     1、加入對(duì)靜態(tài)資源的處理:js,css,img     2、允許使用/做整體映射   -->   <mvc:default-servlet-handler/>   <!--配置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>   <!--掃描web相關(guān)的bean-->   <conext:component-scan base-package="org.seckill.web"/></beans>

三、Controller層開發(fā)

項(xiàng)目中的每一個(gè)url都剛好對(duì)應(yīng)著Controller層的一個(gè)方法。我們有兩種返回值類型。一種是讓頁面跳轉(zhuǎn)到某個(gè)網(wǎng)頁,在model中帶上從service層中獲得的數(shù)據(jù)。在下例中,前端的detail.jsp就能夠以${seckill.name}取得放在model中的sekill實(shí)體的名字。

  /**   * 秒殺詳情頁   *    * @param seckillId   * @param model   * @return   */  @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 "forward:/seckill/list";    }    model.addAttribute("seckill", seckill);    return "detail";  }

另外一種是jsp頁面中點(diǎn)擊某個(gè)按鈕,通過ajax來刷新頁面的某部分,需要后端給前端一個(gè)json格式的數(shù)據(jù)。使用@ResponseBody告訴SpringMVC返回一個(gè)json類型的數(shù)據(jù)SeckillResult。由jsp頁面在JQeury的回調(diào)函數(shù)內(nèi)拿到該json數(shù)據(jù),并進(jìn)行對(duì)應(yīng)的操作。

@RequestMapping(value = "/{seckillId}/exposer",       method = RequestMethod.POST,       produces = {"application/json;charset=utf-8" })  @ResponseBody  public SeckillResult<Exposer> exposer(@PathVariable Long seckillId) {    SeckillResult<Exposer> result;    try {      Exposer exposer = seckillService.exportSeckillUrl(seckillId);      result = new SeckillResult<Exposer>(true, exposer);    } catch (Exception e) {      logger.error(e.getMessage(), e);      result = new SeckillResult<Exposer>(false, e.getMessage());    }    return result;  }

js代碼中回調(diào)函數(shù)的處理方式:

$.post(seckill.URL.exposer(seckillId),{},function(result){      //在回調(diào)函數(shù)中,執(zhí)行交互流程      if(result && result['success']){        var exposer = result['data'];        if(exposer['exposed']){          //開啟秒殺          //獲取秒殺地址          var md5 = exposer['md5'];                    //綁定一次點(diǎn)擊事件,防止連續(xù)點(diǎn)擊          var killUrl = seckill.URL.execution(seckillId,md5);          console.log("秒殺地址:"+killUrl);});         

四、請(qǐng)求方法的細(xì)節(jié)處理

1、請(qǐng)求參數(shù)的綁定

@RequestMapping(value = “/{seckillId}/exposer” public SeckillResult exposer(@PathVariable Long seckillId) 

2、請(qǐng)求方式的限制

@RequestMapping(method = RequestMethod.POST, 

3、請(qǐng)求轉(zhuǎn)發(fā)、請(qǐng)求重定向

return “redirect:/seckill/list”;(發(fā)送兩次請(qǐng)求,瀏覽器地址改變) return “forward:/seckill/list”;(發(fā)送一次請(qǐng)求,瀏覽器地址不變) 

4、數(shù)據(jù)模型賦值

model.addAttribute(“seckill”, seckill); 

5、返回json數(shù)據(jù)

@RequestMapping(value = “/{seckillId}/exposer”, method = RequestMethod.POST, produces = {“application/json;charset=utf-8” }) @ResponseBody 

6、cookies訪問

@RequestMapping(value = "/{seckillId}/{md5}/execution",      method = RequestMethod.POST,      produces = {"application/json;charset=UTF-8"})  @ResponseBody  public SeckillResult<SeckillExecution> execute(@PathVariable("seckillId") Long seckillId,                          @PathVariable("md5") String md5,                          @CookieValue(value = "killPhone", required = false) Long phone) {...}

@CookieValue(value = “killPhone”, required = false) Long phone)

(1)value(default “”):參數(shù)名例如: JSESSIONID

(2)required(default true):是否請(qǐng)求路頭中必須帶value指定的參數(shù)。如果沒有設(shè)置cookies我們這個(gè)業(yè)務(wù)也要能夠訪問并讓用戶填寫相應(yīng)信息,所以設(shè)為false即可。

五、其他

其實(shí)課程的這一部分在前端js交互中有很多值得學(xué)習(xí)的地方,比如JQuery的使用,js模塊化開發(fā),js交互設(shè)計(jì)等內(nèi)容。因?yàn)闀r(shí)間關(guān)系以及復(fù)習(xí)側(cè)重點(diǎn)不在js部分的原因,我就暫時(shí)不去做總結(jié)。

如有疑問請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JSP教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
免费高清视频精品| 天天草天天爽| 色综合色综合网色综合| 免费观看h电影在线观看| 亚洲国产激情av| 国产一区二区三区四区hd| 国产精品一线| 国产乱码精品一区二区三区不卡| 国产成人夜色高潮福利影视| 国产亚洲永久域名| 亚洲无中文字幕| 1区2区3区在线视频| 日韩成人午夜影院| 成人免费性视频| 中文字幕欧美日韩一区二区| 久久精品国产久精国产一老狼| 国产嫩bbwbbw高潮| 成人午夜电影在线播放| 卡通动漫精品一区二区三区| 国产成人精品福利一区二区三区| 99久9在线视频| 加勒比在线一区二区三区观看| 99久在线精品99re8热| 伊人免费在线观看| 日韩美女免费线视频| 国产美女精品久久久| 日韩久久一级片| 欧美一级特黄高清视频| 18啪啪污污免费网站| 中文字幕一二三区| 国外成人性视频| 欧美成人免费在线观看| 久香视频在线观看| 亚洲视频在线观看视频| 国产精品久久网站| 中文字幕欧美人与畜| www.xxx.国产| 国产精品呻吟| 欧美制服第一页| 国产日韩欧美精品电影三级在线| 亚洲 欧美 自拍偷拍| 伊人久久大香线蕉| 动漫3d精品一区二区三区| 亚洲精品国产片| 国产黄视频在线| 久久精品国产清高在天天线| 麻豆精品国产传媒| 91看片在线| 97超级碰碰碰| 麻豆国产入口在线观看免费| www.88av| 欧美在线视频免费观看| 夜色77av精品影院| 美女网站色91| 99久re热视频这里只有精品6| 国产精品成人观看视频免费| 欧美精品激情blacked18| 丰满饥渴老女人hd| 精品视频一区二区在线观看| 国产在线视频福利| 久久大大胆人体| 91视频88av| 操欧美老女人| 国产清纯美女被跳蛋高潮一区二区久久w| 亚洲精品久久久蜜桃| 精品久久久久久久久久久久久| 午夜激情视频在线| av日韩一区| 激情av中文字幕| 国产福利在线| 国产大片中文字幕| 日本免费一区二区三区视频| 国产精品国产精品国产专区不卡| 91成人福利社区| 黑人久久a级毛片免费观看| 狠狠躁天天躁日日躁欧美| 日韩av大片在线观看| 日韩免费电影网站| 欧美三级理论片| 亚洲欧美中日韩| 亚洲欧洲在线观看av| 伊人久久久久久久久久久久| 欧美激情成人网| 精品视频在线播放| 日韩中文一区二区| 激情av网站| 午夜精产品一区二区在线观看的| 宅男噜噜噜66一区二区66| 国产一区二区三区丝袜| 日韩一区二区中文字幕| 午夜影院免费播放| 天天操夜夜操国产精品| 国产黄色三级网站| 亚洲精品成人久久| 国产精品7m视频| 日本不良网站在线观看| 久久久成人av毛片免费观看| 亚洲免费视频中文字幕| 99超碰在线观看| mm131午夜| 2021久久精品国产99国产精品| 91九色在线porn| 啊啊啊国产视频| 伊人精品在线视频| 婷婷中文字幕一区| 日韩高清不卡一区二区三区| 亚洲福利网站| 欧美人与动xxxxz0oz| av首页在线观看| 久久精品人妻一区二区三区| 天天干 天天插| 亚洲精品7777| 第一页在线观看| 善良的小姨在线| 欧美gv在线| 欧美日韩系列| 一区二区三区中文在线观看| 欧美亚洲视频在线看网址| 国产精品久久免费看| xfplay精品久久| 亚洲精品网站在线| 欧美xxxxbbbb在线播放| 国产精品久久久精品四季影院| 亚洲免费在线看| 国产精品第一国产精品| 亚洲欧洲日本精品| 97公开免费视频| 少妇与大狼拘作爱性a| 国产麻豆综合视频在线观看| 一区二区三区四区毛片| 成人激情视频| 天堂…中文在线最新版在线| 91精品电影| 国产欧美精品日韩精品| 亚洲一区二区三区精品在线观看| 午夜欧美在线| 亚洲精品久久7777777| 国产男女av| 福利视频理论电影| 日韩欧美一区二区不卡| 亚洲精品乱码久久久久久久久| 末成年女av片一区二区下载| 欧美另类激情| 欧美成人精品3d动漫h| 久久亚洲国产成人精品性色| 亚洲精品成人在线播放| 欧美精品免费播放| 中文字幕日韩精品有码视频| 精品一级少妇久久久久久久| 国产一区二区三区四区五区| 亚洲一区二区三区香蕉| 日本黄色片一级片| 久久91亚洲| 亚洲欧美中文字幕在线观看| 国产大片aaa| 欧美猛烈性xbxbxbxb| 乳奴隷乳フ辱| 日韩一级精品视频在线观看| 国产精品白丝久久av网站| www.4hu95.com四虎| 麻豆精品视频在线观看免费| 亚洲综合成人婷婷小说| 五月天婷婷网站| eeuss影院www在线播放| 庆余年2免费日韩剧观看大牛| 香蕉视频色版| eeuss草民免费| 国产亚洲精品久久久久动| 搞黄网站免费观看| 免费看欧美女人艹b| 亚洲国产婷婷香蕉久久久久久| 国产精品国产福利国产秒拍| 欧美日韩在线播放视频| 国产曰肥老太婆无遮挡| 九九综合在线| 国产美女无遮挡网站| 亚洲图片在区色| 日本国产精品| 在线观看不卡视频| 99久久精品免费看国产交换| 日日橹狠狠爱欧美超碰| 国产v亚洲v天堂无码| 亚洲国产精品综合| 成人在线免费高清视频| 欧美日韩国产美| 92国产在线视频| 中文字幕国产精品一区二区| 亚洲精品国产第一综合99久久| 野外性xxxxfreexxxxx欧美| 国产精品影视网| 久久久久久国产精品mv| 国内精品久久久| 在线日韩中文字幕| 亚洲熟妇无码av| 高清亚洲成在人网站天堂| 色婷婷av一区二区三区软件| 麻豆精品传媒视频观看| 精品国产凹凸成av人网站| 大片网站久久| xxxxaaa欧美另类| 国产精品久久久久久久小唯西川| 久久综合久久综合久久综合| 丝袜人妻一区二区三区| 久久久久无码国产精品| 97精品久久久久中文字幕| 亚洲第一色视频| 国产精品国产三级国产普通话99| 午夜精品久久久久久久99热影院| 国产露出视频在线观看| www·91·com| 日本一区二区不卡在线| 欧美大片在线免费观看| 日韩视频精品在线观看| 丝袜综合欧美| 二区三区不卡不卡视频| 亚洲精品在线不卡| 国产无套精品一区二区三区| 激情网站在线| 欧美精品一二区| 大肉大捧一进一出好爽| 狠狠久久亚洲欧美专区| 亚洲成av人片观看| 日韩一区欧美二区| 三年片大全在线观看大全有哪些| 日韩在线播放中文字幕| 九九九精品视频| 国产主播在线观看| 中文字幕av一区二区三区人| 麻豆久久一区| 亚洲v国产v在线观看| 国产区一区二区三| 国产精品一区在线播放| 国产精品日韩欧美综合| 人人澡人人爽人人揉| 欧美在线日韩| 在线观看欧美成人| 色婷婷.com| 色噜噜狠狠色综合网图区| 男女羞羞在线观看| 日韩色性视频| 99精品视频在线播放免费| 精品人妻少妇一区二区| 日韩一区二区在线观看视频播放| 97av在线播放| 国产成人综合久久| 久久久久国产精品无码免费看| 久久成年人网站| 成年网站免费| 精品香蕉在线观看视频一| 国产suv精品一区二区四区视频| 久久精品男人天堂| 免费久久一级欧美特大黄| 亚洲激情一区二区| 日韩欧美在线中文字幕| 翔田千里亚洲一二三区| 久久中文字幕一区| 成人精品一区| 久久免费国产视频| 久热精品在线播放| 欧美艹逼视频| 国产精品亚洲自拍| 国产精品欧美久久| 99精品久久99久久久久| 97se亚洲国产综合在线| 国产精品极品尤物在线观看| 日本精品入口免费视频| 日韩欧美三级视频| 在线视频观看国产| 爱福利在线视频| 国产91色在线|亚洲| 中文字幕高清20页| 久青草国产97香蕉在线视频| 色帝国亚洲欧美在线| 亚洲最大成人网站| 久久精品国产99| 澳门黄色一级片| 日韩欧美三级一区二区| 日本成年人网址| 美女精品一区| 黄色一区二区视频| www污网站在线观看| 在线观看久久av| www久久久com| 天堂av最新在线| 在线日韩国产精品| 日日日日影院| 国产精品无码一区二区三区| 国产毛片欧美毛片久久久| 国产在线一区二区三区欧美| 欧美日韩视频网站| 男人操女人免费软件| 人人妻人人澡人人爽人人精品| 日本福利片高清在线观看| 欧美日韩国产成人在线| 国产日韩欧美精品综合| 粉嫩av一区二区| 久久99精品久久久久久水蜜桃| 亚洲福利视频一区二区| 99热在线只有精品| 波多野结衣一本一道| 欧美日韩国产网站| 亚洲一区二区三区午夜| 国产高潮失禁喷水爽到抽搐| 少妇高潮大叫好爽喷水| 日韩 欧美 综合| 在线观看欧美| 精品久久五月天| 黄色免费网站在线观看| 美女av免费在线观看| 色婷婷国产精品综合在线观看| av在线电影网| 久久r这里只有精品| 国产麻豆91视频| 日韩欧美国产精品| 99精品老司机免费视频| 6080yy午夜一二三区久久| 91禁国产网站| 色偷偷888欧美精品久久久| 丰满放荡岳乱妇91ww| 亚洲人成电影在在线观看网色| 六月婷婷综合网| 夜夜爽av福利精品导航| 欧美午夜精品电影| 视频一区视频二区中文| 亚洲一卡二卡三卡| 91性高湖久久久久久久久_久久99| 日本久久久久久久| 久久九九影视网|